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

Reply via email to