Jump to content

Mike Le

Members
  • Posts

    180
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by Mike Le

  1. I've installed Parallels on my Mac Retina and the default resolution settings make LabVIEW incredibly difficult to use. SubVI icons are tiny and fonts are tough to read. Does anyone with a similar setup have any suggestions on what settings to use? Thanks guys.
  2. Thanks for the feedback, guys! In terms of actually meeting a [Covers] tag, did you use mostly commenting or did you also have a lot of code in place? I was leaning heavily into documentation, with the absolute bare minimum of code: almost no primitives other than unbundle/bundle, case structures, calls to my own subVI stubs, little else. Is that enough?
  3. Hey, me again. Sorry for so many annoying questions about the CLA. I did my third run-through of the ATM Practice. In 3hr10min, I managed to hit just over 70% of the requirement tags. (I subtracted 50 minutes because I assume I'll lose that much time getting used to the new problem.) I'm wondering: is this close to enough? For those who passed, about what fraction of the requirement tags did you have down, with at least a comment for documentation? I'm worried that near-100% is expected. Thanks guys.
  4. Signed up. Stupid question: will we need to bring physical tickets with us? Is a name and ID sufficient, or a smartphone displaying the tickets?
  5. Yeah, you're right. I really need to be studying "to the test." I'll take another go at it with a non-OOP solution this week. There's only one practice CLA exam from NI, the ATM. They included one solution, which used a functional global "intermediary" layer. I was also really surprised at the level of implementation detail with the error logger! It got me very worried in terms of what kind of functional code I actually need to implement. I've been looking around for other practice solutions to the ATM, but so far only found one other, by FraggerFox at the NI Forums. Did you happen to save your practice ATM solution? If so, would you be willing to share it? It'd be really helpful for me to see a solution by someone who actually achieved the Architect level.
  6. Thanks for the link, I've scoured the forums and have read it before. Very helpful! I took my first tries with Actor Framework because it's what I reach for in terms of asynchronous processes talking to each other. I'm worried I might be even slower if I try to wrap my head around a task-oriented solution, like the NI sample. I guess I should at least try running through the practice sample once with something like the functional global layer they used, though I really hated that design...
  7. Todd, Thanks for looking at the code. I hadn't implemented a good way to stop the ES. In practical terms, it would shut down in 10 seconds with no user input. But that's a bad way to do it. I would normally have used a custom event, as you suggest, and registered it. I was amazingly time-crunched, though, and more focused on trying to cover as many requirements as possible. If I were to fix that by documenting it in the code, I would either: (1) describe the custom event stop method or (2) had a subVI that decides whether an input error was "severe," in which case it would stop the loop and pass a message to the actor core. Error handling is an important part of the exam, so I'll try to allot more time to that next time I take the practice. As it is, I'm still getting overwhelmed by all the other myriad requirements.
  8. Hi all, This is my SECOND attempt at the CLA practice exam. Because it was my second attempt, I reduced my time to 3:10 instead of the full 4:00. I figure I'll lose ~45 minutes on the real exam getting acclimated to the problem. I'm pretty comfortable using Actor Framework for my professional work, so I tried to apply it here. Unfortunately, I think I'm going to need to switch gears... the result feels nowhere near complete. The time crunch is much worse compared to when I did the CLD. Overall, looking for thoughts on my organizational structure, general recommendations on what I might get dinged for on what IS done, and of course opinions on how far from a "pass" this solution is. I definitely don't consider this a passing solution, but some thoughts on what I should work on would be helpful. It's in LabVIEW 2012, where Actor Framework is native. If you would like to look at it in a different version of LabVIEW, let me know and I'll try to back-convert. Thanks. Mike ATM Practice MQL2 (LabVIEW 2012).zip
  9. Yes, I did see FraggerFox's "Actor" solution. It's interesting because it doesn't use the built-in Actor framework, presumably because the test was prepared for in 2011 rather than 2012.
  10. I'm studying for the CLA and would like to look at the solutions others have come up with for the practice CLA exam. I found it really helpful to go through the boards and look at others' solutions for the CLD samples. Especially if you've already passed the CLA and have your practice solution handy, I'd really appreciate it if you could share it here. I imagine it would be a helpful resource for others studying for the CLA as well. Thanks all, Mike
  11. Hey Alex, You're asking a lot of very specific questions that, to me, boil down to stylistic choices. I think the question underlying the specifics is: how much should you try to program the "right in the REAL WORLD" way versus "right for the TEST" way? My response would be: code in the way that lets you complete all the requirements cleanly, within the time limit. The number one problem experienced LabVIEW programmers have with the CLD is the time limit. I know a ton of super experienced folks who failed the exam because they did not adjust their individual styles to match the time limit requirements of the test. If you can complete the examples with a clean application using your typical programming style, and make it as extensible as you would like to in the real world: great! Do that for the exam. If you tackle the practice exams with your usual mindset and coding style, and end up running short on time... then you might need to start sacrificing the "real world" extensibility and priorities in favor of coding to what the test is asking for. As you note, the example solutions are incredibly straightforward and simple. They're definitely something that an experienced coder should be able to crank out in 4 hours. They would probably also present problems in terms of long-term maintainability in the event someone wanted to make modifications or additions in the future. But they're presented as example solutions for a very important reasons: they are actual exam submissions that PASSED. Do all the practice exams, ESPECIALLY the more recent examples of the Car Wash, Boiler, and ATM. The Traffic Light and Sprinkler examples are older and aren't reflective of the current 4-hour exams. Try coding them using different design patterns. TIME YOURSELF. Make sure at the 4-hour mark you've cleared the broken run arrow and left notes for any unfinished code. Sorry I didn't directly answer your specific queries, but I hope this was at least a little helpful anyway.
  12. What's really going to trip you out is when you discover I'm actually part of the LogMeIn viral marketing team.
  13. I threw this together; it's not a perfect solution, but maybe it'll give you some ideas. Resizing Subpanel.vi
  14. Thanks for all the great feedback so far, guys! I'll definitely look into the Hamachi, VNC, PCAnywhere, and USB Over Network tools. @ShaunR, this might sound horrible but I actually don't have a smartphone and have never done data tethering. Definitely sounds like something I should figure out before I leave, though. @mje, I do imagine coding in the LabVIEW IDE to be nightmarish over remote. As you suggest, I plan on coding on my local machine and syncing the results to the source control server. That's a very clever idea about adding a suite of debug tools into deployments, so before I even have to touch the code again I can ask for feedback from the endusers. Fortunately, there's another very competent LabVIEW programmer who is local and working on the same projects. I'm hoping to be able to transfer most of the hardware communication aspects over to him - so that'll be a "blackbox" to me that my code will trust works. Though even the best laid plans never survive contact with the enemy.
  15. Hey folks, I'm going to be taking a year to travel around the world. During this time, I'll be doing LabVIEW on the road for my employer. I have a VPN and access to our source control (thank goodness). However, I've never done remote work before. I think there'll be some challenges in terms of communicating with hardware that's on-site. I'm also concerned about passing questions between myself and the local programmers. For those of you who program remotely, especially in LabVIEW/G, do you have any tips? Suggestions? Pitfalls to avoid? Best practices to maintain? Utilities or apps that have come in handy? Thanks.
  16. Thanks for the info. What puzzles me is that the color I chose was what I thought of as a default system color, "LED Off" green. I haven't messed with the default colors in my LabVIEW environment so I figured that color (RGB: 30/75/0) would be fine with the icon editor. Anyway, I ended up tweaking to a slightly different green and everything's fine now. Just a bizarre problem I'd never run into before.
  17. So this is a new one for me, hopefully someone else has seen this problem? I'm editing the VI Icon Template for one of my classes. It's simple with a colored header and text. I set the header to dark green in the editor and everything looks great. When I close out of the editor, the actual icon color becomes brownish green. If I apply the template to all my methods, then my method icons also show brownish green. I verified it's actually a different color using the Dropper tool. But when I go back to look at it in the class's Icon Template editor, it's still dark green. Anyone seen anything like this? Screenshot below.
  18. In the parent Update.vi method, are the input/output terminals of the class set to Dynamic Dispatch?
  19. I created a parent Actor with a set of Messages that I wanted to restrict to self-enqueuing only; I don't want the caller or any other actor to be able to request those methods. To accomplish this, I set those Messages to private scope inside the Actor LVLIB. I'm now creating a child Actor which overrides some of the functionality of the parent. However, I'd like for the child Actor to be able to have access to the self-enqueuing messages of the LVLIB. I still don't want the caller or any other actor to be able to request those methods. Essentially, I want these messages to have the equivalent of "protected" scope. Since I can't actually set them to "protected," I'm considering the following options. [*]Make the Messages public. Enforce encapsulation by "remembering" that the caller should never enqueue any of these messages. [*]Set the Messages to community. Add the necessary friend relationships between Actors to allow the child Actor access. Don't really like using community scope in general because it feels hard to maintain. [*]Put the child Actor class into the same LVLIB as the parent, so that they share access to the private messages. Show organization using virtual folders (one called "Messages for Parent" and the other "Messages for Child X" or similar). Concerned this could complicate things in ways I don't anticipate. For example, what if I want to create self-enqueued messages that are only available to the child Actor? Are these now automatically available to the parent? Are any of these the right solution? What have others done in the past and is there an established best practice? Thanks. EDIT: I see this question has ]been answered here. It seems like a lot of overhead to create a protected message but I guess it's also the cleanest way to go.
  20. I apologize if this is a basic question. I've been using XControls for several months and have slowly learned how they work largely via (1) random forum searches and (2) trial and error. Thus, my knowledge/understanding of XControls is fairly patchwork. The LabVIEW help and examples were illuminating in getting started, but lacking in a lot of concrete details. I've mostly gotten by via changing as little as possible from the examples. When I've had to make big changes, I cross my fingers and hope it's not a problem. When it is, I'm in for lengthy debugging sessions trying to understand when Facade events are triggered, when I need to set the Data Change and Display Change boolean flags, etc. Is there a document or perhaps a more involved XControl example that could clarify proper coding guidelines/style for XControls, as well as when to use different Facade events? Thanks.
  21. Shot in the dark, but perhaps this breakdown of how LabVIEW stores datatypes will lead you somewhere? http://zone.ni.com/reference/en-XX/help/371361G-01/lvconcepts/how_labview_stores_data_in_memory/
  22. Glad to hear your problem's solved, klessm1. The "delete trick" was pretty irritating; I filed a CAR with NI back in November 2012. Hopefully it gets resolved in a future release and other developers can be saved the grief.
  23. I've run into a similar problem and this fixed it for me. The trick was that I couldn't just right-click on the preexisting XControl strict reference and convert it to a regular control ref. I had to DELETE the old strict reference and create a brand new regular control reference. Then in my accessors, I used "to more specific class." The reason I had to actually delete the old strict reference was that, for some reason, I was never able to successfully convert the preexisting XControl ref to a generic ref. It would LOOK like a generic ref when I opened the private data ctl file, but it would often BEHAVE as though it were a strict reference to the XControl. Completely deleting the old reference and replacing it with a brand new one worked for me. Not sure if you already did that, but if not, it's worth trying.
  24. Thanks for the background info, Jim. Yes, this is exactly what I'll be doing. Thanks.
  25. Perhaps my definition of "exists" is subtly different than the typical OpenG developer/user, but I had the expectation that an empty path input would return false. I find that in most situations where I want to check if a path exists, I'm about to perform a file operation that also requires that path to be non-empty. I don't think I'd ever use the "File Exists" primitive without also calling the "Empty Path/String?" primitive.
×
×
  • Create New...

Important Information

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