Re: [tw5] Counting specific words

2021-09-24 Thread TW Tones
I would just add all the solutions here it are counting words in a title or 
string or the text field. None are attempting to render the tiddler first 
so that lists transclusions and macros etc.. are first expanded.

You can use the wikify widget to wikify the result into a variable and pass 
that to the word count.

Tones

On Saturday, 25 September 2021 at 10:07:16 UTC+10 mohamed...@hotmail.com 
wrote:

> Thank you very much,
>
> both work, also one more question , to get anywhere remotely close to 
> writing code like this  for tiddly wiki , what language should i try to 
> learn, i have no coding skills, and was just wondering if i would invest my 
> time in learning a bit, what language should i be looking at?
>
> thanks again
>
> On Thursday, September 23, 2021 at 11:32:19 PM UTC+2 jn.pierr...@gmail.com 
> wrote:
>
>> actually, https://tiddlywiki.com/#Macro%20Definitions%20in%20WikiText is 
>> very confusing! It took me a lot of time to make any sense out of it for 
>> the special case like using <<< and after my own tests, I have failed to 
>> see that as useful.
>>
>> Your code is actual code and it would be good to use it rather than the 
>> current example.
>>
>> I was sure you coded  instead of <__arg__> and I had copied it and 
>> executed. It was not functioning as it should. But I can no more remember 
>> why: was it the problem I told about why regexp was better or was it that 
>> it did nothing?
>>
>> Anyway, thank you for your correction about what I told. I have yet again 
>> something about tiddlywiki today! And I could use it, definitely.
>>
>>
>>
>>
>>
>> Le jeudi 23 septembre 2021 à 18:04:26 UTC+2, jeremy...@gmail.com a 
>> écrit :
>>
>>> Hi Jean-Pierre
>>>
>>> You made an error in your macro, Jeremy. You should have used $arg$ 
>>> instead of .
>>>
>>>
>>> It's actually not an error: it's an alternative way to access the 
>>> parameters of macros. It avoids the problem that otherwise the code would 
>>> fail with a tiddler title containing a closing square bracket.
>>>
>>> There are docs here under "Parameters as Variables <<__...__>>":
>>>
>>> https://tiddlywiki.com/#Macro%20Definitions%20in%20WikiText
>>>
>>> But it is false nonetheless because it would, for example, cut word 
>>> "totem" if asked for word "to". My regular expression does not do that 
>>> thanks to the \b at both ends of the arguments.
>>>
>>>
>>> Yes, I did that quickly, but indeed I think that splitregexp would be 
>>> needed to make it practical, both to resolve the word boundary issue and 
>>> the case sensitivity issue.
>>>
>>> Best wishes
>>>
>>> Jeremy.
>>>
>>>
>>> Le jeudi 23 septembre 2021 à 16:45:46 UTC+2, jeremy...@gmail.com a 
>>> écrit :
>>>
 Another technique is to use the “split” operator to split the string by 
 the word:

 \define count-words(title,word)
 <$text text={{{ [<__title__>get[text]split<__word__>count[]subtract[1]] 
 }}}/>
 \end

 <>

 Using the splitregexp operator instead allows would allow splitting 
 case insensitively, which might be more useful.

 Best wishes

 Jeremy.

 On 23 Sep 2021, at 15:37, Jean-Pierre Rivière  
 wrote:

 Here it is.

 ```
 \define count-word(word, tid)
 {{{ 
 [[$tid$]get[text]search-replace:gi:regexp[\b$word$\b],[þ]dump:v[first]search-replace:g:regexp,[]dump:v[final]length[]]
  
 }}}
 \end

 <>
 ```

 I use a char that should never be within the tiddler, þ in my example. 
 You can use another rare character is old English is concerned! I replace 
 every occurrence of the word with it, then remove any other character then 
 count the length of the result. If you want case sensitive search, just 
 omit the `i` flag in the first `search-replace`.

 Le mercredi 22 septembre 2021 à 15:14:55 UTC+2, mohamed.e...@
 vodafone.com a écrit :

> Hi ,
>
> is there a way to count the number of occurrences of a specific word 
> in a tiddler
>
> I have serached , but could only find a plugin that counts the total 
> number of words, or total number characters.
>
>  
>

 -- 
 You received this message because you are subscribed to the Google 
 Groups "TiddlyWiki" group.
 To unsubscribe from this group and stop receiving emails from it, send 
 an email to tiddlywiki+...@googlegroups.com.
 To view this discussion on the web visit 
 https://groups.google.com/d/msgid/tiddlywiki/a30f622a-627f-41a5-a532-4015e0f3faaen%40googlegroups.com
  
 
 .


 -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "TiddlyWiki" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to tiddlywiki+...@googlegroups.com.
>>>
>>> To view 

[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread TW Tones
Alvaro;

Have you tested this?

{{{  [tag[Tag 1]*,*[Tag 2],[Tag 3],[Tag 4]]  
:filter[tags[]count[]compare:eq[4]]  }}}

I cant see it working. Here  is 
says 

* NEW IN: 5.1.23 Filter operators support multiple parameters which are 
separated by a  ,  character.*

*For example: [param1],[param2] or ,{param2}*
However as far as I can see only if such multiple parameters are documented 
in the operator in question.

Tones
On Saturday, 25 September 2021 at 01:39:53 UTC+10 Álvaro wrote:

> It works fine. I tried to find a alternative, but I wasn't lucky.
>
> When I resee your filter, I remember about the multiple parameters in 
> filter operator with commas (from last version, 5.1.23). And we can add a 
> second filter run that it applies your filter to result of first run. Then 
> you can rewrite your filter something like this (in filtering transclusion)
> {{{  [tag[Tag 1]*,*[Tag 2],[Tag 3],[Tag 4]]  
> :filter[tags[]count[]compare:eq[4]]  }}}
>
> Although maybe it be less understandble for you.
>
>
> El viernes, 24 de septiembre de 2021 a las 10:59:50 UTC+2, 
> jn.pierr...@gmail.com escribió:
>
>> That's fine by me.
>>
>> And yes filters are fun even if sometimes a bit tricky.
>>
>> So for the fun of it, you could arrange your filter so that the input 
>> would be the 4 tags you want.
>>
>> something like that:
>>
>> \define fun(tags)
>> <$set variable=occ filter="[[$tags]put your filter code 
>> here...count[]]">Seen <> tiddlers with tags $tags$
>> \end
>>
>> Sometimes, this fun has you coding javascript filter operator. Would this 
>> be the case here? I have not thought about it yet.
>>
>> cheers,
>>
>>
>> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
>> écrit :
>>
>>> Me and my interest in brain age games, I couldn't help but play around 
>>> with a filter to find all tiddlers that have all four specified tags, but 
>>> only those four tags.
>>>
>>> You'll find three tiddlers in the attached json.  Download the file, and 
>>> drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.
>>>
>>> There are all kinds of ways to go about doing this sort of thing, with 
>>> some filter operators maybe better suited, but I find the result a bit 
>>> easier for me to understand (more logical to me, or maybe more 
>>> self-explanatory, because of the way my brain works, I suppose.)  Maybe 
>>> just a difference between top-down view vs bottom-up view or something ...
>>>
>>> Yeah, I find filters fun.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/8b51d326-471c-4869-bdf9-6c5680937652n%40googlegroups.com.


Re: [tw5] Counting specific words

2021-09-24 Thread paulgilbert2000
Thank you very much,

both work, also one more question , to get anywhere remotely close to 
writing code like this  for tiddly wiki , what language should i try to 
learn, i have no coding skills, and was just wondering if i would invest my 
time in learning a bit, what language should i be looking at?

thanks again

On Thursday, September 23, 2021 at 11:32:19 PM UTC+2 jn.pierr...@gmail.com 
wrote:

> actually, https://tiddlywiki.com/#Macro%20Definitions%20in%20WikiText is 
> very confusing! It took me a lot of time to make any sense out of it for 
> the special case like using <<< and after my own tests, I have failed to 
> see that as useful.
>
> Your code is actual code and it would be good to use it rather than the 
> current example.
>
> I was sure you coded  instead of <__arg__> and I had copied it and 
> executed. It was not functioning as it should. But I can no more remember 
> why: was it the problem I told about why regexp was better or was it that 
> it did nothing?
>
> Anyway, thank you for your correction about what I told. I have yet again 
> something about tiddlywiki today! And I could use it, definitely.
>
>
>
>
>
> Le jeudi 23 septembre 2021 à 18:04:26 UTC+2, jeremy...@gmail.com a écrit :
>
>> Hi Jean-Pierre
>>
>> You made an error in your macro, Jeremy. You should have used $arg$ 
>> instead of .
>>
>>
>> It's actually not an error: it's an alternative way to access the 
>> parameters of macros. It avoids the problem that otherwise the code would 
>> fail with a tiddler title containing a closing square bracket.
>>
>> There are docs here under "Parameters as Variables <<__...__>>":
>>
>> https://tiddlywiki.com/#Macro%20Definitions%20in%20WikiText
>>
>> But it is false nonetheless because it would, for example, cut word 
>> "totem" if asked for word "to". My regular expression does not do that 
>> thanks to the \b at both ends of the arguments.
>>
>>
>> Yes, I did that quickly, but indeed I think that splitregexp would be 
>> needed to make it practical, both to resolve the word boundary issue and 
>> the case sensitivity issue.
>>
>> Best wishes
>>
>> Jeremy.
>>
>>
>> Le jeudi 23 septembre 2021 à 16:45:46 UTC+2, jeremy...@gmail.com a 
>> écrit :
>>
>>> Another technique is to use the “split” operator to split the string by 
>>> the word:
>>>
>>> \define count-words(title,word)
>>> <$text text={{{ [<__title__>get[text]split<__word__>count[]subtract[1]] 
>>> }}}/>
>>> \end
>>>
>>> <>
>>>
>>> Using the splitregexp operator instead allows would allow splitting case 
>>> insensitively, which might be more useful.
>>>
>>> Best wishes
>>>
>>> Jeremy.
>>>
>>> On 23 Sep 2021, at 15:37, Jean-Pierre Rivière  
>>> wrote:
>>>
>>> Here it is.
>>>
>>> ```
>>> \define count-word(word, tid)
>>> {{{ 
>>> [[$tid$]get[text]search-replace:gi:regexp[\b$word$\b],[þ]dump:v[first]search-replace:g:regexp,[]dump:v[final]length[]]
>>>  
>>> }}}
>>> \end
>>>
>>> <>
>>> ```
>>>
>>> I use a char that should never be within the tiddler, þ in my example. 
>>> You can use another rare character is old English is concerned! I replace 
>>> every occurrence of the word with it, then remove any other character then 
>>> count the length of the result. If you want case sensitive search, just 
>>> omit the `i` flag in the first `search-replace`.
>>>
>>> Le mercredi 22 septembre 2021 à 15:14:55 UTC+2, mohamed.e...@
>>> vodafone.com a écrit :
>>>
 Hi ,

 is there a way to count the number of occurrences of a specific word in 
 a tiddler

 I have serached , but could only find a plugin that counts the total 
 number of words, or total number characters.

  

>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "TiddlyWiki" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to tiddlywiki+...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/tiddlywiki/a30f622a-627f-41a5-a532-4015e0f3faaen%40googlegroups.com
>>>  
>>> 
>>> .
>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "TiddlyWiki" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to tiddlywiki+...@googlegroups.com.
>>
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/tiddlywiki/ab5296b2-f778-4334-9eef-1892487d6f19n%40googlegroups.com
>>  
>> 
>> .
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web 

[tw5] Re: how to add a button to the top right of the tiddler to copy the title ?

2021-09-24 Thread TW Tones
I know I am late to the GG party, spending more time in Discourse now,

Try my attached json on tiddlywiki.com. It contains;

   - A button to copy the current title
   - A button to copy the current tiddler text
   - A neat little trick to link to the last tiddler and or copy buttons 
   from the sidebar

The buttons are effective in the control panel appearance toolbars, uncheck 
to hide behind more.

If needed I can also find buttons I made to copy the "current tiddler" in 
the following forms;

   - [[current tiddler]]
   - {{current tiddler}}

Regards
Tones


On Sunday, 19 September 2021 at 15:31:57 UTC+10 imleg...@gmail.com wrote:

> Done, two tiddlers needed one for logic one for button image. Thanks. 
>
> On Sunday, September 19, 2021 at 8:50:56 AM UTC+8 Télumire wrote:
>
>> Oups sorry theok was faster than me ahah
>>
>> Le dimanche 19 septembre 2021 à 02:49:54 UTC+2, Télumire a écrit :
>>
>>> You also need to add the tag $:/tags/ViewToolbar if you want your 
>>> button to be displayed in the view toolbar (which is at the right of the 
>>> tiddler title).
>>>
>>> If you want your button to be really in the title itself and not in the 
>>> toolbar, then you can use the field icon, which display the content of the 
>>> tiddler in the title, then with css move the icon to the right, e.g : 
>>> https://telumire.github.io/TW-tips/index.html#tasker%20button%20at%20the%20right%20of%20the%20title
>>>
>>> Le samedi 18 septembre 2021 à 16:55:49 UTC+2, cj.v...@gmail.com a 
>>> écrit :
>>>
 To study and copy for the creation of your own button:

 $:/core/ui/Buttons/edit *(you need to at least have a tiddler like 
 this for your button)*
 $:/core/images/edit-button *(nice to have one like this, even if your 
 image is just an emoji or whatever)*
 $:/language/Buttons/Edit/Caption  *(maybe nice to have one like this)*
 $:/language/Buttons/Edit/Hint  *(maybe nice to have one like this)*

 On Saturday, September 18, 2021 at 10:42:35 AM UTC-3 imleg...@gmail.com 
 wrote:

> <$button message="tm-copy-to-clipboard" param=<>>
> Copy date to clipboard
> 
>
> I know the command is something like this, but I don't know how to add 
> a button to the top right beside the edit clone tiddler. 
>


-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/82a27672-2f1f-4f3a-b72e-cea3598ad66en%40googlegroups.com.


copy-text-title-buttons.json
Description: application/json


[tw5] Re: 3D file preview?

2021-09-24 Thread Ste
No worries. :) just wondering... And giving the thread a bump! 


On Monday, 20 September 2021 at 13:10:03 UTC+1 Alex Davies wrote:

> I'm afraid I haven't had any time to really work on this, and I don't 
> anticipate getting more free time until after Christmas.
>
> On Sunday, September 19, 2021 at 6:46:56 PM UTC-3 Ste wrote:
>
>> Did you make any progress on this Alex? 
>>
>> On Tuesday, August 24, 2021 at 4:44:57 PM UTC+1 Alex Davies wrote:
>>
>>> With the lazy-load tiddler on node-js supporting larger collections of 
>>> files it seems like a potentially very useful tool.
>>>
>>> On Wednesday, August 11, 2021 at 7:40:38 PM UTC-3 joshua@gmail.com 
>>> wrote:
>>>
 Including 3d files in a wiki is a really neat idea. Man, I wish I had 
 more time. Replaying so I can find the thread later. ;)

 Best,

 Joshua Fontany

 On Wednesday, August 11, 2021 at 3:58:15 AM UTC-7 Ste wrote:

> There is also this as part of the plugin:
>
>
> http://rboue.tiddlyspot.com/#%24%3A%2Fplugins%2Frboue%2FThree.js%2FLib%2FLoaders%2FSTLLoader.js
>
> On Tuesday, 10 August 2021 at 21:15:56 UTC+1 Alex Davies wrote:
>
>> There there needs to be what, a display widget and and a parser?
>>
>> On Tuesday, August 10, 2021 at 1:57:39 PM UTC-3 Ste wrote:
>>
>>> There is this :
>>> http://rboue.tiddlyspot.com/#Three.js%2Fintroduction 
>>>
>>> Which has, I think, the ability to display STL files. 
>>> It's been on my to do list to look at and have a go but... 
>>>
>>>
>>>
>>> On Tuesday, 10 August 2021 at 16:30:00 UTC+1 Alex Davies wrote:
>>>
 I'd really like to be able to include STL files in my tiddlywiki, 
 but actually supporting a new file type is a bit beyond me. It seems 
 like 
 it would be entirely doable using threejs, but a bit more challenging 
 to 
 make it happen "automatically" so that tiddlywiki doesn't try to show 
 me 
 several MB text files.

 Any thoughts on how that could be accomplished? Something to do 
 with mime type detection?

>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/2fc400fc-4bca-4d0a-b374-d498762cc6d6n%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Jean-Pierre Rivière
For an easy reading, edit your tiddlers with a fixed font like courier or 
terminal.

Le vendredi 24 septembre 2021 à 19:15:47 UTC+2, Álvaro a écrit :

> I don't know if they are loving that or not. The commas aren't easy to see 
> between brackets (for me). If I begin on end of filter run, i also have 
> this problem. But any can build his/her mental shorcuts to avoid it. If 
> someone can't solve a problem, maybe he/she can create a "alternative way"
>
> Yes, I tried with the tagging operator and I see that behaviour.
>
> El viernes, 24 de septiembre de 2021 a las 18:52:36 UTC+2, 
> jn.pierr...@gmail.com escribió:
>
>> I was thinking that the tagging operator was the zay to get tiddlers that 
>> all share all of the tags in input. That's what the dec say: "output: the 
>> titles of any tiddlers that carry the input tags".
>>
>> So my function would be:
>>
>> \define fun(tags)
>> <$vars four="[tags[]count[]match[4]]">
>> <$set variable=occ filter="[[$tags$]tagging[] :filter]">Seen 
>> <> tiddlers with tags $tags$
>> 
>> \end
>>
>>  But in fact the effect of tagging is "output: the titles of any tiddlers 
>> that carry ANY OF the input tags". Too bad for the instance. But I think a 
>> correction in the doc would be welcome.
>>
>>
>> Le vendredi 24 septembre 2021 à 10:59:50 UTC+2, Jean-Pierre Rivière a 
>> écrit :
>>
>>> That's fine by me.
>>>
>>> And yes filters are fun even if sometimes a bit tricky.
>>>
>>> So for the fun of it, you could arrange your filter so that the input 
>>> would be the 4 tags you want.
>>>
>>> something like that:
>>>
>>> \define fun(tags)
>>> <$set variable=occ filter="[[$tags]put your filter code 
>>> here...count[]]">Seen <> tiddlers with tags $tags$
>>> \end
>>>
>>> Sometimes, this fun has you coding javascript filter operator. Would 
>>> this be the case here? I have not thought about it yet.
>>>
>>> cheers,
>>>
>>>
>>> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
>>> écrit :
>>>
 Me and my interest in brain age games, I couldn't help but play around 
 with a filter to find all tiddlers that have all four specified tags, but 
 only those four tags.

 You'll find three tiddlers in the attached json.  Download the file, 
 and drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.

 There are all kinds of ways to go about doing this sort of thing, with 
 some filter operators maybe better suited, but I find the result a bit 
 easier for me to understand (more logical to me, or maybe more 
 self-explanatory, because of the way my brain works, I suppose.)  Maybe 
 just a difference between top-down view vs bottom-up view or something ...

 Yeah, I find filters fun.

>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/90e82076-b3c0-4296-ab56-050b2398414dn%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Álvaro
I don't know if they are loving that or not. The commas aren't easy to see 
between brackets (for me). If I begin on end of filter run, i also have 
this problem. But any can build his/her mental shorcuts to avoid it. If 
someone can't solve a problem, maybe he/she can create a "alternative way"

Yes, I tried with the tagging operator and I see that behaviour.

El viernes, 24 de septiembre de 2021 a las 18:52:36 UTC+2, 
jn.pierr...@gmail.com escribió:

> I was thinking that the tagging operator was the zay to get tiddlers that 
> all share all of the tags in input. That's what the dec say: "output: the 
> titles of any tiddlers that carry the input tags".
>
> So my function would be:
>
> \define fun(tags)
> <$vars four="[tags[]count[]match[4]]">
> <$set variable=occ filter="[[$tags$]tagging[] :filter]">Seen <> 
> tiddlers with tags $tags$
> 
> \end
>
>  But in fact the effect of tagging is "output: the titles of any tiddlers 
> that carry ANY OF the input tags". Too bad for the instance. But I think a 
> correction in the doc would be welcome.
>
>
> Le vendredi 24 septembre 2021 à 10:59:50 UTC+2, Jean-Pierre Rivière a 
> écrit :
>
>> That's fine by me.
>>
>> And yes filters are fun even if sometimes a bit tricky.
>>
>> So for the fun of it, you could arrange your filter so that the input 
>> would be the 4 tags you want.
>>
>> something like that:
>>
>> \define fun(tags)
>> <$set variable=occ filter="[[$tags]put your filter code 
>> here...count[]]">Seen <> tiddlers with tags $tags$
>> \end
>>
>> Sometimes, this fun has you coding javascript filter operator. Would this 
>> be the case here? I have not thought about it yet.
>>
>> cheers,
>>
>>
>> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
>> écrit :
>>
>>> Me and my interest in brain age games, I couldn't help but play around 
>>> with a filter to find all tiddlers that have all four specified tags, but 
>>> only those four tags.
>>>
>>> You'll find three tiddlers in the attached json.  Download the file, and 
>>> drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.
>>>
>>> There are all kinds of ways to go about doing this sort of thing, with 
>>> some filter operators maybe better suited, but I find the result a bit 
>>> easier for me to understand (more logical to me, or maybe more 
>>> self-explanatory, because of the way my brain works, I suppose.)  Maybe 
>>> just a difference between top-down view vs bottom-up view or something ...
>>>
>>> Yeah, I find filters fun.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/a7516220-72de-484d-adaf-b36aacd29c3cn%40googlegroups.com.


Re: [tw5] Re: Question about the TiddlyWiki GG

2021-09-24 Thread Álvaro
Sorry for this late reply, now i rarely visit GG (here or in TiddlyTalk)

I've seen your rejection to tiddlytalk and your reasons. I understand them 
but also I think that you could have made a hasty decision. I also think 
that the edit of posts was a hasty decision. In your analogy there are some 
point that, IMHo; you don't take into account. They are about how we learn: 
with lessons/errors and with time to understand well the situation. The 
errors can be similar but they necessarily are equal, although the origin 
of annoyance was the same. Jack didn't have time to learn about it. 
TiddlyTalk also is a forum in "construction". The new options avaible in 
TiddlyTalk need to be carefully evaluated, but with so many options the 
community need more time to use them "correctly".

About your problem with the UI, I don't know how much could be mitigated so 
that it would not be annoying for you. Maybe with more details the 
"experts" (I'm not one) in Discouse can help you. The admin team also is 
work hard to see how solve the requirement of community. 


El jueves, 16 de septiembre de 2021 a las 16:06:30 UTC+2, cj.v...@gmail.com 
escribió:

> Well, personal cognitive issues regarding TiddlyTalk aside, edit of posts 
> by moderators, in and of itself, is reason enough for me to not participate 
> in a forum.
>
> That kind of thing goes against my personal I.T. philosophies ("protect 
> the system", "protect the users from bad system behaviour", "don't mess 
> with the users data unless asked to mess with it", "don't break things", 
> "no surprises", "no hidden interfaces", yadda yadda yadda.)
>
> Deletion of any posts that are not in line with terms of use policies, 
> that I totally agree with.  Tagging posts to make them easy to find, that's 
> very cool.
>
> And views vary depending on the thing.  Forum vs Wiki vs Blog vs whatever.
>
> Doesn't matter.  I'll stop harping about it.
>
>
>
> On Thu, Sep 16, 2021 at 10:31 AM Jeremy Ruston  
> wrote:
>
>> Hi CJ
>>
>> Thanks for the confirmation, Jeremy.  That is the way I like things.
>>
>> And the push I needed to bail on TiddlyTalk completely.
>>
>>
>> I think the incident was a momentary misjudgement on the part of an 
>> individual. It has led to a healthy discussion about what users expect when 
>> they write a post, and I think the conclusion is that the power to edit 
>> should only be used in exceptional circumstances. The admins have always 
>> had the power to delete posts and avoided exercising it except for spam, 
>> and so I don't see a reason to think that the new power to edit posts would 
>> be abused either.
>>
>> But of course I understand from your comments elsewhere that you have 
>> other concerns with talk.tiddlywiki.org about usability and simplicity 
>> which may well be more significant factors in your decisions. I'd just like 
>> to say that it is an experiment; we're feeling our way to what is right for 
>> this community, and so necessarily it will take a little time for things to 
>> settle down.
>>
>> Best wishes
>>
>> Jeremy
>>
>>
>> Re TiddlyTalk, I don't know which is worse:  that people's posts can be 
>> edited by moderators, or that there is no clear "Terms of Use" or other 
>> indicator that posts can be edited by moderators.  I recommend that 
>> TiddlyTalk make it very clear that moderators can and do edit posts, and 
>> make it very clear what the intent and related policies are.
>>
>> BTW, it isn't about trust.  Sure I trust the moderators.  I also trust 
>> that to err is human.  We are human
>>
>> An analogy:
>>
>> Jack arrives at the pub with two black eyes, and the lads ask: "What's 
>> with the black eyes?"
>>
>> Jack points at his left one and says:  "I was at the concert in the park 
>> last night.  In front of me is a lady in a summer dress, and she has a 
>> serious wedgie, the dress right up the crack of the bum and it looks 
>> ridiculously uncomfortable.  So I decided to help her out by gently tugging 
>> on the dress at bum level to remove the wedgie.  That's when she turned 
>> around and punched me right in the left eye."
>>
>> The lads:  "Oh man.  You moron.  Why the right black eye?"
>>
>> Jack:  "When I came to, I realized that I had really upset the lady, and 
>> I felt awful about it.  So after I got up off the ground, I stuck out these 
>> three fingers with my hand like so, and poked the dress back in."
>>
>> The intentions may be good, but are they appropriate?
>>
>> Just because one can do something, should one really do it?
>>
>> And if you have given yourself the right to do something, should that 
>> right be very well indicated and should there be an opportunity for 
>> consent?  (i.e. if the user does not give consent, then user cannot join.)
>>
>> Something like that.
>>
>> On Thursday, September 16, 2021 at 9:31:57 AM UTC-3 jeremy...@gmail.com 
>> wrote:
>>
>>> Hi CJ
>>>
>>> That's correct, Google Groups allows admins to delete posts and to reply 
>>> to the author, but nothing else.

[tw5] pmario's file-backups not working in firefox with tw classic

2021-09-24 Thread John Rouillard

Hi all:
At some point in the past 4 months or so I lost the ability to save a 
twclassic
tiddlywiki with pmario's file-backups addon.

I get the following screen:
[image: 2021-09-24 12_39_59-tbGTD - a tiddlywiki based system to Get Things 
Done — Mozilla Firefox.png]

this happens even if I restart the browser so the file is a fresh load.
  * the file is readable/writable.
  * the pathname is fine under: 
/c/Users/username/Downloads/tiddlywiki/tbGTD/tbGTD.html where username is 
lower case ascii characters no spaces etc.
  * the file is in the same place
  * the configured backup subdirectory is readable and writable as are all 
the backups
 in the directory.
If I load another instance of the same file in my browser, the file loads 
fine, but I
don't get a warning that there are two instances loaded.

The popup for file-backup is:

[image: file_backup_panel.png]

I am not sure why there is an '!' button there. Clicking on it changes the 
text to "Got it" and changes the 'homepage & support' text to "New Version 
Available?"

Environment: Firefox 92.0.1 (64 bit), file-backup 0.4.0, windows 10.
The TW version is: 2.5.3 from Aug 18, 200 with tbGTD installed.

Anybody got an idea how to fix this?

Thanks.

-- rouilj

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/0f297722-0e68-4dda-8023-e7c9a51656den%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Jean-Pierre Rivière
I was thinking that the tagging operator was the zay to get tiddlers that 
all share all of the tags in input. That's what the dec say: "output: the 
titles of any tiddlers that carry the input tags".

So my function would be:

\define fun(tags)
<$vars four="[tags[]count[]match[4]]">
<$set variable=occ filter="[[$tags$]tagging[] :filter]">Seen <> 
tiddlers with tags $tags$

\end

 But in fact the effect of tagging is "output: the titles of any tiddlers 
that carry ANY OF the input tags". Too bad for the instance. But I think a 
correction in the doc would be welcome.


Le vendredi 24 septembre 2021 à 10:59:50 UTC+2, Jean-Pierre Rivière a 
écrit :

> That's fine by me.
>
> And yes filters are fun even if sometimes a bit tricky.
>
> So for the fun of it, you could arrange your filter so that the input 
> would be the 4 tags you want.
>
> something like that:
>
> \define fun(tags)
> <$set variable=occ filter="[[$tags]put your filter code 
> here...count[]]">Seen <> tiddlers with tags $tags$
> \end
>
> Sometimes, this fun has you coding javascript filter operator. Would this 
> be the case here? I have not thought about it yet.
>
> cheers,
>
>
> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
> écrit :
>
>> Me and my interest in brain age games, I couldn't help but play around 
>> with a filter to find all tiddlers that have all four specified tags, but 
>> only those four tags.
>>
>> You'll find three tiddlers in the attached json.  Download the file, and 
>> drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.
>>
>> There are all kinds of ways to go about doing this sort of thing, with 
>> some filter operators maybe better suited, but I find the result a bit 
>> easier for me to understand (more logical to me, or maybe more 
>> self-explanatory, because of the way my brain works, I suppose.)  Maybe 
>> just a difference between top-down view vs bottom-up view or something ...
>>
>> Yeah, I find filters fun.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/45d80329-bd90-4d7f-b981-c090c9cc64e5n%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Charlie Veniot
I just discovered the other thing that causes me problems: lack of 
proximity.

I do find it difficult looking at "Tag 4" in that filter and not seeing the 
filter operator right before it.  So I see the comma, and I backtrack away 
from "Tag 4" to figure out the filter operator is "tag".

That back and forth, like long scrolls up and down in a browser window, or 
back and forward buttons on browsers, all cause dysfunction for this kid.

Thanks, Álvaro.  You just helped me understand a little something there 
about how I process things, or rather when I can't process things...
On Friday, September 24, 2021 at 1:28:11 PM UTC-3 Charlie Veniot wrote:

> Oh man, that is pretty awesome.  I can see the majority of the folk loving 
> that.
>
> But you're right, for my disability, that isn't explicit enough for me to 
> distinguish what's going on.
>
> Too many ways of specifying individual tags, and I start getting into some 
> cognitive overload.  I'm the same way when facing a Chinese food buffet, 
> always holding up the line because of too many choices.
>
> Regardless, that is pretty awesome for normal folk who can bounce between 
> the different ways the tag operator can be used.
>
>
> On Friday, September 24, 2021 at 12:39:53 PM UTC-3 Álvaro wrote:
>
>> It works fine. I tried to find a alternative, but I wasn't lucky.
>>
>> When I resee your filter, I remember about the multiple parameters in 
>> filter operator with commas (from last version, 5.1.23). And we can add a 
>> second filter run that it applies your filter to result of first run. Then 
>> you can rewrite your filter something like this (in filtering transclusion)
>> {{{  [tag[Tag 1]*,*[Tag 2],[Tag 3],[Tag 4]]  
>> :filter[tags[]count[]compare:eq[4]]  }}}
>>
>> Although maybe it be less understandble for you.
>>
>>
>> El viernes, 24 de septiembre de 2021 a las 10:59:50 UTC+2, 
>> jn.pierr...@gmail.com escribió:
>>
>>> That's fine by me.
>>>
>>> And yes filters are fun even if sometimes a bit tricky.
>>>
>>> So for the fun of it, you could arrange your filter so that the input 
>>> would be the 4 tags you want.
>>>
>>> something like that:
>>>
>>> \define fun(tags)
>>> <$set variable=occ filter="[[$tags]put your filter code 
>>> here...count[]]">Seen <> tiddlers with tags $tags$
>>> \end
>>>
>>> Sometimes, this fun has you coding javascript filter operator. Would 
>>> this be the case here? I have not thought about it yet.
>>>
>>> cheers,
>>>
>>>
>>> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
>>> écrit :
>>>
 Me and my interest in brain age games, I couldn't help but play around 
 with a filter to find all tiddlers that have all four specified tags, but 
 only those four tags.

 You'll find three tiddlers in the attached json.  Download the file, 
 and drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.

 There are all kinds of ways to go about doing this sort of thing, with 
 some filter operators maybe better suited, but I find the result a bit 
 easier for me to understand (more logical to me, or maybe more 
 self-explanatory, because of the way my brain works, I suppose.)  Maybe 
 just a difference between top-down view vs bottom-up view or something ...

 Yeah, I find filters fun.

>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/3ba7651c-a163-4b98-be43-ad9089a10209n%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Charlie Veniot
Oh man, that is pretty awesome.  I can see the majority of the folk loving 
that.

But you're right, for my disability, that isn't explicit enough for me to 
distinguish what's going on.

Too many ways of specifying individual tags, and I start getting into some 
cognitive overload.  I'm the same way when facing a Chinese food buffet, 
always holding up the line because of too many choices.

Regardless, that is pretty awesome for normal folk who can bounce between 
the different ways the tag operator can be used.


On Friday, September 24, 2021 at 12:39:53 PM UTC-3 Álvaro wrote:

> It works fine. I tried to find a alternative, but I wasn't lucky.
>
> When I resee your filter, I remember about the multiple parameters in 
> filter operator with commas (from last version, 5.1.23). And we can add a 
> second filter run that it applies your filter to result of first run. Then 
> you can rewrite your filter something like this (in filtering transclusion)
> {{{  [tag[Tag 1]*,*[Tag 2],[Tag 3],[Tag 4]]  
> :filter[tags[]count[]compare:eq[4]]  }}}
>
> Although maybe it be less understandble for you.
>
>
> El viernes, 24 de septiembre de 2021 a las 10:59:50 UTC+2, 
> jn.pierr...@gmail.com escribió:
>
>> That's fine by me.
>>
>> And yes filters are fun even if sometimes a bit tricky.
>>
>> So for the fun of it, you could arrange your filter so that the input 
>> would be the 4 tags you want.
>>
>> something like that:
>>
>> \define fun(tags)
>> <$set variable=occ filter="[[$tags]put your filter code 
>> here...count[]]">Seen <> tiddlers with tags $tags$
>> \end
>>
>> Sometimes, this fun has you coding javascript filter operator. Would this 
>> be the case here? I have not thought about it yet.
>>
>> cheers,
>>
>>
>> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
>> écrit :
>>
>>> Me and my interest in brain age games, I couldn't help but play around 
>>> with a filter to find all tiddlers that have all four specified tags, but 
>>> only those four tags.
>>>
>>> You'll find three tiddlers in the attached json.  Download the file, and 
>>> drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.
>>>
>>> There are all kinds of ways to go about doing this sort of thing, with 
>>> some filter operators maybe better suited, but I find the result a bit 
>>> easier for me to understand (more logical to me, or maybe more 
>>> self-explanatory, because of the way my brain works, I suppose.)  Maybe 
>>> just a difference between top-down view vs bottom-up view or something ...
>>>
>>> Yeah, I find filters fun.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/0ce46048-5cfe-4fb3-b5b9-3d5367fcd007n%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Álvaro
It works fine. I tried to find a alternative, but I wasn't lucky.

When I resee your filter, I remember about the multiple parameters in 
filter operator with commas (from last version, 5.1.23). And we can add a 
second filter run that it applies your filter to result of first run. Then 
you can rewrite your filter something like this (in filtering transclusion)
{{{  [tag[Tag 1]*,*[Tag 2],[Tag 3],[Tag 4]]  
:filter[tags[]count[]compare:eq[4]]  }}}

Although maybe it be less understandble for you.


El viernes, 24 de septiembre de 2021 a las 10:59:50 UTC+2, 
jn.pierr...@gmail.com escribió:

> That's fine by me.
>
> And yes filters are fun even if sometimes a bit tricky.
>
> So for the fun of it, you could arrange your filter so that the input 
> would be the 4 tags you want.
>
> something like that:
>
> \define fun(tags)
> <$set variable=occ filter="[[$tags]put your filter code 
> here...count[]]">Seen <> tiddlers with tags $tags$
> \end
>
> Sometimes, this fun has you coding javascript filter operator. Would this 
> be the case here? I have not thought about it yet.
>
> cheers,
>
>
> Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a 
> écrit :
>
>> Me and my interest in brain age games, I couldn't help but play around 
>> with a filter to find all tiddlers that have all four specified tags, but 
>> only those four tags.
>>
>> You'll find three tiddlers in the attached json.  Download the file, and 
>> drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.
>>
>> There are all kinds of ways to go about doing this sort of thing, with 
>> some filter operators maybe better suited, but I find the result a bit 
>> easier for me to understand (more logical to me, or maybe more 
>> self-explanatory, because of the way my brain works, I suppose.)  Maybe 
>> just a difference between top-down view vs bottom-up view or something ...
>>
>> Yeah, I find filters fun.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/42343ad0-6a2a-4b0f-a6d6-cc975235272fn%40googlegroups.com.


[tw5] Re: WikiLabs plugin update + New plugins

2021-09-24 Thread PMario
On Friday, September 24, 2021 at 2:12:39 PM UTC+2 TiddlyTweeter wrote:

Would it be okay to open a discussion thread about its practical use on Your 
> GitHub ?
>

Sure. You can open a discussion: 
https://github.com/wikilabs/plugins/discussions 

-mario

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/996c32bb-c8e1-4059-98a4-171b357d447cn%40googlegroups.com.


[tw5] Re: WikiLabs plugin update + New plugins

2021-09-24 Thread TiddlyTweeter

>
> PMario wrote ...
> Data tiddlers have advantages for some usecases and disadvantages for 
> others. ... I think the concept of dadatiddlers can only be removed if we 
> can create something, that is adequate but works with tiddlers. At the 
> moment we don't have such a mechanism.
>

Right. Your KEYVALUES PLUGIN  looks 
most interesting. I flirted with it before but couldn't understand it well. 

I'm a bit of an idiot so need some hand-holding at first. 

Would it be okay to open a discussion thread about its practical use on Your 
GitHub ?

Best, TT

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/cb8391b0-d767-4fdd-b875-46932069ffb1n%40googlegroups.com.


[tw5] Re: WikiLabs plugin update + New plugins

2021-09-24 Thread TiddlyTweeter
Stobot wrote:

> @pmario - ... I had it setup one tiddler per user (all 26,000 of us) and 
> searching was painful. I instead dumped the same information into a 
> datatiddler with just the userid as the key, and a delimited string of 
> fields as the value, and your keyvalues filter operator allows me to search 
> *instantly*.


I just want to comment: *that* is extremely useful to know!

Tx, TT

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/7dd4c43f-fdcc-4167-bdde-675c33c549e3n%40googlegroups.com.


[tw5] Re: Cannot use a variable from a filter. Can someone help me ?

2021-09-24 Thread Jean-Pierre Rivière
Yes it does trigger a javascript exception.

The following code does the things you want, if I have well understood your 
goal.

<$vars target="<>">
<$wikify name=todayfilter text="
 [get[task_date]match[<>]]">
<> : <>



<$list filter="[regexp[db___]!sort[task_start_time]filter]">

<$link><$view field="task_date"/>
<$view field="tags"/>
<$view field="task_comment"/>
<$view field="task_start_time"/>
<$view field="task_end_time"/>





Le lundi 23 août 2021 à 14:37:20 UTC+2, vpl a écrit :

> You are obviously right ... thanks
> But even with that *I still get an Tiddly exception*
> FOr your convenience I've prepared a small tiddly with the code (tiddler 
> test) as an attachment
>
> Open the *test *tiddler and replace the 
> <$vars todayfilter="[get[task_date]match[2021-08-23]]">
> by
> <$vars todayfilter="[get[task_date]match]">
>
> You will get a javascript exception as I mentioned in the previous posts 
> of this conversation
>
> Is it a bug ?
>
> Thanks for your help
>
> Regards
>
> Le lundi 23 août 2021 à 14:25:36 UTC+2, Eric Shulman a écrit :
>
>> On Monday, August 23, 2021 at 5:13:22 AM UTC-7 vpl wrote:
>>
>>> Thanks a lot; I agree for 1), 3) and 4)
>>> But for point 2) in fact what I need to do is the following code 
>>> <$vars now_date=<>>
>>> <>
>>> <$vars todayfilter="[get[task_date]match]">
>>>
>> I use the *filter *operator into the list as I want to filter the 
>>> tiddlers based on the *task_date * field
>>> For each of the filtered tiddlers I display the fields in the table
>>>
>>
>> Ah, yes...I see now.  You *do* want to find *all* tiddlers that have a 
>> "task_date" field, not just check the current tiddler.
>>
>> More, When I try the below code I get a Tiddler exception (attached in my 
>>> previous post ...)
>>>
>> Is there a bug in the *filter *operator or something wrong I'm doing ?
>>>
>>
>> I think you missed a change on line 1.  Instead of:
>> <$vars now_date=<>>
>> you want:
>> <$vars target=<>> 
>>
>> -e
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/3d7aceab-6219-427b-b033-0d769bb2db6an%40googlegroups.com.


[tw5] Re: Just a Filtering Code Pattern

2021-09-24 Thread Jean-Pierre Rivière
That's fine by me.

And yes filters are fun even if sometimes a bit tricky.

So for the fun of it, you could arrange your filter so that the input would 
be the 4 tags you want.

something like that:

\define fun(tags)
<$set variable=occ filter="[[$tags]put your filter code 
here...count[]]">Seen <> tiddlers with tags $tags$
\end

Sometimes, this fun has you coding javascript filter operator. Would this 
be the case here? I have not thought about it yet.

cheers,


Le vendredi 24 septembre 2021 à 03:54:34 UTC+2, cj.v...@gmail.com a écrit :

> Me and my interest in brain age games, I couldn't help but play around 
> with a filter to find all tiddlers that have all four specified tags, but 
> only those four tags.
>
> You'll find three tiddlers in the attached json.  Download the file, and 
> drag into some TiddlyWiki instance (TiddlyWiki.com !) to take a gander.
>
> There are all kinds of ways to go about doing this sort of thing, with 
> some filter operators maybe better suited, but I find the result a bit 
> easier for me to understand (more logical to me, or maybe more 
> self-explanatory, because of the way my brain works, I suppose.)  Maybe 
> just a difference between top-down view vs bottom-up view or something ...
>
> Yeah, I find filters fun.
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/097b783f-52c6-42f7-b0b5-9ed35c9198den%40googlegroups.com.