Hi folks, I’m okay with the things :-)
Thanks in advance, Siegfried Goeschl > On 18 Dec 2019, at 20:38, Daniel Dekany <daniel.dek...@gmail.com> wrote: > > Yes, these can done after V1 or whatever. But it's still important if > Siegfried will be OK with such things, or will lose motivation because it's > not how he likes his own kid. More code without more developers probably > won't work out well, given how little developer time even FM core gets. > > As of nested output files, I agree (and BTW, FMPP also have a nested output > directive, not just starting a new). I also understand that it breaks the > clean mental model, but if (if...) this is what's reasonably often needed > in reality, then certainly the mental model should bend. > > On Wed, Dec 18, 2019 at 8:01 PM Woonsan Ko <woon...@apache.org> wrote: > >> On Wed, Dec 18, 2019 at 11:23 AM Siegfried Goeschl >> <siegfried.goes...@gmail.com> wrote: >>> >>> Hi Daniel, >>> >>> please see my comments below … >>> >>> Thanks in advance, >>> >>> Siegfried Goeschl >>> >>> >>>> On 18 Dec 2019, at 16:58, Daniel Dekany <daniel.dek...@gmail.com> >> wrote: >>>> >>>> Multiple output files: How open are you to the idea if someone else >> wants >>>> to add that though? The use-case is when it's input data that drives >> what >>>> output files you will have (as in my example with the employees), and >>>> working that around with multiple invocations is not very nice. >>>> >>> >>> Suggestive question - it is an Open Source project after all :-) >>> >>> * As long as it is hosted on my GitHub repo I can ultimately reject PRs >> if I’m really unhappy about them but repos can be forked >>> * If it becomes part of Apache FreeMarker project than there are more >> qualified developers out there to make a decision >>> >>> Regarding the implementation >>> >>> * Multiple output files violates my my mental model since you can’t use >> stdout any longer >>> * It could break the CommonsCSV integration since I’m using CSVPrinter >> sitting on FreeMarker’s output stream (which changes when using multiple >> output files) >>> * Last but not least I have not enough experience / requirements to come >> up with a useful implementation from the scratch >> >> In my head, we may introduce a new directive to specify a different >> output for the nested things, instead of the _default_ STDOUT, in the >> future. For example, >> >> hello, >> <#output file="another.csv"> >> something else... >> </#output> >> world! >> >> So, by default "hello,\nworld!" to STDOUT, "something else..." to the >> extra file. >> This seems better to me than "changing output and closing the current >> output" approach in FMPP. >> >> But this improvement can be done together once Siegfried _donates_ his >> project to Apache FreeMarker. ;-) >> >>> >>>> Default locale: >>>> And also default charset to UTF-8, if that wasn't done. >>> >>> UTF-8 is the default >>> >>>> >>>> JDBC drivers: There was some discussion of how to add user defined >> classes >>>> to the tool earlier. Well, I guess it's about the same as you add your >> own >>>> jar-s to the classpath too, so, it shouldn't be a big deal. That could >>>> solve this side of the JDBC problem as well. As of storing credentials, >>>> that has to be solved when using external tools as well... but my >> practical >>>> experience is that people just put them in to a config file as plain >> text >>>> (maybe on a drive that has to be mounted with password first), or bind >> it >>>> to the OS user. >>> >>> The problem is more subtle - I want to provide a well-behaved command >> line tool >>> >>> * What happens if you update the freemarker-cli installation on your box? >>> * How do you easily distinguish between your custom JARs and the >> initially installed ones? >>> * How does it look like if you install freemarker-cli with package >> managers, e.g. brew? >> >> I guess it should be fine as an initial version even if there's no >> separation between system libs and custom libs (such as JDBC drivers). >> If there's a tool for easy JDBC access, it would be nice in practices. >> I don't think it should be perfect from V1. >> >> Regards, >> >> Woonsan >> >>> >>> Current state >>> >>> * Custom tools can be instantiated using the freemarker-cli-properties >>> * For the templates I use ~/.freemarker-cli directory to have a clean >> separation >>> * There is no really nice solution for JARs - I might tweak the Maven >> plugin creating the Unix & Windows wrappers - you can already create an >> “endorsed” directory there to place custom JARs >>> >>>> >>>> Yes, Spring support is definitely important, given the omnipresence of >>>> Spring. It's not just web pages there, but e-mail templates >> (especially as >>>> there modern the UI technologies that has taken over at most places, >> aren't >>>> applicable). Would be good if someone can take ownership of that >> aspect for >>>> FreeMarker 2, probably using what was done in FM3. (Or maybe the same >>>> resources are better redirected to pushing FM3... who knows. There are >>>> really no resources to push two branches in parallel.) >>>> >>>> On Wed, Dec 18, 2019 at 2:02 PM Siegfried Goeschl < >>>> siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>> >> wrote: >>>> >>>>> Hi Daniel, >>>>> >>>>> try to write a top-level post to keep the discussion readable >>>>> >>>>> >>>>> Ad Multi-file Output >>>>> =============================================================== >>>>> >>>>> Currently no plans to implement it - I personally don’t have a need >> for it >>>>> and it is a hypothetical requirement for now >>>>> >>>>> >>>>> Ad POI Integration >>>>> =============================================================== >>>>> >>>>> No problem in exposing the non-String data - it is a good idea and >> will be >>>>> implemented >>>>> >>>>> >>>>> Ad Default Locale >>>>> =============================================================== >>>>> >>>>> * I need to define a locale for the unit tests >>>>> * I guess it is a good idea to pin it to “en_US” to avoid suprises >>>>> >>>>> >>>>> Ad JDBC Access >>>>> =============================================================== >>>>> >>>>> It is part of a wider problem - when leaving the document-centric >> approach >>>>> into scripting there is a lot of useful functionality, e.g. JDBC and >> HTTP >>>>> clients. >>>>> >>>>> The problems >>>>> >>>>> * JDBC: You need to add JDBC drivers, where to store the credentials, >>>>> database schema, ... >>>>> * HTTP: More libraries, certificates, proxy support,... >>>>> >>>>> It is possible to implement something but it will never work properly >> so I >>>>> decided to tackle the problem differently b using commons-exec >>>>> >>>>> * REST calls can be easily made by invoking cURL >>>>> * Database command line clients can export the result of a SELECT >> query to >>>>> a CSV file >>>>> >>>>> >>>>> Ad Templates aren't used much for Web UI-s anymore >>>>> =============================================================== >>>>> >>>>> Yes and no - IMHO it is quite useful to embed a UI into certain "micro >>>>> services”. Therefore I think that a ready-to-use Spring Boot (& >> Micronaut, >>>>> etc..) integration is important and should not be an afterthought. >>>>> >>>>> >>>>> Thanks in advance, >>>>> >>>>> Siegfried Goeschl >>>>> >>>>> >>>>>> On 18 Dec 2019, at 01:32, Daniel Dekany <daniel.dek...@gmail.com> >> wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> Find my comments inline below. >>>>>> >>>>>> On Tue, Dec 17, 2019 at 10:46 PM Siegfried Goeschl < >>>>>> siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com> >> <mailto:siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>>> >> wrote: >>>>>> >>>>>>> Hi Daniel, >>>>>>> >>>>>>> Thanks for spending your time - feed back is always appreciated when >>>>> doing >>>>>>> things in isolation .... >>>>>>> >>>>>>> Please see my comments below >>>>>>> >>>>>>> Thanks in advance, >>>>>>> >>>>>>> Siegfried Goeschl >>>>>>> >>>>>>> >>>>>>> >>>>>>>> On 17.12.2019, at 19:19, Daniel Dekany <daniel.dek...@gmail.com >> <mailto:daniel.dek...@gmail.com>> >>>>> wrote: >>>>>>>> >>>>>>>> Hi Siegfried, >>>>>>>> >>>>>>>> Looks good! >>>>>>>> >>>>>>>> Some random things I happened to notice: >>>>>>>> >>>>>>>> - The ability generating multiple output files from the same >> template >>>>>>>> would be worthy addition. Like you load a CSV file that has >> employees >>>>>>> in >>>>>>>> it, and based on that you generate one output file per department. >> Or >>>>>>> even >>>>>>>> one per employee. (There could directives for that, like >>>>>>> changeOutputFile, >>>>>>>> nestOutputFile, etc. on >>>>> http://fmpp.sourceforge.net/pphash.html#sect17 < >> http://fmpp.sourceforge.net/pphash.html#sect17> >>>>>>> <http://fmpp.sourceforge.net/pphash.html#sect17 < >> http://fmpp.sourceforge.net/pphash.html#sect17> < >>>>> http://fmpp.sourceforge.net/pphash.html#sect17 < >> http://fmpp.sourceforge.net/pphash.html#sect17>>>) >>>>>>> >>>>>>> Well, I simply don't need it and it complicates things - in simple >> cases >>>>>>> one could just re-run the freemarker-cli with a different template >>>>> and/or >>>>>>> parameters >>>>>>> >>>>>> >>>>>> My feeling is that if there's a tool that's about transforming some >> files >>>>>> to other files, but the idea that a single invocation can yield >> multiple >>>>>> output files is not part of it, one way or another (i.e., not >> necessarily >>>>>> in the way it was in FMPP), it might turns out to be a limiting >> design >>>>>> decision later as feature request start to pour in. And then it can >> be >>>>> hard >>>>>> to add as an afterthought. Well, maybe I'm wrong, as I have no >> statics >>>>>> about how often it's needed. FMPP users did use it (myself included), >>>>> some >>>>>> of them at least. >>>>>> >>>>>> >>>>>>>> - When I load an XLSX, I get back values as string, not as >> numbers, or >>>>>>>> dates. I'm not sure how hard it is to solve though (I don't >> remember >>>>>>> POI >>>>>>>> much). >>>>>>> >>>>>>> That should not be too hard - I actually use >>>>>>> org.apache.poi.ss.usermodel.DataFormatter to create the strings >>>>>> >>>>>> >>>>>> If templates get numbers etc., or have a such choice at least, then >> they >>>>>> can compare numbers, filter based on their values, control the >>>>> formatting, >>>>>> etc. My idea here is that an Excel file, CSV file, whatever, is just >> a >>>>> pure >>>>>> data, and rendering/formatting is the duty of the templates. >>>>>> >>>>>> >>>>>>>> BTW, the strings I get back are formatted with the locale of the >> OS, >>>>>>> >>>>>>> which is a problem. I guess there should be an config option to set >> the >>>>>>> JVM >>>>>>>> locale. (The ExcelToolTest fails on my computer with locale hu_HU >> for >>>>>>>> somewhat similar reason, as it gets "100,00" instead of "100.00".) >>>>>>> >>>>>>> On the command line you can use >>>>>>> >>>>>>> -l, --locale=<locale> Locale being used for output file, e.g. >>>>> 'en_US' >>>>>>> >>>>>>> but I guess I should provide a fixed locale for the unit tests >>>>>>> >>>>>> >>>>>> The problem is not how FreeMarker renders the numbers. It already >> gets >>>>>> strings like that from POI, and --locale doesn't influence POI. >>>>>> >>>>>> As of the default locale, for these kind of tools, I believe that >> using >>>>>> system defaults is usually evil. So having a fixed default is maybe >> not >>>>>> just for unit tests. The locale of my computer, or wherever I run a >> job >>>>> on >>>>>> (often some backend linux box) should be usually irrelevant, and not >>>>>> influence the output. Not to mention when team mates share the >> project, >>>>> in >>>>>> an international team. >>>>>> >>>>>>> - Querying from relation databases (JDBC) would be probably an >> useful >>>>>>>> addition (it doesn't fit the Document paradigm though). >>>>>>> >>>>>>> I integrated commons-exec and triggered AWS CLI - basically you >> capture >>>>>>> the output of any command-line invocation and process it. Just need >> to >>>>> make >>>>>>> sure that every tool supports processing raw strings ... >>>>>>> >>>>>> >>>>>> I'm note sure what do you mean. The result of a query is a structured >>>>> data, >>>>>> with column names and non-string types, so I guess command-line >>>>> invocation >>>>>> can't solve that too well. >>>>>> >>>>>> >>>>>>>> It would be good if there's some de-facto tool for these kind of >> things >>>>>>>> than what freemarker-cli does. I guess there's a few such tools in >>>>>>> company >>>>>>>> repos, but of course those have no potential to become more >> generic and >>>>>>>> being published. (freemarker-generator was a such toll though, but >> it >>>>>>>> didn't go anywhere after donation. Actually, FMPP was a such tool >> too, >>>>>>> that >>>>>>>> I used for some sysadmin/webadmin tasks some 15+ years ago.) But of >>>>>>> course, >>>>>>>> long term care is the tricky issue with any project that has no >> company >>>>>>>> truly behind it (i.e., no payed developers). Do you have you have >> any >>>>>>>> thoughts/plans regarding the longer term life of freemarker-cli? >>>>>>> >>>>>>> I worked on a couple of not soo successful Open Source projects - >> yes, >>>>> it >>>>>>> might become another Open Source GitHub project nobody knows / >> cares :-) >>>>>>> >>>>>>> Having said that >>>>>>> >>>>>>> * I'm maintaining it already for a few of years and I will always >> find >>>>>>> some things I can do with it >>>>>>> * It is useful for some common tasks when you have a Java background >>>>>>> * I think it is a great way to re-use or build up FreeMarker >> knowledge >>>>>>> >>>>>> >>>>>> And, I would add, templates aren't used much for Web UI-s anymore, so >>>>> these >>>>>> alternate use cases become the main ones. >>>>>> >>>>>> >>>>>>> * And it should become part of the Apache Freemarker project - much >>>>> better >>>>>>> visibility & broader user base >>>>>>> >>>>>> >>>>>> Yeah, the last point is what I'm going for really. But that's also >> why I >>>>>> hope that you feel like making it more general. Or at least has no >>>>> negative >>>>>> feelings about it. >>>>>> >>>>>>> >>>>>>>> Also, some things that you miss for FreeMarker itself for it to be >> more >>>>>>>> fitting for the task? >>>>>>> >>>>>>> Support for Java 8 Date/Time API - last time I looked at it it was >> not >>>>>>> supported by FreeMarker and it's a bummer since nobody is using >> Date any >>>>>>> longer ... >>>>>>> >>>>>> >>>>>> Yeah... it still isn't. It's probably among the new few things to >> add at >>>>>> this point, as it's long due. >>>>>> >>>>>>> >>>>>>>> >>>>>>>> On Sun, Nov 17, 2019 at 7:02 PM Siegfried Goeschl < >>>>>>>> siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com> >> <mailto:siegfried.goes...@gmail.com <mailto:siegfried.goes...@gmail.com>> >>>>> <mailto:siegfried.goes...@gmail.com <mailto: >> siegfried.goes...@gmail.com> <mailto:siegfried.goes...@gmail.com <mailto: >> siegfried.goes...@gmail.com>>>> >>>>> wrote: >>>>>>>> >>>>>>>>> Hi folks, >>>>>>>>> >>>>>>>>> since I'm currently mostly busy with non-coding tasks I spent some >>>>> time >>>>>>>>> honing my coding skills - probably to no avail as my colleagues >> would >>>>>>> say >>>>>>>>> ;-) >>>>>>>>> >>>>>>>>> 1) I migrated my pet project "freemarker-cli" from Groovy to JDK 8 >>>>> (see >>>>>>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli> < >>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli>> < >>>>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli> < >>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli>>> < >>>>>>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli> < >>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli>> < >>>>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli> < >>>>> https://github.com/sgoeschl/freemarker-cli < >> https://github.com/sgoeschl/freemarker-cli>>>>) >>>>>>>>> >>>>>>>>> 2) At >>>>>>>>> >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>> >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>> >>>>>> >>>>>>> < >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>> >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >> < >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>> >>>>>> >>>>>>>> >>>>>>>>> < >>>>>>>>> >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>>>>> >>>>>>> < >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/blob/master/javameetup/freemarker/slides/src/docs/asciidoc/index.adoc >>>>>> >>>>>>>>> >>>>>>>>> you find a presentation I gave some while ago >>>>>>>>> >>>>>>>>> 3) I also wrote a Spring Boot FreeMarker sample project as part >> of the >>>>>>>>> presentation (see >>>>>>>>> >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>> >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>> >>>>>> >>>>>>> < >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>> >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >> < >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>> >>>>>> >>>>>>>> >>>>>>>>> < >>>>>>>>> >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>>>>> >>>>>>> < >>>>>>> >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>>>> < >>>>> >> https://github.com/sgoeschl/presentations/tree/master/javameetup/freemarker/demo >>>>>> >>>>>>>> >>>>>>>>>> ) >>>>>>>>> >>>>>>>>> My plans / questions >>>>>>>>> >>>>>>>>> I would be awesome if I could get some feedback about >> "freemarker-cli" >>>>>>> in >>>>>>>>> its current JDK incarnation :-) Later on I will release 2.0.0 and >> push >>>>>>> it >>>>>>>>> to Maven Central. >>>>>>>>> >>>>>>>>> In the mean time I wrote three applications (micro services in new >>>>>>> speak) >>>>>>>>> using Apache FreeMarker and found it hard to find a starting point >>>>> for a >>>>>>>>> Spring Boot applications - therefore I wrote the sample project >> (see >>>>>>>>> above). One way or the other a Spring Boot (and Micronaut) blue >> print >>>>>>>>> should find its way into Apache FreeMarker officially. I think >> Apache >>>>>>>>> FreeMarker is awesome for adding a developer UI to some micro >> service >>>>>>> but >>>>>>>>> developers don't care about the template engine but only about a >> quick >>>>>>> and >>>>>>>>> painless way to get the job done ... >>>>>>>>> >>>>>>>>> Anyone volunteering to give a presentation about Apache >> Freemarker at >>>>>>>>> ApacheCon? I could do but I'm not really qualified :-) >>>>>>>>> >>>>>>>>> Thanks in advance, >>>>>>>>> >>>>>>>>> Siegfried Goeschl >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Best regards, >>>>>>>> Daniel Dekany >>>>>>> >>>>>> >>>>>> -- >>>>>> Best regards, >>>>>> Daniel Dekany >>>>> >>>>> >>>> >>>> -- >>>> Best regards, >>>> Daniel Dekany >>> >> > > > -- > Best regards, > Daniel Dekany