Snippet: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
{{TOCright}}<br> | {{TOCright}}<br> | ||
A snippet is in the [[LabVIEW|LabVIEW]] context an image of LabVIEW code.<br> | A snippet is in the [[LabVIEW|LabVIEW]] context an image of LabVIEW code.<br> | ||
[http://zone.ni.com/devzone/cda/tut/p/id/9330 LabVIEW 2009 introduced] the embedding of the actual code inside a [http://en.wikipedia.org/wiki/Portable_Network_Graphics PNG] image.<br> | [http://zone.ni.com/devzone/cda/tut/p/id/9330 LabVIEW 2009 introduced] the embedding of the actual code inside a [http://en.wikipedia.org/wiki/Portable_Network_Graphics PNG] image.<br> | ||
With this functionality it is possible to expose your code on a website, and with the same file import the code into a LabVIEW [[VI|VI]].<br> | With this functionality it is possible to expose your code on a website, and with the same file import the code into a LabVIEW [[VI|VI]].<br> | ||
| Line 9: | Line 9: | ||
= Creation<br> = | = Creation<br> = | ||
LabVIEW 2009 has native support to create a snippet.<br> | LabVIEW 2009 has native support to create a snippet.<br> | ||
With the [[Code Capture Tool|Code Capture Tool]] version 2.0 it's possible to create a snippet in any LabVIEW version from 7.0 and up.<br> | With the [[Code Capture Tool|Code Capture Tool]] version 2.0 it's possible to create a snippet in any LabVIEW version from 7.0 and up.<br> | ||
= Importing<br> = | = Importing<br> = | ||
| Line 17: | Line 17: | ||
== LabVIEW 2009<br> == | == LabVIEW 2009<br> == | ||
To import the actual code into a VI, just drag and drop the image onto the block diagram of a VI. With [http://www.microsoft.com/Windows/internet-explorer/ Internet Explorer] it's possible to drag and drop the image for a web-page into a VI directly.<br> | To import the actual code into a VI, just drag and drop the image onto the block diagram of a VI. With [http://www.microsoft.com/Windows/internet-explorer/ Internet Explorer] it's possible to drag and drop the image for a web-page into a VI directly.<br> | ||
For [http://www.mozilla.com/firefox/ Firefox] and [http://www.google.com/chrome Google Chrome] it's necessary to drop the image in an OS folder or use a plugin [http://addons.mozilla.org/firefox/addon/1419 IETab] (for Firefox).<br> | For [http://www.mozilla.com/firefox/ Firefox] and [http://www.google.com/chrome Google Chrome] it's necessary to drop the image in an OS folder or use a plugin [http://addons.mozilla.org/firefox/addon/1419 IETab] (for Firefox).<br> | ||
== LabVIEW 8.2, 8.5 and 8.6<br> == | == LabVIEW 8.2, 8.5 and 8.6<br> == | ||
To import a snippet into LabVIEW 8.2 it's possible if the snippet is created with the [[Code Capture Tool|Code Capture Tool]] in the same (or an older) version of LabVIEW. Second you need a special tool developed by [http://lavag.org/user/7534-jcarmody/ JCarmody]. This tool is available for [http://lavag.org/index.php?app=downloads&showfile=118 download] in the LAVA Uncertified Code Repository.<br> | To import a snippet into LabVIEW 8.2 it's possible if the snippet is created with the [[Code Capture Tool|Code Capture Tool]] in the same (or an older) version of LabVIEW. Second you need a special tool developed by [http://lavag.org/user/7534-jcarmody/ JCarmody]. This tool is available for [http://lavag.org/index.php?app=downloads&showfile=118 download] in the LAVA Uncertified Code Repository.<br> | ||
= Technique<br> = | = Technique<br> = | ||
The code of a LabVIEW snippet is stored inside a [http://en.wikipedia.org/wiki/Portable_Network_Graphics#.22Chunks.22_within_the_file PNG Chunk] named 'niVI'. The capitalization of this chunkname makes sure the code is removed if someone alters the image, thus preventing the creation of malicious snippets.<br> | The code of a LabVIEW snippet is stored inside a [http://en.wikipedia.org/wiki/Portable_Network_Graphics#.22Chunks.22_within_the_file PNG Chunk] named 'niVI'. The capitalization of this chunkname makes sure the code is removed if someone alters the image, thus preventing the creation of malicious snippets.<br> | ||
Inside this chunk a filestream representing a VI is stored. LabVIEW interprets this as a normal VI to be embedded.<br> | Inside this chunk a filestream representing a VI is stored. LabVIEW interprets this as a normal VI to be embedded.<br> | ||
== Code integrity<br> == | == Code integrity<br> == | ||
Technically it's possible to have a different codeset embedded than represented by the PNG image chunk. This is proven by [http://forums.ni.com/ni/view_profile?user.id=134255 Darin.K] on the [[NI Forums|NI Forum]] with the following snippet:<br> | Technically it's possible to have a different codeset embedded than represented by the PNG image chunk. This is proven by [http://forums.ni.com/ni/view_profile?user.id=134255 Darin.K] on the [[NI Forums|NI Forum]] with the following snippet:<br> | ||
[[Image:MerrimanSnippet.png]]<br> | [[Image:MerrimanSnippet.png]]<br> | ||
[http://forums.ni.com/ni/board/message?board.id=BreakPoint&view=by_date_ascending&message.id=8610#M8610 Source ]<br> | [http://forums.ni.com/ni/board/message?board.id=BreakPoint&view=by_date_ascending&message.id=8610#M8610 Source ]<br> | ||
Upon dropping this image on a LabVIEW diagram another image was placed. | Upon dropping this image on a LabVIEW diagram another image was placed. | ||
The name of the Snippet Chunk (niVI), describes this chunk as [http://www.w3.org/TR/2003/REC-PNG-20031110/#5Chunk-naming-conventions unsave to copy], tests with Paint.net shows that indeed the chunk is removed when the image is altered. However usage of Microsoft Paint show that the snippet is not removed upon editing of the image. | The name of the Snippet Chunk (niVI), describes this chunk as [http://www.w3.org/TR/2003/REC-PNG-20031110/#5Chunk-naming-conventions unsave to copy], tests with Paint.net shows that indeed the chunk is removed when the image is altered. However usage of Microsoft Paint show that the snippet is not removed upon editing of the image. | ||
Revision as of 10:04, 3 November 2011
A snippet is in the LabVIEW context an image of LabVIEW code.
LabVIEW 2009 introduced the embedding of the actual code inside a PNG image.
With this functionality it is possible to expose your code on a website, and with the same file import the code into a LabVIEW VI.
Creation
LabVIEW 2009 has native support to create a snippet.
With the Code Capture Tool version 2.0 it's possible to create a snippet in any LabVIEW version from 7.0 and up.
Importing
LabVIEW 2009
To import the actual code into a VI, just drag and drop the image onto the block diagram of a VI. With Internet Explorer it's possible to drag and drop the image for a web-page into a VI directly.
For Firefox and Google Chrome it's necessary to drop the image in an OS folder or use a plugin IETab (for Firefox).
LabVIEW 8.2, 8.5 and 8.6
To import a snippet into LabVIEW 8.2 it's possible if the snippet is created with the Code Capture Tool in the same (or an older) version of LabVIEW. Second you need a special tool developed by JCarmody. This tool is available for download in the LAVA Uncertified Code Repository.
Technique
The code of a LabVIEW snippet is stored inside a PNG Chunk named 'niVI'. The capitalization of this chunkname makes sure the code is removed if someone alters the image, thus preventing the creation of malicious snippets.
Inside this chunk a filestream representing a VI is stored. LabVIEW interprets this as a normal VI to be embedded.
Code integrity
Technically it's possible to have a different codeset embedded than represented by the PNG image chunk. This is proven by Darin.K on the NI Forum with the following snippet:
Upon dropping this image on a LabVIEW diagram another image was placed.
The name of the Snippet Chunk (niVI), describes this chunk as unsave to copy, tests with Paint.net shows that indeed the chunk is removed when the image is altered. However usage of Microsoft Paint show that the snippet is not removed upon editing of the image.
