Native support for TRY/EXCEPT functionality

The plan is to add support for native IF/ELSE syntax in RF ~3.3~ 4.0. See the discussion in #3074 for background information why we think adding this kind of programmatic features is a good idea. Another similar and commonly needed feature is TRY/EXCEPT functionality to ease handling errors. Currently it is possible to use Run Keyword And Expect Error and Run Keyword And Ignore error but they are awkward similarly as Run Keyword If is an awkward replacement for IF/ELSE syntax.
Exact semantics how TRY/EXCEPT will work are not yet clear. They will be decided later before implementation starts. A precondition is a new parser, similarly as for IF/ELSE, and we also consider IF/ELSE more important and will start implementing it first.

Just an idea:
At the moment we have already TRY/FINALLY with teststeps and Teardown.
Teardown can be on every level.
What is missing is only a [On-Error] setting.
If we would have this [On-Error] we could also do stuff like capture screenshots there and closing connections an so on.
I personally would not like to see a real TRY/EXCEPT like IF/ELSE, because the we start re-implementing Python.
[On-Error] is also understandable for non programmers.
*** Test Cases ***
Test
    [Setup]     Open Browser.   http://example.com
    Do Keyword
    Some Other Test
    [On-Error]    Save error log and capture Screenshot
    [Teardown]    Close All Browsers

Same could work on Suite and on Keyword Level.
*** Settings ***
Suite Setup   Open Browser
Error Handler    Save error log and capture Screenshot
Suite Teardown    Close All Browsers

I've been thinking about adding an on-error handler but nowadays I think TRY/EXCEPT would probably be better. Some of the problems I see with on-error handler:

Unless on-error can also ignore the error, it's not really different from teardown with Run Keyword If Test Failed.
If on-error should be able to ignore errors, it needed to get exception information as argument to be able to do decisions based on that.
One test (or keyword) could only have one on-error handler. If there were multiple possible errors to handle, the handler would get complicated.

I got a feeling TRY/EXCEPT would be a lot more generic solution. In simple cases on-error might be easier to understand, but in more complex scenarios TRY/EXCEPT would be a lot more flexible.
I also don't see problems in Robot's syntax moving towards a general very high level programming language. After replacing Run Keyword If with IF/ELSE and Run Keyword And Expect/Ignore Error with TRY/EXCEPT, we can look at replacing Exit/Continue For Loop with BREAK/CONTINUE, [Return] and Return From Keyword with RETURN, and so on.

How does this relate to expecting an error to happen? In otherwords many cases in tests the situation is so that an error must happen as expected, test should fail if not.

We could support TRY/EXPECT/ELSE like Python to support that use case.

One of the strongest selling points of Robot Framework is the simplicity for people coming from a non-IT-background. I think we should consider how easy a new core concept is to learn and how easy it is to teach.
TRY/EXCEPT goes some steps towards more complex concepts.

I do see usecases for Try/Except but these are mostly better done in python.
I always hate it when i see testspecs with try catch in it. People try to implement execution logic into test design.
@pekkaklarck you mentioned the "Run Keyword If Test Failed" this imho does not work on keyword level. But there are imho regular cases where you want to clean up or do stuff if something fails. And  using TRY EXCEPT for this would imho be too technical. 🤷🏻♂

+1 for this feature. There are valid use-cases for this in RPA. Right now the only way to handle errors is awkward Run Keyword And Expect Error

Definitely coming more and more of an issue, so nice to see this as critical v5 content.

This feature has been developed in a branch and is getting ready to be merged. The basic functionality works like this:
TRY
    Some keyword
EXCEPT    Error message
    Error handler keyword
END

If Some keyword passes, the EXCEPT branch isn't run. If it fails with message Error message, the EXCEPT branch is executed. If it fails any other way, error is not handled. Any branch could naturally have more than one keyword.
There can be more than one EXCEPT branches. In that case they are matched one by one and the first one matching is executed. One EXCEPT can also have multiple messages to match. If it has no messages to match, it matches any:
TRY
    Some keyword
EXCEPT    Error message
    Error handler 1
EXCEPT    Alternative error
    Error handler 2
EXCEPT    Another error    One more error    # Match either of these
    Error handler 3
EXCEPT    # Match anything
    Error handler 3
END

By default matching the error requires an exact match. That can be changed by prefixing the message with glob:, regexp: or starts: to make the match a glob pattern match, regular expression match, or to match only the beginning of the error, respectively. If with patterns you are interested in the actual error message, you can assign it to a variable similarly as you can use except Exception as err in Python:
TRY
    Some keyword
EXCEPT    glob: Error *    AS    ${err}
    Log to console    Ignoring error: ${err}
END

Assigning to a variable works also if you don't specify the message at all i.e. when all messages match:
TRY
    Some keyword
EXCEPT    AS    ${message}
    Log to console    Error occurred: ${message}
END

It's possible to handle the case when there's no error using an ELSE branch like in Python:
TRY
    Some keyword
EXCEPT    Message
    Error handler keyword
ELSE
    Log to console    No error!
END

Using ELSE without any EXCEPT branches is a syntax error.
Finally, it's possible to execute code both when there's an error and when there isn't by using a FINALLY branch:
TRY
    Some keyword
EXCEPT    AS    ${err}
    Log to console    Error occurred: ${err}
ELSE
    Log to console    No error occurred.
FINALLY
    Log to console    Finally we are in FINALLY.
END

It is allowed to use FINALLY without EXCEPT branches. Such TRY/FINALLY structures can be used for cleaning up resources regardless are there failures or not:
Open connection
TRY
    Use connection
FINALLY
    Close connection
END

Although this is mostly ready, there are still some design decisions that are still somewhat open. I'm going to write about them in separate comments.

When matching error messages, we have decided to require an exact match by default. That's different compared to Run Keyword And Expect Error that used glob patterns by default. A problem with glob patterns is that if the error contains meta-characters *, ? or [] results can be strange. This is the reason Run Keyword And Expect Error got support for other matching approaches in RF 3.1 (#2967). With TRY/EXCEPT we decided to use safer exact match approach instead and allow same matching configuration as Run Keyword And Expect Error has. One reason we consider requiring an exact match by default is safe is that using EXCEPT without any patterns matches anything so there's no need for something like glob:*.
Although we somewhat firmly believe requiring an exact match by default is the best approach, this design decision is something we can still consider to change if there are good reasons to do so. If you like the current behavior, add :+1: to this comment and in other case add :-1:. Especially in the latter case, please add a comment why you thing the behavior should change.

Related to matching, we could also consider adding other matching strategies than current "equals", "glob", "regexp" and "starts". Things that could be added include "contains" and somehow making matching case-insensitive.
Matching exceptions by their type like type:ValueError could also be convenient. It ought to be relatively easy to implement if library keywords are used directly in the TRY branch, but handling possibly deeply nested user keywords could be more complicated. Even more problematic would be situation where there are multiple failures due to continuable failures or because there is failure both in a user keyword body and in its teardown. Probably in these cases "type" matching could simply always fail.
Add a comment if you think any new matching approach would be useful! They can also be added in future versions based on concrete needs after we get more experience from this new functionality. Adding new prefixes like type: isn't fully backwards compatible but it's very unlikely someone would actually have a message starting like that.

One thing to decide is what the variable created when using the AS  ${err} syntax should actually contain. Currently it contains the error message and that's also what Run Keyword And Expect Error returns.
Alternatively ${err} could be the actual exception that occurred. It would allow more advanced inspection of the occurred error, but it would also make the common case of inspecting or just logging the error message more complicated. For non-technical users suddenly needing to deal with Python exception objects could be really complicated in general.
Yet another approach would be making ${err} our custom object that contains the error message (e.g. as ${err.message}) but also has a reference to the actual exception (e.g. ${err.exception}) and possibly also other information like formatted traceback. Also this would make the most common case of just using the message for something a bit more complicated than the current behavior, but the possibility to inspect the actual exception could be worth that.
We were actually planning to make ${err} a custom object with attributes containing the message and the actual exception as discussed above. This unfortunately turned out to be rather complicated. The main problem is that when there are continuable failures, or when a user keyword fails both in its body and in its teardown, there are multiple exceptions. In such cases ${err.exception} needed to be a tuple or a custom object containing references to all occurred errors. This would be hard to implement properly and it would be very hard to use ${err.exception} if you don't know what it actually contains.
Due to the problems explained above, we decided to make ${err} just the error message. Robot does pretty good job in formatting the message nicely also if there are multiple failures so even non-technical users ought to be able to handle them. ${err} being the exact same error message you see in the log file ought to make using this anyway pretty advanced functionality a bit easier in general. If more fine-grained control is needed, it can be done in Python level.
If you see big benefits in having access to the actual exception. please add a comment explaining concrete use cases. If there turns out to be lot of needs for it, we can still take another look at implementing it. You can also add :+1: and :-1: to this comment depending on do you like the current behavior of making ${err} just the message or not.

Will there be changes to the output.xml schema because of this? Just trying to ponder the impact to RF Jenkins plugin
ping @asimell

Yes, there are going to be new nodes in output.xml. What exactly is still subject to change. Old nodes ought to not be changed.

The branch where this has been developed has now been merged to master. There were still few smallish things to be fixed and fine tuned and @yanne is currently working with them. After that there are these known open tasks:

[ ] Decide should output.xml use <tryblock> or <block type='try'>. We currently use the former which means we have separate node types for TRY, EXCEPT, ELSE and FINALLY. The latter would mean we'd only get one new node type <block> with type attribute separating different block types.
[ ] Update output.xml schema.
[ ] Update schema compatibility tests to tests also TRY/EXCEPT.
[ ] Test (and fix) using TRY/EXCEPT with templates. There's no clear use case for such functionality so we probably should explicitly prohibit it.

The TRY/EXCEPT functionality has been ready for some time, but there have still be some changes lately to the code, most importantly to various model objects representing TRY/EXCEPT structures. Now everything ought to be done for good, except for documentation. Once that is done and few other issues ready, we'll create alpha 1 to make it easier for everyone to test it. Hopefully the alpha is ready before the new year, but now we'll have a little Xmas break! :gift:

I've been writing documentation for this functionality and one thing I found somewhat annoying to explain is different matching strategies. I do believe it's useful that we support exact matching, glob patterns and regexps, but I'm not sure do we need to support STARTS: Example when its possible to use GLOB: Example*. I'm not entirely happy with the syntax that requires using a prefix like GLOB: ValueError: *. Could the pattern type be specified, for example, using a separate argument? It could be something like this:
TRY
    Something
EXCEPT    ValueError: *    type=glob
    Error Handling
END

This isn't any less verbose than what we currently have, but perhaps its a bit more readable. It would mean that if an EXCEPT has multiple messages, they'd all must use the same type. For example, we currently support
EXCEPT    GLOB: ValueError: *    GLOB: TypeError: *    REGEXP: Error \\d+
    Error Handling

and with a separate type argument that needed to be written like
EXCEPT    ValueError: *    TypeError: *    type=glob
    Error Handling
EXCEPT    Error \\d+    type=regexp
    Error Handling

I kind of like the separate  type= argument better than the type prefix, but don't see a big difference between them. The old Run Keyword And  Except Error keyword supporting prefixes could be a big enough reason to go with that approach. It would make it easier to replace usages of that keyword with the new native TRY/EXCEPT functionality.
Other alternatives I've had in mind:

Some less verbose prefix like *=. A problem is that you cannot really know what *= ValueError: * means unless you read the documentation. A benefit of GLOB: is that it's pretty explicit.
Make it a default to match the message first as an exact match and then as a glob match. Then we'd need a prefix only with regexps (REGEXP: foo.*bar) or when limiting matching only to exact match (EQUALS: foo*bar) or to glob patterns (GLOB: foo*bar).
Use /pattern/ with regexps. Globs could get their own syntax like |pattern| or we could make it a default to match the pattern first as an exact match and then as a glob as discussed above.
Use something else than EXCEPT when with glob and regexps. Could be EXCEPT GLOB, EXCEPT/GLOB or just GLOB. I don't like having more reserved words in our syntax too much, and this isn't any less verbose than what we have currently.

The above discussion covered many related but different topics:

Do we need functionality match only the start of the message or is it enough to have glob matches?
Are type prefixes fine or should we try to come up with something better?
Should the default match strategy try both exact matching and glob pattern matching?

In my previous comment I discussed the AS ${var} variable and should it be just the error message or an object having attributes containing the message, the original error, traceback, etc. We decided to go with just the message for the following reasons:

It's easiest to understand for users.
There likely aren't many cases where the actual error or the traceback aren't needed. Generally it's better to have the logic in a library when such information is needed.
There are cases where multiple errors occur (continuable failures, failure both in a user keyword its teardown) and in such cases there couldn't really be ${err.exception} attribute referring to the occurred error. We thought about wrapping multiple errors into some custom error object and using ${err.exceptions} instead, but all these solutions would have just made both usage and implementation considerably harder.

As I wrote above, the AS ${var} variable nowadays contains just the error message. When using regular expressions and especially when the pattern contains capturing groups, it could be handy if the variable would be the match object. Consider this example:
TRY
    Something
EXCEPT    REGEXP: Error (\\d+) occurred    AS    ${match}
    Log    Error number was: ${match.group(1)}
END

Possibilities we could do:

Always use the occurred error as the variable values. It's possible to use Should Match Regexp keyword separately to match regular expressions with capturing groups.
Make the variable the match object with regular expressions and use error message with other matching strategies.
Make the variable the match object with regular expressions if the pattern contains capturing groups, use error message in all other cases. Basically using capturing groups would mean opting in for getting mach objects.

I like the readability of the type prefix over the separate argument. To me it puts the information about type right alongside of the expression for matching. I could see how it restricts the flexibility of the overall usage but for me that readability wins out.
On a different note a couple of items ..
First the combination of ignore_case argument with specifically the REGEX: matching, as shown here
TRY
    Something
EXCEPT    Error \\d+ occurred   type=regexp    ignore_case=True
    Error Handling
END

would seem problematic. I would think one doing regular expression would express the desire for ignore case within the regular expression it self. What if the regular expression specific said to include case information?
Second, could you use a syntax like
TRY
    Something
EXCEPT    ValueError: *    TypeError: *    type=glob
EXCEPT    Error \\d+    type=regexp
    Error Handling 1
EXCEPT    Alternative error
    Error handler 2
END

where you have consecutive exception lines (or ones with no body in between but just say comments) to allow for different exceptions to use the same keywords to handle various different errors?

It's true that regular expressions support case-insensitive matching. Unfortunately when you only can specify a pattern, not flags, you need to embed this information to the pattern like (?i)Example. It works but ignore_case=True is certainly easier to understand than (?i). A bigger benefit would be that ignore_case=True would also work with other matching strategies.
I don't actually care too much about GLOB: vs. type=glob´, but an option to make matching case-insensitive would be handy. CASE-INSENSITIVE: Errorand especiallyGLOB: CASE-INSENSITIVE: Error *` doesn't feel too good.

Decisions related to open questions listed above:

We use prefixes for specifying the expected message pattern type but can consider other alternatives still before the release. Assuming prefixes would continue to work, we support for configuration like regexp=True could be added also in future versions without much backwards compatibility problems.
We keep the AS variable as a string regardless the pattern type. Changing it to a regular match object with regexps if the pattern has groups can still be considered.
We disallow using RETURN, BREAK and CONTINUE in FINALLY. Pass Execution will still work.

All open issues ought to now be covered. We can consider this issue done.

I reopen this due to a bug in parsing EXCEPT with AS with data_only=False. This bug was initially reported as #4208 by @d-biehl and there's PR #4209 by him to fix the problem as well.

The reported bug has now been fixed.

We decided to add a support to limit how many times WHILE loops are executed to avoid endless loops. This limit is specified using limit=<value> like this:
WHILE    ${condition}    limit=1 minute
    # ...
END

Now that we use option=value syntax with WHILE, it would be a good idea to use same syntax also with EXCEPT when controlling the pattern type. This is very late in RF 5.0 release cycle and we should already have the release out, but I believe it's better to change syntax still before the first release where TRY/EXCEPT is introduced than changing it later.

My thinking is that the pattern type would be specified using pattern option. If should follow the actual pattern or patterns, but be before the AS part. If there are multiple patterns, the pattern configuration would apply to them all. In practice it would work like this:
TRY
    Keyword
EXCEPT    Error: *    pattern=glob
   Handler 1
EXCEPT    (Another|Second) Error    Second [Pp]attern    pattern=regexp    AS    ${error}
    Handler 2
END

Things to decide:

Should we use pattern or something else like type?
Do we need to support matching only the start of the error message? We do that now, but just adding * at the end and using glob patterns is easy as well.
What exact value to use with regular expressions? Possible we could support both regex, and regexp.
What about case insensitivity? Should it be supported like pattern=case-insensitive  or should we add another option that could be used like case_insensitive=True?

Decisions:

New pattern type syntax was implemented in bb4b01ec560b641d8cfe48f141d989afa9a59154.

Documentation and few more smallish fixes done in above commit. Closing.


pull request for e2e test at 01/03/2017 03:45:09

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


fix: volatile expressions should not be target of common subexpt elimination

Which issue does this PR close?

Closes #8518.
Rationale for this change

What changes are included in this PR?

Are these changes tested?

Are there any user-facing changes?

The "resolve" pass should probably run before other optimizers then, right? So maybe it's even safe to error out if we hit an unresolved function here.

Yes, I agree this is a good idea. The resolution should run before the optimizers (we have it as part of the analysis pass at the moment)

Should I remove the resolution from the analyser and put it outside /
before ?
On Wed, 13 Dec 2023 at 10:56, Andrew Lamb @.***> wrote:

The "resolve" pass should probably run before other optimizers then,
right? So maybe it's even safe to error out if we hit an unresolved
function here.
Yes, I agree this is a good idea. The resolution should run before the
optimizers (we have it as part of the analysis pass at the moment)
—
Reply to this email directly, view it on GitHub
https://github.com/apache/arrow-datafusion/pull/8520#issuecomment-1854537189,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAGGOKKNGLCK7LWLUMPPTPDYJH27LAVCNFSM6AAAAABAR5MY36VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNJUGUZTOMJYHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks for review @alamb @crepererum @waynexia


Program was infected with virus Win32/Spursint.F!cl

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like that [x])
Use Preview tab to see how your issue will actually look like

WARNING
All invalid issues will be rejected!!

Before going further

[x] I think my problem is NOT with youtube-dl
[x] I've verified and i assure that I'm running yt-dlg 1.X.Y
[x] I assure that i am using the latest version of youtube-dl
[x] Searched bugtracker
[x] I've read the FAQs file

What is the purpose of your issue?

[ ] Bug report
[ ] Feature request (request for a new functionality)
[ ] Question
[x] Other

Please remove any sections between (---) if they are not related to your issue

Bug report
If the problem occurs when downloading a URL please provide the full verbose output as follows:

Restart yt-dlg
Go to Options > Extra tab
Enable Debug youtube-dl
Go to Options > Advanced tab and Clear your log content
Try to download the URL
Copy the whole log content and insert it between the ``` part below

delete me and insert your log content here

What operating system do you use ?
Windows 11
List of actions to perform to reproduce the problem:

..Found an update from "https://github.com/oleksis/youtube-dl-gui/releases"
..Download the latest update
..Windows Security keep removing the file and said that it was infected by a virus.

What is the expected behaviour ?
My computer is in corporate security. I don't think security is being disabled or compromised.
What happens instead ?

Was this a false positive and how to fix this?
What operating system do you use ?
Windows 11
Thank you very much for considering the issue.

Read this comment to check how Microsoft check the releases
You can install yt-dlg from Microsoft Store


HikariCP is not serializable

I would very much like to use HikariCP with Apache Ignite, but to do so I need at least the HikariDataSource class (and the classes of all of its fields) to implement java.io.Serializable.  Is there any particular reason why HikariCP does not implement Serializable?

How would this make sense?  Serialization implies deserialization, and what is the point of deserialization if the deserialized object is non-functional?
The java.io.Serializable contract is, every object reference in the graph of objects, starting from the object instance being serialized, must also be serializable (unless declared transient).
java.sql.Connection is itself is not serializable, nor are the java.net.Socket connections that they hold, and neither is javax.sql.DataSource, so I am not sure what "serializing" a HikariDataSource would even mean.
Whatever kung-fu was performed after declaring HikariDataSource as serializable would be merely hand-waving, as the deserialized instance would in no way reflect the actual state of the original serialized instance.
You are welcome to perform your own hand-waving kung-fu like so:
public class MyDataSource implements DataSource, Serializable {
   private transient HikariDataSource delegate;

   @Override
   public Connection getConnection() throws SQLException {
      if (delegate == null) {
         // instantiate one
      }
      return delegate.getConnection();
   }

   // 8 other delegated methods
   ...
}

Tada!  A serializable HikariDataSource.


Update Table's Column lengths can be wrong for Char Set CHAR_CS?

I noticed when mapping my spreadsheet columns to my Oracle table that the CHAR and VARCHAR2 column lengths are always 3 times the size in the database.  Please see the attached screenshot.
I believe that's because the query that gets the column types uses the data_length column instead of the char_length column. All the columns in our tables have a character_set_name of 'CHAR_CS', but I don't know enough about that to know if it's significant.
Thanks for the cool utility!

It's only used for "describing" the selected table, so this should not cause any problems in the working of the plugin.

I will fix this in the next update of the plugin.

Thanks for agreeing this was an issue, though only cosmetic.
Not to push, but do you have a rough idea when the next release might be?
Just this morning I starting building another page that will use your plug-in to load a different table. This is so much faster and more flexible than the built-in Apex Data Loader Wizard, at least the one in Apex 19c that we're using.
Thanks again,
Stwe

Will not be this year, if ever. As long as this cosmetic issue is the only thing which needs to be changed I will not start.
I have other issues with a higher priority on my to do list, like bugs in as_sftp or rewriting as_xlsx for modern Oracle versions (> 12.2)

Thanks for the reply and I completely understand not digging into this just
for that minor issue.
If it's easy, could you please point me generally to where that code block
is, so I can try to resolve it myself? I'm experienced in Oracle, but still
light in my JS skills. I've looked through the Oracle package and the
Javascript file, but can't find where the table column length is calculated
from the *all_tab_cols *or *all_tab_columns *tables.
If you're interested, I noticed another intermittent cosmetic issue. I
hadn't reported it because I couldn't replicate it consistently.
After selecting the Load File, the pop-up column-mapping window doesn't
always size correctly. That is, sometimes it's only about 350 pixels high,
when it should be much taller to accommodate the number of target columns
in the table. I normally work in Chrome and I'm seeing it there. I haven't
tried to replicate it in another browser.
All the best,
Stew
On Wed, Dec 8, 2021 at 2:43 PM antonscheffer @.***>
wrote:

Will not be this year, if ever. As long as this cosmetic issue is the only
thing which needs to be changed I will not start.
I have other issues with a higher priority on my to do list, like bugs in
as_sftp https://github.com/antonscheffer/as_sftp or rewriting as_xlsx
for modern Oracle versions (> 12.2)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/antonscheffer/Excel2APEX/issues/3#issuecomment-989139447,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGBL3CP7MH7SUOWCVNSNQH3UP6YOTANCNFSM5HOTHC7Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

It’s not using all_tab_columns but dbms_sql.describe_columns2. That procedure populates a record which only has a attribute col_max_len. That is the length in bytes, not in chars.
From: Stew Stryker @.>
Sent: Wednesday, 8 December 2021 22:02
To: antonscheffer/Excel2APEX @.>
Cc: Anton Scheffer @.>; State change @.>
Subject: Re: [antonscheffer/Excel2APEX] Update Table's Column lengths can be wrong for Char Set CHAR_CS? (Issue #3)
Thanks for the reply and I completely understand not digging into this just
for that minor issue.
If it's easy, could you please point me generally to where that code block
is, so I can try to resolve it myself? I'm experienced in Oracle, but still
light in my JS skills. I've looked through the Oracle package and the
Javascript file, but can't find where the table column length is calculated
from the *all_tab_cols *or *all_tab_columns *tables.
If you're interested, I noticed another intermittent cosmetic issue. I
hadn't reported it because I couldn't replicate it consistently.
After selecting the Load File, the pop-up column-mapping window doesn't
always size correctly. That is, sometimes it's only about 350 pixels high,
when it should be much taller to accommodate the number of target columns
in the table. I normally work in Chrome and I'm seeing it there. I haven't
tried to replicate it in another browser.
All the best,
Stew
On Wed, Dec 8, 2021 at 2:43 PM antonscheffer<EMAIL_ADDRESS>wrote:

Will not be this year, if ever. As long as this cosmetic issue is the only
thing which needs to be changed I will not start.
I have other issues with a higher priority on my to do list, like bugs in
as_sftp https://github.com/antonscheffer/as_sftp or rewriting as_xlsx
for modern Oracle versions (> 12.2)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/antonscheffer/Excel2APEX/issues/3#issuecomment-989139447,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGBL3CP7MH7SUOWCVNSNQH3UP6YOTANCNFSM5HOTHC7Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHubhttps://github.com/antonscheffer/Excel2APEX/issues/3#issuecomment-989191881, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFKLFJWHJ5W4DMTPRJSWEBLUP7BTBANCNFSM5HOTHC7Q.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Thanks!
Stew
On Wed, Dec 8, 2021 at 4:19 PM antonscheffer @.***>
wrote:

It’s not using all_tab_columns but dbms_sql.describe_columns2. That
procedure populates a record which only has a attribute col_max_len. That
is the length in bytes, not in chars.
From: Stew Stryker @.>
Sent: Wednesday, 8 December 2021 22:02
To: antonscheffer/Excel2APEX @.>
Cc: Anton Scheffer @.>; State change @.>
Subject: Re: [antonscheffer/Excel2APEX] Update Table's Column lengths can
be wrong for Char Set CHAR_CS? (Issue #3)
Thanks for the reply and I completely understand not digging into this
just
for that minor issue.
If it's easy, could you please point me generally to where that code block
is, so I can try to resolve it myself? I'm experienced in Oracle, but
still
light in my JS skills. I've looked through the Oracle package and the
Javascript file, but can't find where the table column length is
calculated
from the *all_tab_cols *or *all_tab_columns *tables.
If you're interested, I noticed another intermittent cosmetic issue. I
hadn't reported it because I couldn't replicate it consistently.
After selecting the Load File, the pop-up column-mapping window doesn't
always size correctly. That is, sometimes it's only about 350 pixels high,
when it should be much taller to accommodate the number of target columns
in the table. I normally work in Chrome and I'm seeing it there. I haven't
tried to replicate it in another browser.
All the best,
Stew
On Wed, Dec 8, 2021 at 2:43 PM antonscheffer<EMAIL_ADDRESS>wrote:

Will not be this year, if ever. As long as this cosmetic issue is the
only
thing which needs to be changed I will not start.
I have other issues with a higher priority on my to do list, like bugs
in
as_sftp https://github.com/antonscheffer/as_sftp or rewriting as_xlsx
for modern Oracle versions (> 12.2)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<
https://github.com/antonscheffer/Excel2APEX/issues/3#issuecomment-989139447>,

or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/AGBL3CP7MH7SUOWCVNSNQH3UP6YOTANCNFSM5HOTHC7Q>

.
Triage notifications on the go with GitHub Mobile for iOS
<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>

or Android
<
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.

—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub<
https://github.com/antonscheffer/Excel2APEX/issues/3#issuecomment-989191881>,
or unsubscribe<
https://github.com/notifications/unsubscribe-auth/AFKLFJWHJ5W4DMTPRJSWEBLUP7BTBANCNFSM5HOTHC7Q>.
Triage notifications on the go with GitHub Mobile for iOS<
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android<
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/antonscheffer/Excel2APEX/issues/3#issuecomment-989204417,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGBL3CPZCCY4I3HQKNOSYD3UP7DWJANCNFSM5HOTHC7Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.


Improvements

Some small improvements to the script & spec
Tested on CentOS7 (./build.sh all)

Thank you very much! We need to review those changes and reassure it is operational with at least CentOS 6.

Hi @sunsingerus,
Tell me if one of the patch is problematic, I'll rework it / test it on CentOS 6

Hi @sunsingerus
Thanks for the review and sorry for the delay
I just added a commit to install yum-builddep / dnf builddep
CMAKE_BUILD_TYPE=RelWithDebInfo is the default configuration for ClickHouse deb releases
This allow to build with all optimisations but still generating debug symbols, so you have usefull debuginfo rpm


Porting Particle Shaders to URP?

I'm wondering if anyone has had success in porting the current surface Shader code to work with URP. The difficulty I'm having is enabling GPU instancing with the new SRP batcher. Everything seems to work in URP as I can see the shadows updating the positions of the particles, the rendering is just not working. Any help would be appreciated thank you.

I ended up getting it to work with the shader code below...
Shader "Custom/Particle"
{
    Properties
    {
        _Color ("Color", Color) = (1,1,1,1)
        _Diameter ("particle diameter", Float) = 1.0
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "DisableBatching" = "True" }

        Pass
        {
            HLSLPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma multi_compile_instancing
            #pragma target 4.5

            #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/SurfaceInput.hlsl"

            //float4 color;
            struct appdata
            {
                float4 vertex : POSITION;
                UNITY_VERTEX_INPUT_INSTANCE_ID
            };

            struct v2f
            {
                float4 vertex : SV_POSITION;
                UNITY_VERTEX_INPUT_INSTANCE_ID
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

			StructuredBuffer<float4> positions;
            UNITY_INSTANCING_BUFFER_START(MyProps)
                UNITY_DEFINE_INSTANCED_PROP(float4, _Color)
                UNITY_DEFINE_INSTANCED_PROP(float, _Diameter)
            UNITY_INSTANCING_BUFFER_END(MyProps)

            v2f vert (appdata v, uint instanceID : SV_InstanceID)
            {
            #if SHADER_TARGET >= 45
                float4 data = positions[instanceID];
            #else
                float4 data = 0;
            #endif

                v2f o;

                UNITY_SETUP_INSTANCE_ID(v);

                float d = UNITY_ACCESS_INSTANCED_PROP(MyProps, _Diameter);

                UNITY_TRANSFER_INSTANCE_ID(v, o);

                float3 localPosition = v.vertex.xyz * d;
                float3 worldPosition = data.xyz + localPosition;

                o.vertex = mul(UNITY_MATRIX_VP, float4(worldPosition, 1.0f));
                return o;
            }

            float4 frag (v2f i) : SV_Target
            {
                UNITY_SETUP_INSTANCE_ID(i);

                return UNITY_ACCESS_INSTANCED_PROP(MyProps, _Color);
            }
            ENDHLSL
        }
    }
}


Wallet issues

Motivation
I think Team need to create a set of time lock wallet on Fuel.  It's really uncomfortable
Usage example
No response
Possible implementations
I am really uncomfortable when test Fuel. wallet is always lock while 2 minutes.

Thanks for reporting. The unlock should be in a window of 15 minutes, but it looks like it's locking before this time.
Issue tracking the bug: https://github.com/FuelLabs/fuels-wallet/issues/712

Okay. It's Great
Now I can comfortabel to test on Fuel.
Thank you!
NGO PHUOC NHAN
Marketing Major
Email: @.***
SĐT:<PHONE_NUMBER>
*“I like to use the hard times in the past to motivate me today.” *
*–  Dwayne Johnson  *–
Vào Th 4, 19 thg 4, 2023 vào lúc 23:17 Luiz Estácio | stacio.eth <
@.***> đã viết:

Closed #710 https://github.com/FuelLabs/fuels-wallet/issues/710 as
completed.
—
Reply to this email directly, view it on GitHub
https://github.com/FuelLabs/fuels-wallet/issues/710#event-9048560863,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZSS5B5EEGU7P345UIJQ73LXCAF3PANCNFSM6AAAAAAXDXYCEM
.
You are receiving this because you authored the thread.Message ID:
@.***>


[TestOnly] Extra HDWallet derivation tests

Description
Add extra derivation checks to HDWallet, demonstrating how a sequence of public keys can be derived from a single XPub, giving the same result as deriving a sequence of private keys (and obtaining public keys).
Testing instructions
Unit tests 'HDWallet'.
Types of changes

Extra Test only

Checklist

[x] Prefix PR title with [WIP] if necessary.
[x] Add tests to cover changes as needed.
[x] Update documentation as needed.
[x] I have read the guidelines for adding a new blockchain
[x] If there is a related Issue, mention it in the description (e.g. Fixes #<issue_number> ).

It's also possible through C interface?


[fix] add GitHub fork button

Fixes Issue
Closes #774

Changes proposed

I added a script link in the  section to create a GitHub Fork button.
Screenshots

Note to reviewers

This my first time creating this feature, so constructive feedback is appreciated.

@CBID2
Please write the complete code as this is just the script file, and kindly assign me this issue.
Fork

@rupali-codes @CBID2
There are two approaches to making this possible, depending on your decision.
Only the first approach, which involves dynamically loading the script in a component using useEffect, works.
Now, you can either suggest the problem with the other approaches, or we can proceed with the first approach.
First Approach

works :)

... import statements

export const Header: FC<{}> = () => {
  const { toggleNav } = useContext(GlobalContext)

 <-------------------------------ADDED THIS CODE BEGIN------------------------------->
  useEffect(() => {
    const script = document.createElement('script')
    script.src = 'https://buttons.github.io/buttons.js'
    script.async = true
    script.defer = true
    document.head.appendChild(script)
    return () => {
      document.head.removeChild(script)
    }
  }, [])
<-------------------------------ADDED THIS CODE END------------------------------->
  return (

        <-------------------------------ADDED THIS CODE BEGIN------------------------------->
        <Link
          className="github-button"
          href="https://github.com/rupali-codes/LinksHub"
          data-icon="octicon-repo-forked"
          data-size="large"
          data-show-count="true"
          aria-label="Fork rupali-codes/LinksHub on GitHub"
        >
          Fork
        </Link>
       <-------------------------------ADDED THIS CODE END------------------------------->

  )
}

This dynamically add the script only when it's needed (e.g., in the Header component), it allows to defer the loading of the script until it's necessary. This can help reduce the initial load time of your application by avoiding unnecessary script loading for pages that don't use the GitHub Buttons.
If the script is only needed on specific pages or components, dynamically loading it when required can help reduce the initial load time and bundle size for pages that don't use the GitHub Buttons.

It is generally recommended to include scripts dynamically within the components or layout files for better control and compatibility with server-side rendering.

Second Approach

In _document.js failed :(

I don't know for certain, but one possible reason could be that Next.js does not execute JavaScript code within the _document.js file during server-side rendering. Therefore, including the script directly in the _document.js file might not work as expected.
If we can include the script directly in the _document.js file, it will be loaded and cached by the browser when the page is first rendered. This can improve subsequent page loads since the script will be retrieved from the cache instead of making an additional network request.
Third Approach

In _app.js failed :(

// _app.js
import 'styles/globals.css'
import type { AppProps } from 'next/app'
import GeneralLayout from 'layouts/GeneralLayout'
import { GlobalProvider } from 'context/GlobalContext'
import { Preloader } from 'components/Loader/Preloader'
import { ThemeProvider } from 'next-themes'
import Head from 'next/head' // Import the Head component

export default function App({ Component, pageProps }: AppProps) {
  return (
    <ThemeProvider defaultTheme="dark">
      <GlobalProvider>
        <Preloader backgroundColor="bg-violet-800" color="#8b5cf6" size={40}>
          <GeneralLayout>
            <Component {...pageProps} />
          </GeneralLayout>
        </Preloader>
      </GlobalProvider>

    </ThemeProvider>
  )
}

I go with the first method @Anmol-Baranwal

What is the update?

I go with the first method @Anmol-Baranwal

What is the update?

I picked the first method @Anmol-Baranwal. I was under the impression that you'd add the code there.

I go with the first method @Anmol-Baranwal

What is the update?

I picked the first method @Anmol-Baranwal. I was under the impression that you'd add the code there.

I thought you would do that, LOL. Just add the code in any component you want; header.tsx would be appropriate.
Please write the code that is signified between the comments.
<-------------------------------ADDED THIS CODE BEGIN------------------------------->
add this code in the component as suggested above
<-------------------------------ADDED THIS CODE END------------------------------->

I go with the first method @Anmol-Baranwal

What is the update?

I picked the first method @Anmol-Baranwal. I was under the impression that you'd add the code there.

I thought you would do that, LOL. Just add the code in any component you want; header.tsx would be appropriate.
Please write the code that is signified between the comments.

<-------------------------------ADDED THIS CODE BEGIN------------------------------->

add this code in the component as suggested above

<-------------------------------ADDED THIS CODE END------------------------------->

You can use Tailwind CSS utility classes to write the style you want.

I'll try it and then you can review it again. Sound good @Anmol-Baranwal?

<Link
          className="github-button"
          href="https://github.com/rupali-codes/LinksHub"
          data-icon="octicon-repo-forked"
          data-size="large"
          data-show-count="true"
          aria-label="Fork rupali-codes/LinksHub on GitHub"
        >
          Fork
        </Link>

Hi @Anmol-Baranwal. I ended up creating a new pull request. Here it is: #929

<Link
          className="github-button"
          href="https://github.com/rupali-codes/LinksHub"
          data-icon="octicon-repo-forked"
          data-size="large"
          data-show-count="true"
          aria-label="Fork rupali-codes/LinksHub on GitHub"
        >
          Fork
        </Link>

Hi @Anmol-Baranwal. I ended up creating a new pull request. Here it is: #929

Why did you create a new PR? Please refrain from creating any additional PRs than these two. I will incorporate the changes into PR #929.

This issues has been addressed in #774 PR!


[Spike] Demo next/prev story functionality

Quick and dirty spike to try out an approach for handling next / previous links in the story view.

Generates a JSON array of story IDs
Uses that array in getStaticProps to find the left and right story IDs of the current story

This is meant to stir conversation, lots of tidying up and hardening to be done if we go forward.

@LuckeeDev Tagging you on this as well for thoughts!

📝Changed routes:

/story/[id]

(view full size)

Commit e3b10dbe7527be350f88e4611fd4bb45d08a36b1 (https://www-llspsh3pl-my-covid-story.vercel.app).

Ah, gotta tidy up the build command to make this work. Coming back to this later today!

@mwickett Concerns/Thoughts:

This is that it puts us right back into the place where the file will only be generated on deploy, so it wont be dynamic on the site.
How does this function if a user has filtered before hitting the individual story? Does this mean that we need to keep our story list larger with more data?
Why not have the next/previous URL's be resolved on click rather than statically on page load. Shift the burden entirely client side so that we can pass in whatever we want to determine the next one? This would leave only one edge case which is if the story has no step in either direction, but that could be solved by then sending the user back to the home page

Why not have the next/previous URL's be resolved on click rather than statically on page load. Shift the burden entirely client side so that we can pass in whatever we want to determine the next one?

This seems like the better option to me. I think it's also more future-proof since we might later add advanced custom filtering, sorting, searching and maybe even random story suggestions, which all require a flexible client side solution instead of a statically generated one.
How would you think we'd pull this off @JamiesonRoberts?
I have some ideas, will be able to share more later.
P.S: we might also consider adding a "similar stories" section in addition to the next/prev feature.

Concerns
I'm afraid statically generating a JSON file is not the way to go. When will it be generated? Only at build time? And when will it be available? Only for the first render or for all revalidations?
Idea
I think that, as the app scales, we will need some sort of state management solution. For the sake of simplicity, I thought of a mix of Context API and useReducer() instead of a full suite like Redux that would probably be overly complex for what we're trying to achieve. Thinking of state management, I figured that this would be a perfect use case for it. Here's what I would do and how it links to @mwickett's work.

We can set up two global Contexts in _app.tsx for retrieving the state and dispatching to a useReducer() function which also lives at the app level.
Since in index.tsx we have access to the full collection of stories, we can dispatch an action on the first render (inside a useEffect() hook) to make this list available to the whole app through the Context.
With this data, we can then do all sorts of crazy stuff as @JamiesonRoberts suggested and have a very flexible next/prev feature.

There's only an issue with this approach: what if the user first hits a story page (let's say, coming from Twitter) and then the index? I thought about it and there were only two solutions that came to my mind: we could statically generate a fallback version of the next/prev feature for this specific edge case or, instead, remove the next/prev feature for this specific edge case (this seems like the hacky and not optimal way of solving it).
Conclusion
I hope I wrote it out clearly enough, I'd love to hear your thoughts on this guys! @mwickett @JamiesonRoberts @silent1mezzo

I also favour a client side solution using context (probably with a static, sever-side fallback for when directly open a story link, bypassing the feed). I've got it all in my head, and partly sketched out, but I've just been interrupted by other things...I hope to be able to share it soon...


⚠ Bofrost.be has degraded performance

In f9b74bf, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2241 ms

Resolved: Bofrost.be performance has improved in cb14a42 after 310 days, 6 hours, 6 minutes.


Doc rephrase

Signed-off-by: Chmouel Boudjnah<EMAIL_ADDRESS>Changes

Submitter Checklist

[ ] ♽  Run make test lint before submitting a PR (ie: with pre-commit, no need to waste CPU cycle on CI
[ ] 📖 If you are adding a user facing feature or make a change of the behavior, please verify that you have documented it
[ ] 🧪 100% coverage is not a target but most of the time we would rather have a unit test if you make a code change.
[ ] 🎁 If that's something that is possible to do please ensure to check if we can add a e2e test.
[ ] 🔎 If there is a flakiness in the CI tests then don't necessary ignore it, better get the flakyness fixed before merging or if that's not possible there is a good reason to bypass it. (token rate limitation may be a good reason to skip).

/cancel

/retest

/retest

/cancel

/test pipeline-as-code-doc-generation

/cancel pipeline-as-code-doc-generation


rom_report very imprecise

Describe the bug
ninja rom_report doesn't give the correct number. When building hello_world on the board nrf52840_pca10056, rom_report gives a total (at the bottom) of 13236, but the symbols printed above only add up to ~11000.
To Reproduce
Steps to reproduce the behavior, either:

In samples/hello_world: mkdir build; cd build
cmake -DBOARD=nrf52840_pca10056 -GNinja ..
ninja rom_report | grep -P "(^\S)" | grep -Po " \d+ " | paste -s -d+ - | bc

This will print the sum of all the sizes of the top-level entries.
or:

In samples/hello_world: mkdir build; cd build
cmake -DBOARD=nrf52840_pca10056 -GNinja ..
Add print(flash_symbols_total) to the end of the generate_target_memory_section() function in the file scripts/footprint/size_report
ninja rom_report

This will print the internally calculated sum of the sizes of the symbols before the regular printout (scroll to the top).
In my case, it prints 10813.
Expected behavior
It's confusing that the symbols don't add up to the stated total at the bottom (in my case 13236).
Impact
It's imprecise enough that it's hard to do any precise footprint optimizations, i.e. it makes the feature close to useless.
Environment (please complete the following information):

OS: Ubuntu 18.10
Toolchain: Zephyr SDK
Commit SHA: 859c4ed2cd41aa0ef5b5a29b3d2c64199b252ee1

Is the 'missing' space gaps between various symbols due to alignment?

Is the 'missing' space gaps between various symbols due to alignment?

From looking into it, I think that is partly true, but I think there are certain symbols that somehow are not included at all. I think the size of a symbol should be reported with alignment filling, or the filling should also be reported so that the numbers match.

@jocelyn-li  please assign

@dcpleung  since you are at it, maybe this is already fixed?

issues addressed in #26850


No fixed issues found for Firebug 3 alpha 6

No issues found for Firebug 3 alpha 6:
http://issues.firebug.io/tagged/fixed/firebug-3.0.0-alpha.6
Even if there is at least one:
https://github.com/firebug/firebug.next/issues/188
Link used in release notes:
https://github.com/firebug/firebug.next/blob/master/release-notes.md
Honza

@cadorn: any ideas?
Honza

will check shortly

Fixed.
Issues scraper was in an unrecoverable state. Looking forward to having backend logs to track this stuff.

Works for me now, thanks!
Honza

No issues found:
http://issues.firebug.io/tagged/fixed/firebug-3.0.0-alpha.7
(e.g. https://github.com/firebug/firebug.next/issues/264)
Honza

hmm. looks like I need to take a better look. fixed for now.

Works now, thanks!
Honza

The same problem for alpha 9:
http://issues.firebug.io/tagged/fixed/firebug-3.0.0-alpha.9
Honza

fixed.

Thanks!
Honza


HHH-18204 - Add log level checks

https://hibernate.atlassian.net/browse/HHH-18204

As far as I know, the usual reason we need to use isDebugEnabled() or isTraceEnabled() is that we're trying to avoid doing work in constructing the log message. If there's no work involved, the isDebugEnabled() call is just superfluous.

Yes, and it also clutters the code. I think we should focus these efforts on hot paths e.g. row reading, find/persist/remove ops.

This was mainly just a quick-and-dirty effort to attempt to get a performance improvement where logging is concerned, as well as perhaps more consistency in checking the log level - right now we are very inconsistent wrt where the debug/trace check is being applied and where it is not, as well as in where debug and where trace is used. With this in mind I think it is better to have the check than not to have it, as far as debug/trace are concerned; wherever the log message is deemed important enough to not have such check is IMHO a candidate for a different log-level, such as INFO.
Also in general, I tend to agree with @gavinking in that the vast majority of log msgs in the debug level are completely useless and could prob be removed.
If this effort is considered useless, feel free to discard the PR and close the issue.

Closing this since it's been sitting around forever and there doesn't seem to  be consensus on its usefulness.


Random Crash: Exception ticking world

I use last version of the mod and Cleanroom Loader. Also i have no configs for mod beside defaults
crash-2024-11-02_20.17.52-server.txt

can you also show your script

please download the latest one from the github action and try so i can know whether my fix works

i believe it should be fixed in v1.5.0


Enable tests in CIs

Tests are disabled in the CI config.
Even when I tried to run tests locally, it said:
cabal test all
cabal: Cannot test all the packages in the project because none of the
components are available to build: the test suite 'test' and the test suite
'test' are not available because the solver did not find a plan that included
the test suites. Force the solver to enable this for all packages by adding
the line 'tests: True' to the 'cabal.project.local' file.

Not good.

As of a0b321e039a4049a4636f356ac11051b2d4feaae, is it solved?

Tests are disabled in the CI config.
Even when I tried to run tests locally, it said:
cabal test all
cabal: Cannot test all the packages in the project because none of the
components are available to build: the test suite 'test' and the test suite
'test' are not available because the solver did not find a plan that included
the test suites. Force the solver to enable this for all packages by adding
the line 'tests: True' to the 'cabal.project.local' file.

Not good.

I have no issue running this command locally (cabal 3.8, ghc 9.2.4).

Yes, it is working now.


Enhancements

Goal remover
After finding a desired enchantment, you could remove the enchanment from the goals list with a config option
Max level
Make the level argument optional and default to the max level of each own enchanment in the list

done, now just have to port tot all versions and release

Done in v1.3.0


Feature: Added doxygen build facility

This commit is to append a doxygen build facility if theare are incorrect doxygen tags or not.
The generation failure of doxygen results from the incorrect doxygen tags.
Signed-off-by: Geunsik Lim<EMAIL_ADDRESS>
[Template] PR Description
In general, github system automatically copies your commit message for your convenience.
Please remove unused part of the template after writing your own PR description with this template.
$ git commit -s filename1 filename2 ... [enter]

Summarize changes in around 50 characters or less

More detailed explanatory text, if necessary. Wrap it to about 72
characters or so. In some contexts, the first line is treated as the
subject of the commit and the rest of the text as the body. The
blank line separating the summary from the body is critical;
various tools like `log`, `shortlog` and `rebase` can get confused
if you run the two together.

Further paragraphs come after blank lines.

**Changes proposed in this PR:**
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, preceded
  by a single space, with blank lines in between, but conventions vary here.

Resolves: #123
See also: #456, #789

**Self evaluation:**
1. Build test: [ ]Passed [ ]Failed [*]Skipped
2. Run test: [ ]Passed [ ]Failed [* ]Skipped

**How to evaluate:**
1. Describe how to evaluate in order to be reproduced by reviewer(s).

Add signed-off message automatically by running **$git commit -s ...** command.

$ git push origin <your_branch_name>

:memo: Version: 1.20180820. Thank you for submitting PR #227. Your PR must pass all verificiation processes of cibot before starting a review process from reviewers. If you are new member to join this project, please read manuals in documentation folder and wiki page. In order to monitor a progress status of your PR in more detail, visit http://invain.mooo.com/.

The self assessment is successfully completed.

This PR is ready to be merged after completing a review process.


[WIP] Add priority levels to audio queue

Closes #19.

TODO:

[ ] review all changes when I'm less tired
[ ] check pylint
[ ] skip/cancel/delete audio queued for users once they leave in voice chat?


Update GitHub rate limit docs link

The current link doesn't lead to rate limit page.

Nice catch. Thanks for fixing it :)


Implementation of Translation-glossary

Added samples for v3 translate with glossary feature.

Looks like this also has the client library code, I thought we were just going to have people generate that and not include it directly in the sample.

Yes you were right, I was committed the client library code by mistake. Will correct it and provide translation_service.proto. So that users can generate them while they run ./INSTALL-COCOAPOD command.

Just link to the translation_service.proto.

Sure, will do. Thanks

Done.


Handle issues with infrequent drinkers and estimating consumption

Infrequent drinkers
Using the same variable (scako), we can identify people who report drinking 'once or twice a week' or more, and have reported zero units in the week leading up to the survey. In the current version of alcbase, we are saying these people are the same as abstainers in terms of alcohol consumption, but this is obviously incorrect. We therefore need a cleverer way of handling the infrequent drinkers. One solution here is to collect people into groups based on their response to scako, and impute their weekly based on values from others within the group. We could also do this annually (by multiplying the weekly by 52), which would help with the really infrequent drinkers (i.e. less than once or twice a month). We would have to convert back to a weekly consumption. This is difficult, and would probably introduce bias or error where someone has a heavy day once per month which just happens to be in the week before the survey, but could be an improvement as long as we check it thoroughly (potentially using data from Understanding Society or some other survey that reports alcohol consumption).

[ ] Define a ruleset - edit imputation
[x] Group respondents by their response to scako
[x] Calculate annual consumption alongside weekly
[x] Treat zero consumption in specific groups as missing, and impute within group consumption
[ ] Re-calculate weekly from new annual (in some cases)
[ ] Check and re-check to make sure the consumption in groups looks reasonable, try not to inflate or deflate badly

Originally posted by @ld-archer in https://github.com/ld-archer/E_FEM/issues/79#issuecomment-970367200

Excellent illustration of the difference between consumption groups (as defined in scako):
. bys scako: sum r4alcbase_annual

-> scako = Refused
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |         75     532.896    1001.203          0     5132.4

-> scako = Not appl
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |<PHONE_NUMBER>    1007.315          0       7280

-> scako = Almost e
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |      1,054    1509.332    1155.241          0      14196

-> scako = Five or
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |        372    1149.591    797.7879          0     6115.2

-> scako = Three or
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |<PHONE_NUMBER>    687.5993          0       5824

-> scako = Once or
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |      1,371    514.7962    483.0598          0     5605.6

-> scako = Once or
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |<PHONE_NUMBER>    297.0073          0     3239.6

-> scako = Once eve
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |        179     186.648    266.0044          0     2797.6

-> scako = Once or
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |        222    83.03603    254.1812          0     2381.6

-> scako = Not at a
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |        471    29.38938    249.2744          0     4201.6

-> scako = .
Variable |        Obs        Mean    Std. Dev.       Min        Max

-------------+---------------------------------------------------------
r4alcbase_~l |      1,769    820.0803    926.4758          0   8408.399

Unfortunately hotdecking in stata is not possible here due to some weird error that I cannot fix (too many variables specified r(103); despite only passing a single variable to be imputed).
So instead there are a couple of methods that can be employed. The first attempt will be multiple imputation in R using the mice package, which I will carry out and then check the distributions before and after imputation by comparing with similar variables in Understanding Society.

[ ] Multiple regression in R

This will most likely be replaced as unnecessary due to switching the focus over to predicting individual drinks using poisson regression. Leaving this open however as I am not sure of that yet.

This work has been replaced now (or superseded may be more accurate). The new methodology predicts alcohol consumption in stages:
1 - Predict whether respondent has drank alcohol in previous 12 months (abstainer or not)
2 - Predict which category their consumption level would fall into (moderate, increasingRisk, highRisk)
3 - Predict their level of consumption in units from within these groups.
Closing issue as no longer important


Sort input file list

Sort input file list
so that the .so file builds in a reproducible way
in spite of non-deterministic filesystem readdir order and http://bugs.python.org/issue30461
See https://reproducible-builds.org/ for why this is good.
This patch was done while working on reproducible builds for openSUSE.

Thanks for the fix!


Issue on page /content/exploratory_notebooks/facebook_notebook.html

Your issue content here.

@narjiss18 it looks like the body of the issue is missing. I will go ahead and close this - if you intended to mention something specific, please reopen with updated info!


Duplicate  machine entry stuck in "Waiting for agent connection" created when ip address change was done for existing host by executing docker run command,

Server Version - Build from master - Nov 9
Steps to reproduce the problem:
Add amazon host.
From Amazon EC2 Dashboard , stop and start the host instance.
This results in a different public ip address being assigned the host.
This results in Network Agent on this host being restarted.
I don't see the ip address of the host being updated on the rancher server.
Also in this case after the host has gotten to "Active" state , we are not able to ping containers in different host.
To recover from this state, we need to run the rancher-agent command again by passing " -e CATTLE_AGENT_IP=" with the new ipaddress. After this managed network connectivity is restored.
This issue is tracked in #388.
After this I see that there is a duplicate machine entry that gets created that is stuck in "Waiting for agent connection".

Note that this issue is not seen with "Custom Host".


License

Please add a license to the source code. I would like to use Your code (in a GPL3 application) and contribute to this project, but only if I agree with the license.
Thank You!

Thanks, added MIT license


fix(Input.svelte): update regex for pattern validation

Regex Patterns for now:

First Name: alphabet, space, dash and ñ
Middle Initial: 1-2 capital letters
Last Name: alphabet, space, dash and ñ
Email: alphabet and numbers
Student Number: 9 digit number
Phone Number: 11 digit number

Added Titles for guided and more transparent warnings.

Hi @gabrielcalubayan72! Please check if the current characters supported for the input validation is enough :D

I also spotted an error in deleting student records via localhostsmthsmth/dashboard/students. After I confirm the deletion of one record, it also asks to confirm the deletion of the record below it. Is this expected behavior?
Please refer to the clip i will send via Discord for more details.

Hi @gabrielcalubayan72, thanks for catching the bug! 🙇♀🙇♀ I got to fix the bug for the deletion and I added the apostrophes already for the pattern validation for the first name and last name input. Let me know if I missed anything else 😄

oks wait will check later


Use OAuthProxy as authentication method

Hey there, in our company we use a Oauth2 Proxy based authentication method, which when authenticated exposed a header to the underlying application with the identity of the user. I was wondering if someone could point me in the right direction to use this as an auth method.
I've tried creating a custom plugin with custom ID provider, but the client flow is very restricting in that it needs a sign-up page and pre-existing API refs (the documentation does not mention how to add a custom ApiRef in this section).
another option would be to use passport-trusted-header, but again I run in to a lack of documentation about how to add a custom provider to the client side application.

We abused the awsalb provider to get our internal Backstage deployment working with OAuth2 Proxy. This isn't the ideal solution since it relies on connecting to the /oauth2/userinfo endpoint instead of utilizing the exposed headers.
Note: you will need to update the example DummySignInComponent code to utilize the "fetch(${window.location.origin}/oauth2/userinfo)" instead of "fetch(${window.location.origin}/api/auth/awsalb/refresh)".

Yeah, my next step would also be to abuse an existing one, but that just feel so wrong. There is quite some documentation on how to add auth to the backend, it is just missing the parts on how to add that custom provider to the front.

@grumpyoldman-io Sorry for the delay, vacations 😅 🏝
There's actually no need to add a provider to the frontend as proxy based authentication is just used for the sign-in. The only thing that's needed is a custom SignInPage that can deliver the user profile and Backstage token. The best reference for that is https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/aws-alb-aad-oidc-auth.md at this point


KAFKA-16265: KIP-994 (Part 1) Minor Enhancements to ListTransactionsRequest

Introduces a new filter in ListTransactionsRequest API. This enables caller to filter on transactions that have been running for longer than a certain duration of time.
This PR includes the following changes:

bumps version for ListTransactionsRequest API to 1. Set the durationFilter to -1L when communicating with an older broker that does not support version 1.
bumps version for ListTransactionsResponse to 1 without changing the response structure.
adds durationFilter option to kafka-transactions.sh --list

Tests:

Client side test to build request with correct combination of duration filter and API version: testBuildRequestWithDurationFilter
Server side test to filter transactions based on duration: testListTransactionsFiltering
Added test case for kafka-transactions.sh change in TransactionsCommandTest

Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Something wrong with the build so I will restart.


hot reload after ".html .js .vue etc"  modified

Is your feature request related to a problem? Please describe.
now, my steps in run "python html" app:

step1. build web program: yarn build or vue-cli-service build
step2. run python with eel: python main.py

problem: each time I modified the html file, I need to rerun step1 and step2, in which step1 cost a  lot of time.
Describe the solution you'd like
the solution I want:

step1. run web program instead of build web program: yarn serve or vue-cli-service serve

step2. run python with eel: python  main.py

step3. after modified html file each time, just need rerun step2.

I know Eel use websocket to connect with python and javascript. now py_side and js_side both use localhost:8000

if there is a way that py_side use localhost:8000, js_side use localhost:8001,  and they  connect through websocket ?. In ths condition, when I modified html file, we do not need to run step1, which save a lot of time! (step1 cost a lot of time!)
thanks!

I tried this, it works!

// These get dynamically added by library when file is served
_py_functions: ['say_hello_py'],
this need eel.js to be updated once , which may cause hot-reload impossible...


Image tag is not capturing

Hi,
I tried to convert html to image using html2canvas, its working fine. But the image tag inside html elements is not converting, Given below one example:

## Working HTML Element

            Mo
            Tu
            We
            Th
            Fr
            Sa
            Su

26

27

28

29

30

31

1

2

            bell
            snap

Here is my script for converting html2canvas:
var html2obj = html2canvas($('table'));
var queue  = html2obj.parse();
var canvas = html2obj.render(queue);
var img = canvas.toDataURL();
$('#calendar_to_canvas').attr('src', img);
PFA screenshot

Thanks,
Bala

Hello,
I want same the image once it is converted. I tried canvas.toDataURL("image/png"); but that did not work for me. I tried the code below and while it created an img, it didn't display the screenshot. I am a newbie using javascript. Can you help please.
function showImage() {
html2canvas($('#hpImplement'), {
onrendered: function(canvas) {
var elem = document.createElement("img");
elem.setAttribute("src", canvas);
elem.setAttribute("alt", "Flower");
document.getElementById("hpShare").appendChild(elem);
		},
	});

}
I even tried:
function showImage() {
html2canvas($('#hpImplement'), {
onrendered: function(canvas) {
var theCanvas = canvas.toDataURL("image/png");
var elem = document.createElement("img");
elem.setAttribute("src", theCanvas);
elem.setAttribute("alt", "Flower");
document.getElementById("hpShare").appendChild(elem);
		},
	});

}

Im using the html2canvas - local image not rendering in pdf. whats the solution for this?

@niklasvh please help - the logo image in html is not rendering in pdf

how to use "proxy": "http://localhost/myproject/proxy.jsp", I use vue,without jsp ,where to put this jsp and i don't know how to use @niklasvh can you help?

@qiuyaofan having same issue did you get the solution? I'm using it with angular2

+1 BTW the logs looks good (html2canvas: Images loaded, starting parsing) but I still don't see the images on the pdf.

Im using
allowTaint: true,
useCORS: true,
taintTest: false,

@NikhilRadadiya @qiuyaofan guys, also been looking for a just client side solution. Using vue js and getting image from a giphy. So here is the one worked well for me:
html2canvas(element, {
        "logging": true, //Enable log (use Web Console for get Errors and Warings)
        useCORS: true,
        taintTest: false,
        onrendered: function(canvas) {
          var img = new Image();
          img.onload = function() {
            document.body.appendChild(img);
          };
          img.error = function() {
            if(window.console.log) {
              window.console.log("Not loaded image from canvas.toDataURL");
            } else {
              alert("Not loaded image from canvas.toDataURL");
            }
          };
          img.src = canvas.toDataURL("image/png");
        }
      });

So no proxy been used.

@creepteed I have others element which I need to convert to canvas and then save to pdf, my html doesn't contain only images, if this is the case then how can I use above function you have posted?

Hi @niklasvh ,
I want to capture webpage using htmltocanvas all is working fine but when i am trying to capture webpage then i not getting images.
Can you help me?
Here is my code
function capture(div_id=null) { jQuery(".screenshot_row_target").html2canvas({ logging: true, //taintTest : true, //proxy: "https://skeleton-21.myshopify.com", onrendered: function (canvas) { jQuery('#screenshot_img_val').val(canvas.toDataURL("image/png")); //document.getElementById("screenshot_html_form").submit(); } }); }
In console, I getting this
html2canvas: Preload starts: finding background-images html2canvas.js:19 html2canvas: Preload: Finding images html2canvas.js:19 html2canvas: Preload: Done. html2canvas.js:19 html2canvas: start: images: 0 / 0 (failed: 0) html2canvas.js:19 Finished loading images: # 0 (failed: 0) html2canvas.js:19 html2canvas: Error loading ://cdn.shopify.com/s/files/1/2186/4293/files/user2_300x300.png?v=1503661428 html2canvas.js:19 html2canvas: Error loading background: html2canvas.js:19 html2canvas: Error loading ://cdn.shopify.com/s/assets/no-image-2048-5e88c1b20e087fb7bbe9a3771824e743c244f437e4f8ba93bbf7b11b53f7824c_300x300.gif html2canvas.js:19 html2canvas: Renderer: Canvas renderer done - returning canvas obj
Thanks.


jira_license_expiry_date not shown

Hi,
jira_license_expiry_date_gauge return 0.0 but jira_maintenance_expiry_days_gauge shows correct number.
Regards

Hmm. Could you contact me directly<EMAIL_ADDRESS>I will help you. I think you have licences which I never tryed reproduce.

Done


Unable to Retrieve AAS from MongoDB

Description:
I am experiencing an issue where the AAS are successfully stored in MongoDB (checked using MongoDB Compass) but cannot be retrieved after a restart of the containers. Here are the detailed steps to reproduce the issue and the relevant configuration files.
Steps to Reproduce:

Start with an empty ./data-vol directory.
Upload an AASX file from the ui- the upload is successful, and data is stored in MongoDB.

The previously uploaded AAS data is no longer retrievable from the AAS repository. Any attempt to reupload the AASX file will return success, but nothing is shown in the list.

Configuration Files:
1. docker-compose.yaml:
version: '1'
services:
  mongo:
    image: mongo:5.0.10
    # Provide mongo config
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: mongoAdmin
      MONGO_INITDB_ROOT_PASSWORD: mongoPassword
    # Set health checks to wait until mongo has started
    volumes:
      - ./data-vol:/data/db
    healthcheck:
      test: mongo
      interval: 10s
      start_period: 5s
      retries: 5
    # Maps tcp port to host
    ports:
      - '27017:27017'

  # AAS Environment
  aas-env:
    image: eclipsebasyx/aas-environment:2.0.0-SNAPSHOT
    container_name: aas-env
    volumes:
      - ./aas:/application/aas
      - ./basyx/aas-env.properties:/application/application.properties
    ports:
      - '8081:8081'
    restart: always
    depends_on:
      aas-registry:
        condition: service_healthy
      sm-registry:
        condition: service_healthy
      mongo:
        condition: service_healthy

  # AAS Registry
  aas-registry:
    image: eclipsebasyx/aas-registry-log-mem:2.0.0-SNAPSHOT
    container_name: aas-registry
    ports:
      - '8082:8080'
    volumes:
      - ./basyx/aas-registry.yml:/workspace/config/application.yml
    restart: always

  # Submodel Registry
  sm-registry:
    image: eclipsebasyx/submodel-registry-log-mem:2.0.0-SNAPSHOT
    container_name: sm-registry
    ports:
      - '8083:8080'
    volumes:
      - ./basyx/sm-registry.yml:/workspace/config/application.yml
    restart: always

  # AAS Web UI
  aas-web-ui:
    image: eclipsebasyx/aas-gui:v2-240515
    container_name: aas-ui
    ports:
      - '3000:3000'
    environment:
      AAS_REGISTRY_PATH: http://localhost:8082/shell-descriptors
      SUBMODEL_REGISTRY_PATH: http://localhost:8083/submodel-descriptors
      AAS_REPO_PATH: http://localhost:8081/shells
      SUBMODEL_REPO_PATH: http://localhost:8081/submodels
      CD_REPO_PATH: http://localhost:8081/concept-descriptions
    restart: always
    depends_on:
      aas-env:
        condition: service_healthy

2. aas-env.properties:
server.port=8081

basyx.backend = MongoDB
#basyx.backend = InMemory
#basyx.environment=file:aas

basyx.cors.allowed-origins=*
basyx.cors.allowed-methods=GET,POST,PATCH,DELETE,PUT,OPTIONS,HEAD
basyx.aasrepository.feature.registryintegration=http://aas-registry:8080
basyx.submodelrepository.feature.registryintegration=http://sm-registry:8080
basyx.externalurl=http://localhost:8081

spring.data.mongodb.host=mongo
spring.data.mongodb.database=aas-env
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=mongoAdmin
spring.data.mongodb.password=mongoPassword

3. aas-registry.yml:
basyx:
  cors:
    allowed-origins: '*'
    allowed-methods: GET,POST,PATCH,DELETE,PUT,OPTIONS,HEAD

spring:
  data:
    mongodb:
      uri: mongodb://mongoAdmin:mongoPassword@localhost:27017

4. sm-registry.yml:
basyx:
  cors:
    allowed-origins: '*'
    allowed-methods: GET,POST,PATCH,DELETE,PUT,OPTIONS,HEAD

spring:
  data:
    mongodb:
      uri: mongodb://mongoAdmin:mongoPassword@localhost:27017

In this .zip file, I also provide the logs after restart.
I am not sure if my configuration is correct, could you provide guidance on how to resolve the problem or if any additional configurations are required?
Thanks in advance.

Hi @fransiska26
Thanks for raising this issue.
We are looking into it and get back to you as soon as possible.

Hi @fransiska26,
I looked at your configuration files and found an issue with your registry configuration. Your docker-compose is using image: eclipsebasyx/aas-registry-log-mem:2.0.0-SNAPSHOT and eclipsebasyx/submodel-registry-log-mem:2.0.0-SNAPSHOT images that use InMemory as backend. This is the reason aas-gui couldn't find the AAS after restarting the containers, since it starts the look-up with the registries.
If the goal is to have the data from registry persisted in MongoDB as well, please change the images to image: eclipsebasyx/aas-registry-log-mongodb:2.0.0-SNAPSHOT and eclipsebasyx/submodel-registry-log-mongodb:2.0.0-SNAPSHOT.
Please let me know if you get a different result with this change.


Log doesn't flush on unexpected failure

As per title, log_data will happily log into it's internal buffer and, particularly in the usecase or log_perror, immediately exit.
Consequence: The most relevant error and why the server stopped is unavailable. Possibly even leaving an empty log file if socket initialization fails.
Potential fix: add atexit(log_flush); before the call to socket.

Yes, that's a problem. Apparently atexit is limited to normal program terminations. It would be nice if we also managed to flush when crashing unexpectedly. I've never written a SIGSEGV handler so I'm missing the details

Should this tiny logger be expected to log even catastrophic failures? The simplest solution would probably be to mmap a crashlog file and to then write to it inside the signal handler. Of course during a graceful exit the crashlog should be deleted.
See here for additional detail regarding async-signal-safe functions and here for sig_atomic_t.

On the topic of signal handlers.

void handle_sigterm(int signum) {
  (void)signum;
  stop = true;
}```
Invokes undefined behaviour, stop should be changed from `bool stop` to `volatile sig_atomic_t stop`.

My idea was to change log_flush to be signal-safe and call that from handlers. In the mean time atexit should work. All calls to abort will need to be changed to exit  though
P.S. Thanks for the tip!

I just pushed these changes :)


Fix potential crash with corrupt buttons

I don't know why, but lately I've been having occasional crashes with "key already added" as the exception. This seems to fix it, but I don't know why it's happening to begin wtih.

This library wasn't fully updated to work with the new HeroesDataParser v4 data files which is why there might be some issues.


Enhance support for including SHA256 of files in release notes

As a follow up to this PR:
https://github.com/GitTools/GitReleaseManager/pull/134
It would be good to add some additional configuration around how/when the SHA's get added to the release notes.
For example, providing the ability to opt-out of adding the SHA.
Also, in terms of how the SHA's are rendered.  It was suggested that perhaps this:

test.txt 81b637d8fcd2c6da6359e6963113a1170de795e4b725b84d1e0b4cfd9ec58ce9

Might be better than nested list.

Best option would probably to allow it to be configured through the yaml configuration file.
Say for instance:
Enable/Disable sha
create:
  include-sha: true

Maybe the header of the sha as well:
create:
  sha-header: "__SHA256 Hashes of the release artifacts__"

How to change the line:
create:
  sha-line: "- `{filename}\n\t- `{shasum}`

Just an example, don't really know what the names should be.
Last note:

Also, in terms of how the SHA's are rendered. It was suggested that perhaps this:

actually, what I meant was
test.txt	81b637d8fcd2c6da6359e6963113a1170de795e4b725b84d1e0b4cfd9ec58ce9
^^ A single inline code element, not two separate.
Or maybe even:
81b637d8fcd2c6da6359e6963113a1170de795e4b725b84d1e0b4cfd9ec58ce9	test.txt
would be better


adding okhttp interface

@sojanpr

@EvangelosG  How are we handling the retry here?  It looks like  we have enable retryOnConnectionFailure wit OKHttp and the we again Retry ourself.  Cann't we set the retry policy and interval with OKhttp?

OKhttp doc suggest To avoid leaking resources callers should close the {@link Response} which in turn will close the underlying {@link ResponseBody}.. Not seeing we are closing it any where. Is it internally handled somehow?

thanks! added finally blocks to close response. this call was included in 0 of their ready-to-go recipes..

also removed okhttp's handling of retries and kept our code to honor retryCount

Closing this out since SDK provide a generic  interface for custom network handling here.
https://github.com/BranchMetrics/android-branch-deep-linking/blob/master/Branch-SDK/src/io/branch/referral/network/BranchRemoteInterface.java


Official extension: gRPC Request Matching

Proposal
gRPC is very popular in the cloud native ecosystem, and it would be nice to have support for mocking gRPC services in WireMock. There are already a few implementations in the WireMock Ecosystem but no official ones The feature could be implemented as a standalone Java library but that still runs in the same JVM runtime to achieve higher performance. This s different from https://github.com/Adven27/grpc-wiremock that basically implements a standalone proxy service
References

Extension: https://github.com/wiremock/wiremock-grpc-extension/
Docs: https://wiremock.org/docs/grpc/
Demos: https://github.com/wiremock/wiremock-grpc-demos

Contributions are welcome!
Prior work

Standalone project: https://github.com/Adven27/grpc-wiremock , archived and probably up for adoption.
Rust implementation of gRPC Mocking: https://github.com/mustakimali/wiremock-grpc-rs
Separate grpcmock project that has similar architecure as WireMock: https://github.com/Fadelis/grpcmock
https://microcks.io/documentation/using/grpc/

@pmirek No dates at the moment. I actually forked @adven27's project to https://github.com/wiremock/grpc-wiremock after being unable to contact him. I think this is something that should continue, and we should definitely find a new maintainer. Would you be interested?
P.S: for this particular ticket, the vision after discussing with @tomakehurst is rather having a WireMock extension that runs within the same instance. It is a subject for prototyping and decision making, and it definitely does not block work on the current fork we have

@oleg-nenashev anything you want me to contribute here or should we close this per https://github.com/wiremock/wiremock-grpc-extension ?

@tomakehurst currently it is marked as preview on the road map. I would suggest finishing key bits like release automation to proper locations, ci, a bit more of docs/demos, and releasing as GA then. Ultimately we just give it some time to get feedback and address issues reported by users

any more updates on this?

The gRPC extension has been GA for a while @ritchieanesco: https://github.com/wiremock/wiremock-grpc-extension


Fix release tarballs OR attachment naming for better integration with build/dependency systems

Feature Description
When creating a release, gitea creates source tarballs. These have precisely the name of the tag, plus an extension. The root directory in the source tarball is the repository name.
The problem with this scheme is that it's not in line with the unspoken standards of distributing source code. Source tarballs are generally expected to

Contain a root directory following the pattern <projectname>-<release version>.
Be named according to the pattern <projectname>-<release version>.<extension>

Gitea does not produce tarballs according to this pattern. There are a few ways it could improve on this.
Alternatively, you can add custom attachments to a release, e.g. from a dist command from your build system. This may create tarballs in the expected format. Unfortunately, these attachments then have a URL that has nothing to do with the file name. Some dependency management systems (e.g. meson expect URLs to also contain the pattern <projectname>-<release version>, however.
Possible solutions include:

Make automatically generated tarballs contain the tag name as the root directory. This would permit generating the right tarballs by following a tagging scheme of <projectname>-<release version>.
Similar to the above, but default to naming the tarball and root directory <repo-name>-<tagname> - for projects following the common pattern of using release versions as tag names, this would probably be best.
Similar to the above, but make the naming patterns (separately?) configurable, e.g. from a small number of placeholders such as <repo-name>, etc. You can default to the current behaviour, but also use ones consistent with the expectations of other systems.
Somewhat orthogonal to this, allow for distinct naming of attachment URLs that includes the file name. All it would need is to add the file name at the end of the URL. You don't even need to handle that, you can keep the attachment ID as the main indentifier, and just accept anything in the URL path that follows.

Screenshots
No response

Sounds like good suggestions in general.
Changing the tarball directory layout, and possibly also the download filename is a breaking change that's near impossible to communicate to consumers of those tarballs in advance though. So I'm not sure this is worth breaking existing workflows.

-> #9534

It's not clear to me how #9534 solves either one of the issues raised in this ticket? Why is this being closed?

... Unfortunately, these attachments then have a URL that has nothing to do with the file name. ...

Hmm, I'm a little unclear on how that'll work as well, but I'll wait and see.

href="{{$.RepoLink}}/releases/download/{{$release.TagName | PathEscape}}/{{$attachment.Name | PathEscape}}"
would work ... but it's not shown as it could have name collisions ...
changing the name scheme for auto-generated source tarballs is also possible but would require work also


Add Pulsar transport

I think it would be useful to try to add an additional transport to Zipkin which would be Apache Pulsar.
Feature:
Description of the feature
Rational
Pulsar has several features which I think make it interesting for us:

Integrated SQL query capability.
Latest Pulsar has integrated SQL query capabilities based on the Facebook Presto engine. This means it's possible to query data directly from the topic thus reducing the need to have a separate DB tier.
Benefit: Potentially simplified deployments.
Unknown: Not quite clear how capable is the query engine and would it be suitable for the kind of queries Zipkin makes.

Tiered storage.
Pulsar has the capability to offload topics onto long term/cheap storage (ex. S3) without having to estimate ahead of time any size or time based expiration policies.
Benefit: Simplify DB management overhead and provide simple way how to enable cheap durable persistence.

Decoupled storage from brokers
By decoupling brokers from storage Pulsar (at least on paper) should be easier to scale out.
Benefit: Smaller operational overhead, less chances of errors and simplified operations.

Scales to more topics

Multitenancy and Georeplication capabilties.
Benefit: Potentially diverse business uses

Pulsar functions.
It's possible to implement very low latency triggers based on messages which trigger actions directly in the middleware.

Kafka compatibility mode.
Might be possible to use it in Kafka compatibility mode to simplify development (but at that point I'm not sure if it's possible to leverage the other features).

Web Sockets capability
It's possible to expose the data stream over web sockets, might be interesting if we want to do fancy stuff in the UI (like real time tracing on a giant ring, I think this view was lost from the old days at Twitter?)

Lower latency thank Kafka (on paper)

Schema registry
If the data is persisted in one of the formats that support schema it might be possible to evolve the format by using the format schema tools and the registry. I think using a schema is a requirement in order to be able to use Presto to query the data. JSON, Protobuf and Avro are supported.

A few non-func points from me:

Pulsar provides truly async client, while Kafka is coming from the blocking world
Pulsar consumer API is simpler than Kafka's (where if you don't poll you might end up de-assigned from the partition (sic!))
Running Kafka behind NAT is problematic, while Pulsar can be used with a proxy
Pulsar SQL is a driver for Presto, not a brand new tech from scratch by a commercial owner of the tech
Backing up Pulsar clusters is much easier thanks to the tiered storage

Is 2) a problem? I think in this case we care mostly about the publisher API (agent -> pulsar) which can also be batched/delayed locally (at risk of loss).

is an advantage of Pulsar, not a problem :) Sorry for confusing :)

Also, Kafka's publisher can block on publish, even if async API is used, while afaik there is no such issue in Pulsar

No problem. I think Kafka did mitigate the blocking client a bit in the last releases (just for fairness/completeness of the argument)  https://cwiki.apache.org/confluence/display/KAFKA/KIP-266%3A+Fix+consumer+indefinite+blocking+behavior

Only in the consumer part, but there are still blocking calls in Kafka's async producer :(

if anyone does a spike, do link back for the fans

I see there was a spike of interest, but unsure any outcome. Did anyone do anything?


clear input fields after a request is submitted succesfully

Use useState for the input fields which will help to set input field blank after handleSubmit function run.

closing this as the issue's fixed