publish your code with octave
play

publish your code with Octave Kai T. Ohlhus k.ohlhus@gmail.com - PowerPoint PPT Presentation

publish your code with Octave Kai T. Ohlhus k.ohlhus@gmail.com OctConf 2017 March 20, 2017 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-sa/4.0/ Ohlhus


  1. publish your code with Octave Kai T. Ohlhus k.ohlhus@gmail.com OctConf 2017 March 20, 2017 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. http://creativecommons.org/licenses/by-sa/4.0/ Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 1 / 9

  2. What is publish about? Old Matlab teaching PDF with very simple example function linear Students trying to call their first function failed! >> y = l i n e a r (2) E rror using l i n e a r ( l i n e 52) I n v a l i d c a l l i n g syntax f o r the " l i n e a r " command . Type " help l i n e a r " f o r more i n f o r m a t i o n . Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 2 / 9

  3. What is publish about? — 1. Stale, outdated, incorrect example code. Old Matlab teaching PDF with very simple example function linear Students trying to call their first function failed! >> y = l i n e a r (2) E rror using l i n e a r ( l i n e 52) I n v a l i d c a l l i n g syntax f o r the " l i n e a r " command . Type " help l i n e a r " f o r more i n f o r m a t i o n . The function linear became 2007 part of Matlab’s System Identification Toolbox = ⇒ Need to rewrite documentation Decision to use publish (not part of GNU Octave before 4.2.0) Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 2 / 9

  4. What is publish about? — 2. Display the output. Most of Octave’s example code is “ static ” as well: Copy & run to see the output ( incomplete? ) Never checked before a release ( stale, outdated? ) >> help p l o t # shortened Here are some p l o t examples : t = 0 : 0 . 1 : 6 . 3 ; p l o t ( t , cos ( t ) , " − ; cos ( t ) ; " , t , s i n ( t ) , " − b ; s i n ( t ) ; " ) ; This w i l l p l o t the c o s i n e and s i n e f u n c t i o n s and l a b e l them a c c o r d i n g l y i n the legend . Situation better with “ doc plot ” (or more descriptive Manual) = ⇒ Bad user experience, questions, bug reports (#50282 #50148,. . . ) Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 3 / 9

  5. What is publish about? — 3. Certainly no panacea! Intended for “small to medium” sized scripts : One section level Supports HTML and L A T EX (PDF) output (but see later) No cross references (but URLs) No function docstring or class documentation = ⇒ No substitute for L A T EX or Texinfo Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 4 / 9

  6. Two short demos Simple markup in comment blocks Execution of example code, print results ## My script # Documentation with markup # *Row* vector creation. ## a = 1:5 Example code with output %% % Using the <octave:plot plot funtion >. % x = 0 : . 2 : 2 ∗ p i ; Example code with plot output y = s i n ( x ) ; p l o t ( x , y ) Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 5 / 9

  7. The publish – grabcode workflow script.m ## My script publish("script.m") script.html # ## <!DOCTYPE html> plot (sin (1:5)); <html> <body> <!-- ##### SOURCE BEGIN ##### ## My script tmp.m # grabcode("script.html") ## plot (sin (1:5)); ## My script # ##### SOURCE END ##### ## --> </body> </html> plot (sin (1:5)); Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 6 / 9

  8. Customize publish (GNU Octave 4.3.0+) Pure Octave code → easy to extend/modify Designed for extension: ◮ Implement all callback subfunctions in some __publish_my_markup_output__.m and run publish(" script .m", "my_markup") Some interesting experiment with MediaWiki action API 1 . script.wiki publish() script.m curl wikiLogin.sh wiki/api.php?action=... plot.png publishToWiki() 1 Read more: https://siko1056.github.io/blog/2017/03/10/ getting-to-know-the-mediawiki-api.html . Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 7 / 9

  9. A new Agora approach? — Maybe GSoC 2017 project? Pros: ◮ Login system ◮ History (revert vandalism) ◮ Editor ◮ Syntax highlighting Cons: ◮ Expose api.php ( security concern? ) ◮ Image storage limitation ◮ Login required ( limited access / vandalism ) ◮ Deal with HTML escaping urlread cannot handle session cookies . The demo relies on bash script calling curl appropriately. → This can be fixed. Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 8 / 9

  10. Thank you for your attention. Questions? Find the sources at https://github.com/siko1056/OctConf2017 . Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 9 / 9

  11. Discussion: A survey of documentation Octave repo (24 committers, overwhelming bug reports) ◮ Manual for end-users, description, and function reference ⋆ updated with each releases ( twice each year) ◮ Doxygen (C/C++ only) ⋆ not actively presented, not updated Octave forge ( 70 maintainers?) ◮ individual package docs, updates by maintainers ◮ Octave core and package function reference Wiki ( 25 active and 600 passive) registered users) ◮ docs for installation, forge packages, contribution guidelines, ... ◮ updated occasionally, not release specific, many outdated articles Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 9 / 9

  12. Discussion: A survey of documentation (cont.) Manual (static, dynamic graphic generation) ◮ Texinfo and helper scripts (AWK, Bash, Octave, Perl) ◮ HTML, PDF output ◮ markup, links Doxygen (static, dynamic completeness checking) ◮ Special comment blocks, no real overhead ◮ (very rich) HTML, LaTeX, RTF, XML, Man page, DocBook output ◮ markup (Markdown), links Wiki (static) ◮ the power of MediaWiki ◮ not related to Octave (but syntax highlighting!) Octave forge packages (static, dynamic elements?) ◮ Texinfo and generate_html package ◮ HTML ◮ markup, links Ohlhus (OctConf 2017) publish your code with Octave March 20, 2017 9 / 9

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend