[Discussion] make promise CE behave like the JS promise (cold+cached)

ref https://github.com/fable-compiler/fable-powerpack/issues/59
EDIT: I got it to work:

The object returned from Delay is unstable - querying it multiple times will execute it multiple times.
The solution is to wrap that object in Run.
I chose Promise.Create as a wrapper, because that should preserve the lazy aspect. If no one subscribes to the object returned by promise { }, then nothing should be executed. If multiple callbacks subscribe, then it should behave exactly like the JS promise and only execute once.

Tbh I always thought we are already having js semantics O_o

I agree with making it mimic JS semantics as much as possible, especially since we also support async for cold computations

The funny thing is that I'm always using the Promise wrapper in Ionide codebase because it behave exactly like JS.

If no one subscribes to the object returned by promise { }, then nothing should be executed

It's not the JS behavior... new Promise both create a promise and start it, whenever you subscribe to it or not.
TBH I would prefer the current behavior to an half-half solution

I agree with @vbfox here

You are right.
This will immediatly log:
var p1 = new Promise(
    function(resolve, reject) {
      console.log("Inside Promise");

      resolve(1);
  }
);

I also agree with @vbfox and @MangelMaxime , I want the promise to behave the same as JS.
I just misunderstood JS ;D

Noticed this on my Twitter feed.
I’m not a Fable or F# user, but played with them, might do so again in the future, so take my opinion with a grain of salt.
I’m the author of Monix, of Funfix and the current leader of Cats-Effect.
Mentioning this because I’ve implemented the “IO monad” multiple times already and the notion of “lazy promise” is very dear to my heart.
So here’s my two cents on this matter:

The semantics of the JavaScript Promise aren’t a virtue; in fact for users of saner implementations, like Scala’s Future, the Promise in JavaScript is broken
Strict evaluation for Promise-like data structures is anti-FP because it breaks referential transparency
Parallelism / concurrency is error prone because it couples evaluation order with side effects, so you have to pay attention to evaluation order, which in the context of asynchronous computations it’s not something that’s easy to do

By contrast “lazy promises”:

Enable real FP which we want because equational reasoning is nice to have when dealing with concurrency
Decouples evaluation order from the side effects, which really means that the parallelism and the concurrency become really explicit and not something that can happen by accident
Enable features that with strict Promises you cannot have

That piece of code where the log gets printed multiple times? Hell yeah, that’s how sane implementations should behace by default.
For example a lazy promise implementation can be retried in case of failure, you can define reusable functions with complex retry logic that works for any such value, with exponential back-off or whatever, which with a strict Promise you’d have to work with parameterless functions (aka thunks), which are error prone, due to the aforementioned evaluation.
You can also do lazy and thread-safe memoization, making it behave like a strict Promise, except that the value is computed only on first use and then reused for subsequent calls.
There’s a lot of value in not implementing the semantics of JavaScript’s Promise and that’s not a bad thing.
Going to be blunt about it, but after experiencing other implementations and ways of doing things, I think JavaScript’s Promise is the perfect example of everything that’s wrong with JavaScript.

I think the big topic is user expectations.
If the CE is called promise, then my first expectation, without reading any docs, is that it behaves exactly like the JS promise, for better or worse.

There have already been lengthy discussions about C# Task vs F# Async, with similar content as your post.
And you are probably right that a lazy promise may be objectively better.
But then it needs a different name. Either call it lazyPromise, or use async (which already exists and works in Fable).
Basically what I want to say is, that if your thing is called Promise, and there is already an existing Promise concept in the ecosystem, then it better behave the same (broken) way.

Thanks a lot for your input @alexandru, it's very valuable! I do agree that lazy promises have many benefits and that's why they were implemented like that in the first place.
But also understand the concerns about user expectations and this seems to be a problem of weak semantics. Maybe we could deprecate promise (adding an Obsolete attribute so it doesn't break people's code) and replace it with two implementations: lazy/coldPromise that behaves as it does now and cached/hotPromise that matches JS behaviour?

I meant deprecating to remove the ambiguity of promise and make people be more explicit about the intentions using either hotPromise or coldPromise.
I'm not sure if it's a good choice to rename the current CE to lazyPromise and give a new behavior to promise. But if that's the preferred solution for the majority we can do it.

I meant deprecating to remove the ambiguity of promise and make people be more explicit about the intentions using either hotPromise or coldPromise.
I'm not sure if it's a good choice to rename the current CE to lazyPromise and give a new behavior to promise. But if that's the preferred solution for the majority we can do it.

We should avoid this situation it will lead to potential subtile bugs.
In Elmish.HMR 3.x we did remove completly Program.withHMR so it give you a compiler error and people still have a hard time doing the conversation.
So imagine, if this is the same API name but the internal behavior changed... :)

I think that there are already many subtle bugs because people expect promise to behave like js (as evidenced by this thread), but it currently doesn't.
So I think my current preference would be to:

mark promise as deprecated (possibly error level) and point them to this thread.
create a new builder jsPromise (name open to debate)
maybe create a new builder lazyPromise.

But I don't think we should create a lazyPromise. If you have a Promise object, you never know if it is lazy or eager.
So if we want lazy futures, we should either use async, or create a new builder that wraps funfix.

Hum @0x53A made me think...
I think we should just fix current promise implementation. We kind of all think that it's having the same behavior as in JS and also Fable do favor interop in general.
IHMO if someone wants to implement "lazyPromise" he can create a dedicated library for it.

Ok, given that most of the people expects promise to behave like JS promises even if this is not the "right" behaviour, let's merge this :+1: I'll publish a new major version of the library. Thanks @0x53A!

Thanks all!


Unsupported (Keep this Open)

Multi-threading is unsupported
Adding Mouse Events to WebBrowser control
ToolStrip is an Alias for MenuStrip in this software.
Direct use of Items Collections from the PropertyGrid. Most times these item types are listed in the control collection in the TreeView under 'Menus and ToolStrips'
When designing with a DPIScale greater than 1, locations and sizes that are equal to 1 may save as 0. Won't fix.
- Misconception here. Has to do with ImageScalingSize not saving appropriately.
"PowerShell 7 may multiply DPI for ImageScalingSize twice for some items at control creation. This is due to built-in advanced DPI support. If you change this property in the PropertyGrid, this is corrected making this 'bug' more of a 'design choice', but it is a difference in the application between PowerShell 7 and PowerShell 5."

MDI Windows take some tricks to get to work. Wontfix

ImageScalingSize must be manually set to 16,16 if left at defaults in fbs files. Wontfix

Function CheckedList is not a sort of the entire list, but rather a sort of module by module. The base module requires this. Wontfix

A TabPage must be added by doubleclick to a TabControl and not drag and dropped.

If there are no spaces in a project edit window, like pushing the spacebar, then a 1000 loop occurs for every character typed which will cause high processor usage.
All projects start with a hidden space in the Region Images.

Release 2.7.0 was bugged. Removed.


chore: refactored csharp generator

Description
This PR refactors the Csharp generator to use the new core model.
Related issue(s)
Blocked by https://github.com/asyncapi/modelina/pull/765

One thing that I cannot figure out how to do, is this part: https://github.com/asyncapi/modelina/pull/770/files#diff-2faa1e9552eea599774f544e24f782ea9921d9c5b00b39b97218e42ef470c492R152-R162
Still WIP.

Seems like there are a few testing errors in blackbox testing

Seems like there are a few testing errors in blackbox testing

Thanks, @ron-debajyoti! Quite a lot of the tests are not working because this is just a tiny part of the rewrite. I will make sure they work in a few PRs once the code is completely reworked 🙂


Minima IPv6 quick and dirty POC

This is a quick and dirty hack, but working prototype, for Minima partial IPv6 support as a proof of concept; for demonstration purposes.
This allows for peers IP:PORT to be defined for IPv6 addresses as well, by simple notation: e.g.: fda9:e0aa:589f::2:9001. For proper implementation we may want to only allow the unambiguous square brackets notation, e.g.: [fda9:e0aa:589f::2]:9001 ?
For proper implementation we may want to filter-out "local" addresses: link local (fe80::/10) and unique local (fc00::/7), and loopback (::1/128). Analogous as the code currently does with IPv4 (and then an -allip option override).
Testing: Running on testnet in docker containers w/ unique local IPv6 addresses.
Can send messages over Maxima; Maxima contact addresses w/ IPv6:
"contact":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G13P2JWVKB65Y6C9H4SCM03RY9DRFSBYDAVTRZ3286DRC6426MHAEZZ3GB8G23VCR5EWN82R22843R34056M06Z6BQEY6SJKYGEWZZ3J9T9WHFHSVNFBS222YA0QDAVYGGGNR4HSBNZ87JNHFAJ08ZQQVMP64M1GHHDSEHCEUZ110303NJBW1TUGD5D3CTK0Z5UD3QBSDVFZUUK10608006QWVV1A@fda9:e0aa:589f:0:0:0:0:4:9001"
This does mean that such a node may not be able to communicate over Maxima with a node that may only be connectable via IPv4 (as this node's maxima contact address has only an IPv6 relay address).
The current assumption is there is 1 relay IPv4 address in the Maxima contact address. If adding IPv6 support, maybe Maxima addresses could be extended to be able to have 1 or more IPv4 and/or IPv6 addresses of relay nodes? Maybe simply separated by a comma? e.g.:
"contact":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G13P2JWVKB65Y6C9H4SCM03RY9DRFSBYDAVTRZ3286DRC6426MHAEZZ3GB8G23VCR5EWN82R22843R34056M06Z6BQEY6SJKYGEWZZ3J9T9WHFHSVNFBS222YA0QDAVYGGGNR4HSBNZ87JNHFAJ08ZQQVMP64M1GHHDSEHCEUZ110303NJBW1TUGD5D3CTK0Z5UD3QBSDVFZUUK10608006QWVV1A@fda9:e0aa:589f:0:0:0:0:4:9001,<IP_ADDRESS>"
There may be additional backwards compatibility considerations to think of.
node 2: Add initial peer as an IPv6 address:port
peers action:addpeers peerslist:fda9:e0aa:589f::2:9001
{
  "command":"peers",
  "params":{
    "action":"addpeers",
    "peerslist":"fda9:e0aa:589f::2:9001"
  },
  "status":true,
  "pending":false,
  "response":{
    "valid":"[fda9:e0aa:589f::2:9001]",
    "invalid":"[]",
    "message":"Valid peers added to checking queue.."
  }
}

node 1: after node 2 has added it as its initial peer:
Minima @ 06/11/2024 15:50:58 [386.2 MB] : [D] [+] Setting My IP: fda9:e0aa:589f:0:0:0:0:2
Minima @ 06/11/2024 15:50:58 [386.3 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0

Minima @ 06/11/2024 15:50:47 [378.7 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0
Minima @ 06/11/2024 15:50:57 [385.2 MB] : [D] [-] Prevent node from adding localhost address to peers list <IP_ADDRESS>
Minima @ 06/11/2024 15:50:58 [386.2 MB] : [D] [+] Setting My IP: fda9:e0aa:589f:0:0:0:0:2
Minima @ 06/11/2024 15:50:58 [386.3 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0
Minima @ 06/11/2024 15:51:04 [53.6 MB] : [D] [!] P2P requesting NIO connection to: fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:04 [56.3 MB] : Connected attempt success to fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:04 [56.4 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0
Minima @ 06/11/2024 15:51:04 [297.6 MB] : Setting MLS server : MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G14HG3ZTZ4DB1FJN0D1KC3HDBVE0YRP1SF98B9HF025C2YRYP3YET89W76RNHD05YE5EDGVZ6C773H9CWA06NAYKDWTHNKEG76DZKM9GV2NSMA8W9ZDHEBWTJ63F80RCSWTGNMS82YF9PHZB3EHF3CC1C72BEGVW71CDMS4W25RUEK5A2P60PHCG7BMACAMRFVEAJB79FWS5644106080069RQS2N@fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:08 [107.9 MB] : [D] [-] Prevent node from adding localhost address to peers list <IP_ADDRESS>
Minima @ 06/11/2024 15:51:11 [64.8 MB] : Re-Calculate device hash rate : 0.3974 MHs
Minima @ 06/11/2024 15:51:15 [66.7 MB] : [D] [-] Prevent node from adding localhost address to peers list <IP_ADDRESS>
Minima @ 06/11/2024 15:51:16 [66.8 MB] : [D] Attempting to scale outlinks
Minima @ 06/11/2024 15:51:16 [67.0 MB] : [D] [+] Walk to scale out-links returned. Path: [/fda9:e0aa:589f:0:0:0:0:2:9001, /fda9:e0aa:589f:0:0:0:0:3:9001] Connecting to node: /fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:16 [67.0 MB] : [D] [!] P2P requesting NIO connection to: fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:16 [67.2 MB] : Connected attempt success to fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:16 [67.6 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0
Minima @ 06/11/2024 15:51:16 [96.1 MB] : INVALID MAXCHECK REC:17DDVDPKI0692 FROM:2H9KEAV12A7AB Could be multiple connections to the same Host..? @ fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:22 [37.9 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0
Minima @ 06/11/2024 15:51:28 [115.1 MB] : [D] Attempting to scale outlinks
Minima @ 06/11/2024 15:51:28 [115.2 MB] : [D] [+] Walk to scale out-links returned. Path: [/fda9:e0aa:589f:0:0:0:0:2:9001, /fda9:e0aa:589f:0:0:0:0:3:9001] Connecting to node: /fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:28 [115.2 MB] : [D] [!] P2P requesting NIO connection to: fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:28 [115.4 MB] : Connected attempt success to fda9:e0aa:589f:0:0:0:0:3:9001
Minima @ 06/11/2024 15:51:28 [115.7 MB] : [+] Connected to the blockchain Initial Block Download received. size:5 bytes blocks:0
Minima @ 06/11/2024 15:51:28 [75.9 MB] : INVALID MAXCHECK REC:FQT0DJMD2QQHL FROM:2H9KEAV12A7AB Could be multiple connections to the same Host..? @ fda9:e0aa:589f:0:0:0:0:3:9001

Netstat shows connections via IPv4 and IPv6. I don't know why multiple connections to the same IP:PORT occur, though.
minima@e4eb767f3b14:~$ netstat -tuapn | grep java | grep ESTABLISHED
tcp6       0      0 fda9:e0aa:589f::2:34208 fda9:e0aa:589f::3:9001  ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:50740 fda9:e0aa:589f::4:9001  ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:55990 fda9:e0aa:589f::4:9001  ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:9001  fda9:e0aa:589f::3:42910 ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:54086 fda9:e0aa:589f::3:9001  ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:9001  fda9:e0aa:589f::3:34920 ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:9001  fda9:e0aa:589f::4:55726 ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:9001  fda9:e0aa:589f::3:60330 ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:52198 fda9:e0aa:589f::4:9001  ESTABLISHED 589/java
tcp6       0      0 fda9:e0aa:589f::2:9001  fda9:e0aa:589f::4:49050 ESTABLISHED 589/java
minima@e4eb767f3b14:~$

with -allip option:
minima@5a111f8fac23:~$ netstat -tuapn | grep ESTAB
tcp6       0      0 fda9:e0aa:589f::4:36606 fda9:e0aa:589f::2:9001  ESTABLISHED 2088/java
tcp6       0      0 <IP_ADDRESS>:37880        <IP_ADDRESS>:9001         ESTABLISHED 2088/java
tcp6       0      0 <IP_ADDRESS>:51088        <IP_ADDRESS>:9001         ESTABLISHED 2088/java
tcp6       0      0 fda9:e0aa:589f::4:9001  fda9:e0aa:589f::3:38640 ESTABLISHED 2088/java
tcp6       0      0 fda9:e0aa:589f::4:9001  fda9:e0aa:589f::2:52656 ESTABLISHED 2088/java
tcp6       0      0 fda9:e0aa:589f::4:54690 fda9:e0aa:589f::3:9001  ESTABLISHED 2088/java
tcp6       0      0 <IP_ADDRESS>:9001         <IP_ADDRESS>:51088        ESTABLISHED 2088/java
tcp6       0      0 fda9:e0aa:589f::4:52848 fda9:e0aa:589f::2:9001  ESTABLISHED 2088/java
tcp6       0      0 fda9:e0aa:589f::4:9001  fda9:e0aa:589f::3:47452 ESTABLISHED 2088/java
tcp6       0      0 fda9:e0aa:589f::4:9001  fda9:e0aa:589f::2:57928 ESTABLISHED 2088/java

status
{
  "command":"status",
  "status":true,
  "pending":false,
  "response":{
    "version":"1.0.41-TEST",
    "uptime":"0 Years 0 Months 0 Weeks 0 Days 1 Hours 58 Minutes 1 Seconds",
    "locked":false,
    "length":55,
    "weight":"285672967",
    "minima":"1000000000",
    "coins":"2",
 ...
 ...
    "network":{
      "host":"<IP_ADDRESS>",
      "hostset":false,
      "port":9001,
      "connecting":0,
      "connected":10,
      "rpc":{
        "enabled":true,
        "port":9005
      },
      "p2p":{
        "address":"fda9:e0aa:589f:0:0:0:0:2:9001",
        "isAcceptingInLinks":true,
        "numInLinks":5,
        "numOutLinks":5,
        "numNotAcceptingConnP2PLinks":0,
        "numNoneP2PLinks":0,
        "numKnownPeers":2,
        "numUnvalidatedPeers":0,
        "numAllLinks":10,
        "nio_inbound":5,
        "nio_outbound":5
...

maxima
{
  "command":"maxima",
  "status":true,
  "pending":false,
  "response":{
    "name":"towelbyte_test_1",
    "icon":"0x00",
    "publickey":"0x30819F300D06092A864886F70D010101050003818D0030818902818100C0E6861B8B4FCDC924445AA9FA834727E188315DDB0C67FB17B8CF8D3F41C28231EFC85E2F19BF482834C063D4A706EA6EFD2F1BBEE0BC0AAEC7C4126FBF0E71FA4298E092D40332720530EE902D4204C11EACEE548AFA40A56D0005E7ADDAA8934A3A7618E57F12B8D10D66A495D4C4648B4FA341CA11251DE82403B9BFF3F90203010001",
    "staticmls":false,
    "mls":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G17877K1YKF3K5CV2FR7FM5ZM7HS0BD25018PEB4AFW37C6Q2EQT37WJ56PBKFYCY1QVZV294ST06T323CJ7RH2SQ2G8T5V7N8V0F2C53VPKJHPHHUN2YDR318EJ0ENN9YVZ9D2QBPAH89FM26JCMJYM8U8BWYRF8SQWPYGPKB425QBP88CBJPSFDRWF856Z7TDF9738M9KP3A410608004YVG9VM@fda9:e0aa:589f:0:0:0:0:3:9001",
    "localidentity":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G12CKF95HP9Q1SFEM5DFCE9BVCWGZQ6WZA2NDM2HHAH59CEA2VCHYDS6QCYZSDP175P15FB4CRB16MHK1YEU9ARST1C6VASB524HNEEZM45UGH17EZ5ZQ1FJ81RTH88GGN09RD73QDZSYFMRW594ZJ6F7KBZNNN6487YV18376PN0K89KJ9BQMCP03T1PU5DM7SFD9MQ12ETA0C10608006YF3AYF@<IP_ADDRESS>:9001",
    "p2pidentity":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G12CKF95HP9Q1SFEM5DFCE9BVCWGZQ6WZA2NDM2HHAH59CEA2VCHYDS6QCYZSDP175P15FB4CRB16MHK1YEU9ARST1C6VASB524HNEEZM45UGH17EZ5ZQ1FJ81RTH88GGN09RD73QDZSYFMRW594ZJ6F7KBZNNN6487YV18376PN0K89KJ9BQMCP03T1PU5DM7SFD9MQ12ETA0C10608006YF3AYF@fda9:e0aa:589f:0:0:0:0:2:9001",
    "contact":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G13P2JWVKB65Y6C9H4SCM03RY9DRFSBYDAVTRZ3286DRC6426MHAEZZ3GB8G23VCR5EWN82R22843R34056M06Z6BQEY6SJKYGEWZZ3J9T9WHFHSVNFBS222YA0QDAVYGGGNR4HSBNZ87JNHFAJ08ZQQVMP64M1GHHDSEHCEUZ110303NJBW1TUGD5D3CTK0Z5UD3QBSDVFZUUK10608006QWVV1A@fda9:e0aa:589f:0:0:0:0:4:9001",
    "logs":false,
    "poll":0
  }
}

maxcontacts
{
  "command":"maxcontacts",
  "status":true,
  "pending":false,
  "response":{
    "allowallcontacts":true,
    "contacts":[{
      "id":1,
      "publickey":"0x30819F300D06092A864886F70D010101050003818D00308189028181008A27FEE846DE496A82B6DDCADCD7DA8BD7A97AAF453D3A9C7BA8285EAE6A98A5ED3CCB2210021ADFFAF758A2DF2C2A3FE78A317FD447658233DFD3749B6A6A3D1999348349673B71B0F31EA9174CE261B41A55D8AC6582219D5A89429F608608C28AE884FD8942BCDA7EFA21C35E98F7D85B215A4FF25FA30A537EC52F9DA8050203010001",
      "currentaddress":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G17877K1YKF3K5CV2FR7FM5ZM7HS0BD25018PEB4AFW37C6Q2EQT37WJ56PBKFYCY1QVZV294ST06T323CJ7RH2SQ2G8T5V7N8V0F2C53VPKJHPHHUN2YDR318EJ0ENN9YVZ9D2QBPAH89FM26JCMJYM8U8BWYRF8SQWPYGPKB425QBP88CBJPSFDRWF856Z7TDF9738M9KP3A410608004YVG9VM@fda9:e0aa:589f:0:0:0:0:3:9001",
      "myaddress":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G13P2JWVKB65Y6C9H4SCM03RY9DRFSBYDAVTRZ3286DRC6426MHAEZZ3GB8G23VCR5EWN82R22843R34056M06Z6BQEY6SJKYGEWZZ3J9T9WHFHSVNFBS222YA0QDAVYGGGNR4HSBNZ87JNHFAJ08ZQQVMP64M1GHHDSEHCEUZ110303NJBW1TUGD5D3CTK0Z5UD3QBSDVFZUUK10608006QWVV1A@fda9:e0aa:589f:0:0:0:0:4:9001",
      "lastseen":1730907392814,
      "date":"Wed Nov 06 15:36:32 GMT 2024",
      "extradata":{
        "name":"towelbyte_test_2",
        "icon":"0x00",
        "minimaaddress":"MxG087Z13DVAGPTVVH99KQ0UAUM23QRHUKC4Z3W0WR3G7RR1ZC0MWWS8TF5EPYW",
        "topblock":"424",
        "checkblock":"408",
        "checkhash":"0x00000751E7420B35D79A46229B48BFF2A9695542DCDBFC4E88F69BA439FBD7EC",
        "mls":"MxG18HGG6FJ038614Y8CW46US6G20810K0070CD00Z83282G60G12CKF95HP9Q1SFEM5DFCE9BVCWGZQ6WZA2NDM2HHAH59CEA2VCHYDS6QCYZSDP175P15FB4CRB16MHK1YEU9ARST1C6VASB524HNEEZM45UGH17EZ5ZQ1FJ81RTH88GGN09RD73QDZSYFMRW594ZJ6F7KBZNNN6487YV18376PN0K89KJ9BQMCP03T1PU5DM7SFD9MQ12ETA0C10608006YF3AYF@fda9:e0aa:589f:0:0:0:0:2:9001"
      },
      "chaintip":"435",
      "samechain":true
    }]
  }
}

Thanks!
I'm having a play..
as we discussed the issue is whether to just switch to v6.. or use Both..


mathematical operations on a specific row or column of an xarray

in Python and Numpy I would do this:
    mat[0, 0, :, 0] *= value

which multiplies a column by a value. Is it possible to do this in xtensor without using masks?

sure - what you have on the left hand side is just a view.
To translate your code:
xt::view(mat, 0, 0, xt::all(), 0) *= value;

Cheers!

the same should work with all other views (filter view, strided view etc.)


Spa does not work with service worker when enabled.

Hi,
Spa dose not work with service worker.
Generated service worker's cache file precache-manifest, store spa url with parameter, so reload of any page for SPA, it lost it's own cache link or get mismatch regexp link i think.
Any advice or fix can be appreciable.

@WebScaffolder This issue might have been fixed by Ethan in #57 or #73. Can you download the latest version and test again? Thanks!

@WebScaffolder Can provide more details / example code? Otherwise I will have to close the issue because I haven't found a problem.

Sorry for delay, shortly i will provide video demonstration.

That would be great! Please make sure to use the latest version of the new-ui branch.

@WebScaffolder Any update on this issue? A video demonstration or any other additional details would be very helpful. Thanks!

ok let me check.
Jamial Hasan

On Tuesday, 22 March 2022, 03:01:59 GMT, Terren<EMAIL_ADDRESS>wrote:

@WebScaffolder This issue might have been fixed by Ethan in #57 or #73. Can you download the latest version and test again? Thanks!
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

@WebScaffolder Please let me know if you can check this. Simple Web Server is now released on the Microsoft Store, so you can test with the version if you'd like. Thanks!

@WebScaffolder I'm closing this issue because it has been over 50 days since we heard from you, and I don't have enough information to recreate the issue. Please feel free to comment with more information (such as the video demonstration you mentioned), and I'll reopen the issue.

@terreng based on the title, this would have been a problem with his code, not with the server


ASG node rotation after launch configuration / template change

I have issues
I'm posting this issue before I open a PR around this in order to have a discussion around how to best handle this problem in the context of this module. Currently the module updates launch configurations, and the auto scaling group is updated with this new configuration. However, the old nodes aren't rotated out, and it's left up to the user as to how to rotate out their nodes with the old configuration.
I'm submitting a...

[ ] bug report
[X] feature request
[ ] support request
[ ] kudos, thank you, warm fuzzy

What is the current behavior?
My example came from changing my t3.medium worker group to use t3.large. While the launch configuration and ASG were updated, the old nodes persist without any change.
What's the expected behavior?
The nodes should be rotated out by the terraform apply command using the create_before_destroy lifecycle hook to ensure that nodes are first brought up before the old ones are killed.
There's a great Medium article (Using Terraform for zero downtime updates of an Auto Scaling group in AWS) that has the approach I think should be taken. Essentially, the name of the launch template is used as a prefix for the aws_autoscaling_group resource that's created.
resource "aws_autoscaling_group" "worker" {
  # Force a redeployment when launch configuration changes.
  # This will reset the desired capacity if it was changed due to
  # autoscaling events.
  name = "${aws_launch_configuration.worker.name}-asg"

  min_size             = 10
  desired_capacity     = 15
  max_size             = 25
  health_check_type    = "EC2"
  launch_configuration = "${aws_launch_configuration.worker.name}"
  vpc_zone_identifier  = ["${aws_subnet.public.*.id}"]

  # Required to redeploy without an outage.
  lifecycle {
    create_before_destroy = true
  }
}

I would update the module to use this approach for launch configurations / launch templates in order to handle node rotation.
Are you able to fix this problem and submit a PR? Link here if you have already.
Yes, but I am curious as to how other people currently solve this issue, or if there's an approach already in the module I haven't considered.
Environment details

Affected module version: 2.3.1
OS: macOS
Terraform version:

Terraform v0.11.13
+ provider.aws v2.4.0
+ provider.local v1.2.0
+ provider.null v2.1.0
+ provider.template v2.1.0

I'm not going to want my entire cluster to redeploy at the same time. The way I've always done it and the way I believe it should be done is to manually drain and terminate one node at a time. The way you have it up there you will still get an outage because kubernetes doesn't get the opportunity to gracefully drain the nodes. Once the new auto scaling group comes up the old one will be terminated with no grace period.

There is also a long standing bug in Terraform that means the suggested workflow no longer works.
The ASG resource does not get correctly tagged for recreation if the launch config changes name. This results in the "cannot delete launch_configuration, resource still in use" error and then a messy terraform state. https://github.com/hashicorp/terraform/issues/17855

The nodes should be rotated out by the terraform apply command using the create_before_destroy lifecycle hook

1000% no 😅

I'm not going to want my entire cluster to redeploy at the same time

This is correct.

the old nodes aren't rotated out, and it's left up to the user as to how to rotate out their nodes

Exactly. This is desired.
When an ASG is deleted and all the instances are terminated, there's no graceful shutdown of pods. And some pods have complicated or time consuming processes that need to happen. These processes are correctly done in the draining process or when a pod is gracefully stopped. Some info here but specifically think about StatefulSets with Container Lifecycle Hooks. Here's some notable examples from some common Helm charts:

cassandra
graylog
elasticsearch

Yes, but I am curious as to how other people currently solve this issue, or if there's an approach already in the module I haven't considered.

Personally, for me, changes to the LC are quite a big deal. e.g. a new AMI. In this scenario I will manually drain nodes, wait for the pods to be pending, wait for the cluster-autoscaler to scale up, wait for pods to be started on the new nodes and then repeat. If your k8s workload is completely stateless then you could be more aggressive here but it really depends.
So perhaps we could implement the more aggressive option of ASG replacement as an option? Currently I think not as you can't have interpolation in lifecycle rules, unfortunately.
@sc250024 perhaps we could solve your problem a different way? Perhaps you could define your ASG outside of this module? Perhaps there's some missing outputs that would make this easy to implement?

but specifically think about StatefulSets with Container Lifecycle Hooks

An even simpler example: just a database that has an EBS volume mounted in the pod might need some time to shutdown.

This is a bigger issue when the module deletes and recreates a launch template. The ASG's do not get updated with the new launch template, leaving ASG's that are basically zombies.

Thanks everyone for their feedback! I guess this a controversial feature to have, and it seems right now is not the time to think about it. Personally, I'm coming from using Kops, and one feature that it has (that @RothAndrew and @max-rocket-internet mentioned) is to be able to rotate nodes out, one at a time, until the change you want is gone.
Does anyone have a link to an open-source project to do what Kops does, i.e. rotate nodes out one at a time, safely?

What if we use cloud formation (aws_cloudformation_stack) to do rolling upgrade (node by node) ?

@barryib I think that's more in line with what eksctl does, right? I think what I originally suggested is out of scope for this module. Frankly, I'm beginning to see more of the point of view of the original posters. Rotating out nodes should be something manual, or if it's in a pipeline, something done with some care and supervision. Closing this.

What if we use cloud formation (aws_cloudformation_stack) to do rolling upgrade (node by node) ?

While CloudFormation gives you a lot of control over the update process, e.g. replacing nodes 1 by 1, you'd still need to cordon and drain nodes. Unfortunately, that's not possible using vanilla CloudFormation.

@sc250024 @mlafeldt any thoughts on this https://github.com/terraform-aws-modules/terraform-aws-eks/issues/462 ?

https://github.com/aws-samples/amazon-k8s-node-drainer sounds very interesting. Going to give it a try. 👍
At this point, I'm using eksctl to deploy EKS clusters and update worker node groups, mainly because the upgrade path is too cumbersome with Terraform (which I prefer otherwise).

https://github.com/aws-samples/amazon-k8s-node-drainer sounds very interesting. Going to give it a try. 👍

After fixing a bug, I can report that the node drainer works as expected.

I tested it with plain Terraform by forcing the recreation of an ASG after changing the AMI ID. That, as expected, didn't work well as the replacement of the ASG will terminate all instances at once. That, in turn, will cause the node drainer to drain all nodes at the same time.

By using CloudFormation (via aws_cloudformation_stack) to manage the ASG, I was able to replace nodes one by one, so the node drainer could safely drain nodes one by one.

@mlafeldt I'll give it a try as well

@mlafeldt Thanks for your feedback.

I tested it with plain Terraform by forcing the recreation of an ASG after changing the AMI ID. That, as expected, didn't work well as the replacement of the ASG will terminate all instances at once. That, in turn, will cause the node drainer to drain all nodes at the same time. Bad.

Yes, this is an expected behavior. I was thinking to use SQS for notification with 1 as batch size of 1 for the lambda function to drain nodes one by one.

By using CloudFormation (via aws_cloudformation_stack) to manage the ASG, I was able to replace nodes one by one, so the node drainer could safely drain nodes one by one.

Great. The AutoScalingRollingUpdate of cloudformation is awsome for this use case. Unfortunatly, the terraform-aws-eks module doesn't support cfn and it sounds like it won't support either.

One thing that's also possible with Terraform is to add a provisioner script to the launch configuration that will drain nodes of the old ASG before deleting it.
  provisioner "local-exec" {
    command = "./provisioner.sh ${local.image_id}"
  }

The script might use node labels added via user data (e.g. --kubelet-extra-args '--node-labels=ami_id=${local.image_id}') to know what nodes to drain.
Here's an example script I used for testing:
#!/bin/bash

set -e
set -x

new_ami_id="$1"

kubectl cordon --selector "ami_id!=${new_ami_id}"

nodes=$(kubectl get node --selector "ami_id!=${new_ami_id}" -o json | jq -r '.items[].metadata.name')

for node in $nodes; do
    kubectl drain "$node" --ignore-daemonsets=true --delete-local-data --force
    sleep 60
done

However, unless this script is super robust (which it clearly isn't at the moment), I consider this a hack more than anything else.

@mlafeldt That's pretty much what I do locally; let this module update the ASGs, and run something like that script.
For the setup of the Cloudformation/ SQS, maybe that could be documented in this repository? Whether or not it's actually implemented in the module is up for debate, but it'd be super cool if there was a document describing how to do it in general.

The script might use node labels added via user data

You can also just filter by kubeletVersion:
kubectl get nodes -o json  | jq -r '.items[] | select(.status.nodeInfo.kubeletVersion == "v1.11.9") | .metadata.name'

@mlafeldt That's pretty much what I do locally; let this module update the ASGs, and run something like that script.

The advantage of calling the script via local-exec is that you would never have to run it manually, decoupled from Terraform. At least in theory. 😁 I'm still not sure it's a viable path.

FWIW, I tested the lambda function with SQS (autoscaling group can send lifecycle hook events into a queue). I was able to spawn new nodes and to drain old nodes in batch (one by one in my case). For now, everything looks good. I'll try to test more in the next couple of days.
PS: I found another lambda for EKS draining https://github.com/awslabs/amazon-eks-serverless-drainer which is written in few lines of bash.

We've put some thought into this too, but what we're leaning toward is creation of ASG scheduled actions in Terraform to handle this rotation for us.


Incompatible with Firefox.

Hi,
Version 0.0.2 of the extension is no longer compatible with Firefox: the file appears to be corrupted.
Regards,
Florian COLLIN

We are working on it to solve it as early as a v0.0.3, which could be available by the end of the month. Meanwhile v0.0.1 is still available and is stable.


have some story for updates on cloud

It's not clear how to do automatic updates on Cloud. Seems important, though.

This might be as simple as "re-run the deployment scripts, having first backed up your invite codes", at least initially.

The major thing here is restoring the getter and giver's authorized_key files. Should be straightforward with docker cp, as we've done for banner and hostname.

Looking at this now - agreed that just rerunning run_cloud.sh, perhaps with a new -u flag, is a good way to go. Should be cronnable, and yeah as long as the invite codes and authorized keys are persisted the rest should be okay.

Right. We can be conservative, i.e. abandon the update if authorized_keys can't be backed up for any reason. There is an -r switch already which I think we can re-use: it means "stop any containers you find, and rebuild any images". It's basically for updates, although I've only ever used it so far during development. Adding it as a cronjob is worth exploring.

Reopening under a new now-more-relevant title - the -u flag makes updating doable, but for this to matter the script should probably do something like insert a cronjob that tries to update once a week.

Let's not forget about migrating authorized_keys files. We should tackle that before moving to automatic updates.

This issue is blocked by https://github.com/uProxy/uproxy/issues/2213, though I have posted a comment there as well for discussion (basically it's unclear to me at least how much effort we need to persist info beyond the invite code, which seems to enable reconstructing the rest).
I think resolving that, the main other thing to do is decide how to cron the update job. A naive initial take: https://github.com/uProxy/uproxy-docker/compare/soycode-updatecron
Possible concerns:
-If the VPS is in a different timezone than the user, midnight Sunday might not be a good time
-Sticking the repo in /root may not be best, but I wanted to use something other than mktemp so that it persists across reboots
-This reruns the install script, which will pull uproxy-lib updates pushed to npm - but it doesn't update the uproxy-docker repo itself, which may be advisable (at least to some specific branch/tag)

Could be useful:
https://help.ubuntu.com/14.04/serverguide/automatic-updates.html

Agreed - in my general experience most cloud providers have security updates already turned on in their default images, but definitely both checking that and possibly extending makes sense.

@soycode I think you're right, I just created a DigitalOcean droplet and unattended-upgrades is installed and configured:
root@stress:~# dpkg -l|grep unatt
ii  unattended-upgrades                 0.82.1ubuntu2.4                  all          automatic installation of security upgrades
root@stress:~# cat /etc/apt/apt.conf.d/50unattended-upgrades
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
	"${distro_id}:${distro_codename}-security";
//	"${distro_id}:${distro_codename}-updates";
//	"${distro_id}:${distro_codename}-proposed";
//	"${distro_id}:${distro_codename}-backports";
};
...
...

This leaves, I think, just two issues:

we should configure unattended-upgrades in our Docker images, too
upgrading our Docker images, too

The first should be straightforward, the second is a lot trickier.

OK, we've added unattended-upgrades to the containers, too.
This leaves the question of updating uProxy/Zork itself. Since it does not have a direct connection to the outside, I think we can answer this later: I can imagine in a few months time, when we have a really important update ready, that the uProxy client could prompt the server owner to push an update. This defers to the user as to when's a good time to update and means we don't have to go configuring cron (or similar) on the host machine.
Marking as shut for now, will discuss with UX and open further update-related issues.

@trevj When I logged into one of our Quiver servers recently, I was surprised to find a backlog of 86 available security updates that had still not been installed. Looking at https://github.com/uProxy/uproxy-docker/pull/71/files, it looks like we're now installing the unattended-upgrades package, but we're never actually enabling them to take place by creating a /etc/apt/apt.conf.d/20auto-upgrades config. Should this be reopened until that's added?


Readme shows unusable expansion variable '${project_folder}'

README is outdated - the ability to use the '${project_folder}' variable is deprecated but still mentioned in the settings.
I made a pull request #1 to reflect the SublimeLinter expansion variable documentation and change from '${project_folder}' to '${project_path}' in the README.

${project_folder} could be for SL3 compatibility I guess. I am sure that there were codes that interpret ${project_folder} like https://git.io/vxThI in SublimeLinter-clang because I clone SublimeLinter-clang as SublimeLinter-gcc a year ago.

It looks like SublimeLinter-clang removed that bit of code/functionality when upgrading to SublimeLinter 4. I think the changes you made to the linter in SublimeLinter-gcc can also benefit this linter (and SublimeLinter-avr-gcc which I maintain!). Thanks for keeping up on its development!

See #1


Terminal: No place to open terminal to

Doesn't work. This is what the plugin throws on Ctrl+Alt+Shift+T. What is this? How to fix?

You might have something which conflicts with MTF's shortcut. This message doesn't belong to MTF


Version 0.1.5 not available on CocoaPods spec source

Xcode version: 9.0
FirebaseCommunity SDK version: 0.1.5
Firebase Component: Messaging

The 0.1.5 version of the firebase-ios-sdk is already available through GitHub, but hasn't been uploaded to the CocoaPods specs source repository.
This makes it impossible to release frameworks that depends on the 0.1.5 of the firebase sdk version through CocoaPods, which gives the following error:
None of your spec sources contain a spec satisfying the dependency: FirebaseCommunity/Messaging (= 0.1.5).
It is possible to use the 0.1.5 version in a Podfile by specifying the source in the pod line. But Podspecs files don't allow specs sources to be defined.
To reproduce the problem, just a podspec file with the following line is required:
s.dependency 'FirebaseCommunity/Messaging', '0.1.5'
Then, when running the pod spec lint command the reported error occurs.

I hope to get 0.1.5 pushed later today. If you need to go sooner, you could go back to 0.1.4.  I'll update this issue after the push.

Pushed:

🎉  Congrats
🚀  FirebaseCommunity (0.1.5) successfully published
📅  October 30th, 13:27
🌎  https://cocoapods.org/pods/FirebaseCommunity
👍  Tell your friends!


v4l2: Add enumerate_framesizes()

Hey!
I've added implementation for framesize enumeration
https://www.kernel.org/doc/html/v4.10/media/uapi/v4l/vidioc-enum-framesizes.html

Hi, thanks for this!
Could you please squash the commits into one to keep the history pristine?
I have to say I'm not really happy with adding too many functions to the capture::Device struct. Maybe I can come up with a better API here. Will probably think about it for two or three days and then make a decision.


Support empty prefix for [http.services.ocmd]

When I edit revad.toml from:
[http.services.ocmd]
prefix = "ocm"

To:
[http.services.ocmd]
prefix = "bla"

Then:

http://revad:19001/ocm/ocm-provider/ changes from a 200 to a 401
http://revad:19001/bla/ocm-provider/ changes from a 401 to a 200

But when I change it to prefix = "" that does not have the desired effect of turning http://revad:19001/ocm-provider/ from a 401 to a 200.
There is probably an if-statement somewhere that makes this config var default to 'ocm' if it's falsy, or something like that.
Investigating.

Ah yes, there is it: https://github.com/cs3org/reva/blob/v1.11.0/internal/http/services/ocmd/ocmd.go#L50-L52
Will have to work out how to differentiate between
http://revad:19001//ocm-provider/ (which would be the literal interpretation of prefix = "")
and
http://revad:19001/ocm-provider/ (which is desired)

Ah, one service can be exposed at the root, so this should work fine, thanks to: https://github.com/cs3org/reva/blob/v1.11.0/pkg/rhttp/rhttp.go#L242

Ah yes. Just had to move ocdav out of the way and now it work! :)


fix(deps): update terraform ibm to latest for deployable modules / architectures

This PR contains the following updates:

Package
Type
Update
Change

ibm (source)
required_provider
patch
1.68.0 -> 1.68.1

Release Notes

IBM-Cloud/terraform-provider-ibm (ibm)
v1.68.1
Compare Source
BugFixes

Fix code engine job regression (5545)
Update(Cloud-Databases): Added hints for region and location mismatches (5557)
fix(Cloud-Databases): Remove deprecated connectionstrings attribute (5554)
remove the return value from waitForVpcCluster (5557)
fix: read endpoint type from schema (5552)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

:tada: This issue has been resolved in version 1.0.20 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Remove affordance for clicking badges

The badge seems clickable when the cursor is a pointer, but clicking on the button does nothing.
Just a quick first PR to say hi, looking to contribute more in the future!

Awesome, thanks!


[flutter_releases] Flutter 2.0.2 Stable Framework Cherrypicks

Scheduled Cherrypicks

[ ] Engine cherrypicks

https://github.com/flutter/engine/pull/24928

[x]  '_initialButtons == kPrimaryButton': is not true. #75061

https://github.com/flutter/flutter/pull/75943
Original author: @goderbauer

[x] Issue with ScaffoldManager and double scaffold #77251

https://github.com/flutter/flutter/issues/77251
https://github.com/flutter/flutter/pull/77410
Original author: @Piinks

[x] ProcessException: cannot delete old bin/cache/artifacts/engine/darwin-x64/FlutterMacOS.framework/Resources #77234

https://github.com/flutter/flutter/issues/77234
https://github.com/flutter/flutter/pull/77316
Original author: @jmagman

I manually overrode the CLAbot because all authors have signed the CLA.

The failing tests passed for me locally:
Task result:
{
  "success": true,
  "data": {
    "engineEnterTimestampMicros":<PHONE_NUMBER>41,
    "timeToFrameworkInitMicros": 175697,
    "timeToFirstFrameRasterizedMicros": 1220647,
    "timeToFirstFrameMicros": 251485,
    "timeAfterFrameworkInitMicros": 75788
  },
  "detailFiles": [],
  "benchmarkScoreKeys": [
    "timeToFirstFrameMicros",
    "timeToFirstFrameRasterizedMicros"
  ]
}

════════════╡ ••• Finished task "complex_layout_ios__start_up" ••• ╞════════════

Task result:
{
  "success": true,
  "data": null,
  "detailFiles": [],
  "benchmarkScoreKeys": []
}

═════════╡ ••• Finished task "platform_channel_sample_test_swift" ••• ╞═════════

Task result:
{
  "success": true,
  "data": {
    "average_frame_build_time_millis": 1.226,
    "90th_percentile_frame_build_time_millis": 1.907,
    "99th_percentile_frame_build_time_millis": 11.696,
    "worst_frame_build_time_millis": 31.042,
    "missed_frame_build_budget_count": 6,
    "average_frame_rasterizer_time_millis": 5.026,
    "90th_percentile_frame_rasterizer_time_millis": 16.352,
    "99th_percentile_frame_rasterizer_time_millis": 57.886,
    "worst_frame_rasterizer_time_millis": 181.151,
    "missed_frame_rasterizer_budget_count": 125,
    "frame_count": 952,
    "frame_build_times": [
...
    ]
  },
  "detailFiles": [],
  "benchmarkScoreKeys": [
    "average_frame_build_time_millis",
    "worst_frame_build_time_millis",
    "90th_percentile_frame_build_time_millis",
    "99th_percentile_frame_build_time_millis",
    "average_frame_rasterizer_time_millis",
    "worst_frame_rasterizer_time_millis",
    "90th_percentile_frame_rasterizer_time_millis",
    "99th_percentile_frame_rasterizer_time_millis"
  ]
}

══════╡ ••• Finished task "flutter_gallery__transition_perf_e2e_ios" ••• ╞══════

Task result:
{
  "success": true,
  "data": {
    "engineEnterTimestampMicros":<PHONE_NUMBER>85,
    "timeToFrameworkInitMicros": 191307,
    "timeToFirstFrameRasterizedMicros": 1456516,
    "timeToFirstFrameMicros": 302828,
    "timeAfterFrameworkInitMicros": 111521
  },
  "detailFiles": [],
  "benchmarkScoreKeys": [
    "timeToFirstFrameMicros",
    "timeToFirstFrameRasterizedMicros"
  ]
}

═══════════╡ ••• Finished task "flutter_gallery_ios__start_up" ••• ╞════════════


HyperionUsbAsp ws2812 broken

1. Tell us something about your changes.
HyperionUsbAsp supports both ws2801 and ws2812 led strips
Re-add this option to the schema
2. If this changes affect the .conf file. Please provide the changed section
    "device": {
        "colorOrder": "grb",
        "latchTime": 10,
        "ledType": "ws2812",
        "rewriteTime": 5000,
        "type": "hyperionusbasp"
    },

I have still no clue what this usbasp stuff is.
It would be great if you could add some lines documentation to the new docu. Also for your last network protocols. As you didn't replied, i don't know if you have access or not.

https://www.mikrocontroller.net/attachment/226802/AC-PG-USBASP_LRG_1_.jpg
this one is a usb asp :)

perfect, just update the wiki article with some senteces and optional a picture :)

Although it's called a usbasp, you need to reflash the firmware on the device.
Happy to pull all the pieces together and document it - I replied again on the forum.

Can you fork the firmware ? https://github.com/poljvd/hyperion-usbasp

I know that documentation is no fun, i did a lot of it at the old, and entirely the new. Countless hours :)
Whatever you need: https://github.com/hyperion-project/hyperion-usbasp
Have fun, i posted the credentials at the forum conversation.

Thanks for forking - can you enable issues on the fork ?
There's lots I need to do and I want to track them.
Also can you merge this PR ?


Remove unnecessary clippy allows

Objective
I think that these allows are no longer necessary after #6534.
Solution
Let's remove them and see if clippy complains.

Waiting to see if this passes CI.

Bors r+


flutter: Content size below specified contentLength.  511 bytes written but expected 704.

Hi, I am facing these issue while I'm sending text file to server by using bio 3.0.9

HttpException: Content size below specified contentLength.  6719 bytes written but expected 8635
Also experiencing a similar issue:
Directory tempDir = await getTemporaryDirectory();
File outputFile = await File ('${tempDir.path}/flutter_sound-tmp.aac');
Dio dio = new Dio();
FormData formData = new FormData.fromMap({
"file": await MultipartFile.fromFile(outputFile.path,filename:"file"),
});
Response  response = await dio.put("http://<IP_ADDRESS>:5000/uploader", data: formData);
print (response.toString());

same issue here

I've fixed the upload and its progress after a few hours.
Code:
static Future<Response> upload<T>(
  String url,
  Future<Uint8List> file,
  String fileName,
  {
    String imageType = 'jpeg',
    Map data = const {},
    void Function(int, int) onSendProgress,
  }
) async {
  var fileStream = file.asStream().asBroadcastStream();
  var fileBytes = (await fileStream.toList())[0];
  var fileSize = fileBytes.length;

  var formData = FormData.fromMap({
    ...data,
    'file': MultipartFile(
      Stream.fromIterable(fileBytes.map((e) => [e])),
      fileSize,
      filename: fileName,
      contentType: MediaType('image', imageType)
    ),
  });

  var options = Options(
    headers: {
      Headers.contentLengthHeader: formData.length,
    }
  );

  return _dio.post<T>(
    url,
    data: formData,
    options: options,
    onSendProgress: onSendProgress,
  );
}

Using MultipartFile.fromFile() doesn’t resolve the issue completely.
The problem occurs intermittently


Testing Merging circles polyunion

With these tests we can see polyunion failing in some cases, for example:

for circles polygons with 17 or more steps or lower than 16

Thanks @AbraaoAlves will see if I can test and fix polygons before merging.
Here's a quick idea:
interface GeoJSONFeature {
    type: string;
    geometry: {
        type: string;
        coordinates: number[][][]; // For Polygon
    };
}

// Example GeoJSON data
const exampleGeoJSON: GeoJSONFeature = {
    type: "Feature",
    geometry: {
        type: "Polygon",
        coordinates: [
            [
                [0, 0],
                [0, 1],
                [1, 1],
                [1, 0],
                [0, 0] // Closing point should be the same as the starting point
            ]
        ]
    }
};

function isPolygonClosed(coordinates: number[][][]): boolean {
    const firstPoint = coordinates[0][0];
    const lastPoint = coordinates[0][coordinates[0].length - 1];
    // Check if they are the same
    return firstPoint[0] === lastPoint[0] && firstPoint[1] === lastPoint[1];
}

function fixClosedPolygon(feature: GeoJSONFeature): void {
    if (!isPolygonClosed(feature.geometry.coordinates)) {
        const firstPoint = feature.geometry.coordinates[0][0];
        feature.geometry.coordinates[0].push(firstPoint); // Append first point to close the polygon
        console.log("Polygon was not closed. Fixed.");
    } else {
        console.log("Polygon is already closed.");
    }
}

// Testing
console.log("Before fixing:");
console.log(JSON.stringify(exampleGeoJSON, null, 2));
fixClosedPolygon(exampleGeoJSON);
console.log("After fixing:");
console.log(JSON.stringify(exampleGeoJSON, null, 2));

Ok, so I found the problem. It turns out the intersect check was throwing an error. But, if this fails doesn't mean it won't work, we should skip the merge for that instance.
I've added a try catch block to avoid throwing and console.error instead.
Also, change the directory structure and simplified the tests.
@AbraaoAlves what do you think?

I've added a try catch block to avoid throwing and console.error instead.

@juanpujol I found out that another way to avoid throwing is to reduce the precision of the coordinates. Something like +value.toFixed(13) should be enough

@lamartinecabral, if you have an improvement feel free to create an issue with a new PR. Right now, this PR fixes the main issue we had to deploy the lib to production. This works for me and if it works for you, please approve it and we can make it better on the next patch.
Thank you.


Fix typo

@danmoseley : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Backport run_test.sh to enable --badgedir

This request backports run_test.sh from cwl-v1.2 to enable options such as --badgedir.
I just copied run_test.sh and modified the value of CWL_VER.

Thank you @tom-tan !


New FireFox v.27.0 Arrow Problem

Hello,
hint.css has been my very favorite tooltip script. I had been using hint for over a month.
I was using FireFox v.26.0 with no problems, but today morning FireFox automatically upgraded to v.27.0.
Now the shape of the tooltip arrow is crumbled, but the shape of the box is fine. This problem is only in FireFox and not in Chrome. I then tested this on a different computer with FireFox v.26.0 and the tooltip arrow was okay, I then upgraded the FireFox  to v.27.0 and the same problem is replicated.
Can you please test hint.css on FireFox v.27.0 and share your experience?
Best Regards,
Sanson

+1

Is this issue still present on Firefox?

Yeap. I've made the changes suggested and the triangle hint became much better.

After all, the changes made by @swiftusa looks fine in Firefox but looks horrible in IE 11 so I've made some tests.
If I set:
.hint::before, [data-hint]::before {
    border-style: inset;
 }

I have some different colors on triangle. Plunker.
-moz-transform: scale(.9999); is not an option since it conflicts with transform: translateY(...);
So I ended up (plunker) changing to:
.hint::before, [data-hint]::before {
    border: 8px solid transparent;
}
/**and some other changes***/

Tested in Firefox, Chrome and IE 11.


Fix detonate exceptions from async server calls with pooling

A bug report seemed to indicate null pointer exceptions when detonating and toggling renderers. This can be caused by dynamites being pooled while recieving an asynchronous detonate call. To mitigate this, if guards have been introduced when toggling from the detonate call.
A try catch block has also been added, as to mitigate the consequences of similar issues in the future, as has been done for RPCFire in GunController for the same reasons.

Actually, the reported bug wasn't found during online play at all AFAICT, it just looks that way since everything behaves kinda like it's online now. Thus, it might not have been an async issue at all...

I am very sure this is due to timing errors as the RPC's on hosting clients that are fast (like if they game is built and not in editor) can be called immidiately, while non-hosting client Rpc's will end up in an execution queue and handled at the end of a frame (based on what I managed to find in the documentation). It might be wrong to write "asynchronous" in the threading sense, but I believe this is a timing issue between the pooling of sticky dynamites and the timing of the rpc detonate. Either way, I think the if guards are worth adding 😅

Yeah, the guards and catch should alleviate both this and future issues, but we don't know if this was during online play (it likely wasn't), and this fix may hide the real cause for issues like this one (though more severe effects may be visible enough to be reported). I've left an approve here already, so feel free to slam the fix in 🫡


export default interface creates error it .d.ts file

TypeScript Version:  2.6.2
TypeScript Next Version:  2.7.0-dev.20171223
When defining an interface for a default class without the default keyword give an error. By adding the default keyword to the interface the error goes away. However when the declarations get created, there is an error in the .d.ts file.
Code
export default interface DataSet<I extends ModelItems> {
  [key: string]: any
}

export default class DataSet<I extends ModelItems> { }

This .d.ts file is generated:
export default interface;
export default class DataSet<I extends ModelItems> {
  // Snipped: properties and methods
}

This is the .js that is generated:
exports.default = interface;
DataSet < I;
ModelItems > {
    [key]: string, any
};
class DataSet {
}

Which then produces this error:

All declarations of '(Missing)' must have identical type parameters.

Expected behavior:
No error should be created in the .d.ts file
Actual behavior:
An error is generated in the .d.ts file

Is there more to this issue (such as some specific compiler settings or more context)? This doesn't seem to repro on master or in 2.6.2 as described here
//// [exportDefaultInterfaceMerged.ts]
export default interface DataSet<I> {
    [key: string]: any
}

export default class DataSet<I> { }

//// [exportDefaultInterfaceMerged.js]
"use strict";
exports.__esModule = true;
var DataSet = /** @class */ (function () {
    function DataSet() {
    }
    return DataSet;
}());
exports["default"] = DataSet;

//// [exportDefaultInterfaceMerged.d.ts]
export default interface DataSet<I> {
    [key: string]: any;
}
export default class DataSet<I> {
}


Redirection loop in Owncloud 8

Hello,
Upgrading a well running OC7 installation to OC8 the webmail-link ends in a redirection loop.
In the debug log is just:
Debug	no app in context	Accessing the API class is deprecated! Use the appropriate services instead!
The redirection loops from /index.php/apps/roundcube to /index.php/apps/roundcube.
Any idea how to workaround or fix?
Already tried to disable all "Location: " header-commands in app-libs, no success.
Thanks.

didn't tried OC8 yet, but maybe anyone else tried it.
It's annoying that with each OC version the API changes. That's one of the two reasons I stuff developing this app...

Hello,
i have the same bug, the webmail-link redirect loop on files apps.
Thks for help.

the login itself is working:
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: NOT LOGGED IN: \\n Detected that we're NOT logged in.","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"OC_RoundCube_App.class.php->logout<EMAIL_ADDRESS>successfully logged off from roundcube ","level":1,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"Logout of user<EMAIL_ADDRESS>from roundcube done","level":1,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: pre_construct: \\n Used Parameters:","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: pre_construct: \\n webmailHost: test.domain.org","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: pre_construct: \\n webmailPort: ","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: pre_construct: \\n webmailPath: \/oc_testing\/mysql\/roundcube\/","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: pre_construct: \\n enableDebug: 1","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: __construct: \\n Creating new RoundCubeLogin instance:","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: post_construct: \\n Created new RoundCubeLogin instance:","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: post_construct: \\n rcHost: test.domain.org","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: post_construct: \\n rcPort: ","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: post_construct: \\n rcPath: \/oc_testing\/mysql\/roundcube\/","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: login(): : \\n user: positive@test.org","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: login(): : \\n pass: 42","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: sendRequest: \\n Trying to connect via \"GET\" to URL \"http:\/\/test.domain.org\/oc_testing\/mysql\/roundcube\/\" on host\"test.domain.org\"","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: openUrlConnection: \\n Opening URL (url:http:\/\/test.domain.org\/oc_testing\/mysql\/roundcube\/).","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: NOT LOGGED IN: \\n Detected that we're NOT logged in.","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: sendRequest: \\n Trying to connect via \"POST\" to URL \"http:\/\/test.domain.org\/oc_testing\/mysql\/roundcube\/\" on host\"test.domain.org\"","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: openUrlConnection: \\n Opening URL (url:http:\/\/test.domain.org\/oc_testing\/mysql\/roundcube\/).","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: sendRequest: \\n New session auth: '-del-'.","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: sendRequest: \\n Got the following session ID shjlp10r2dkp17hudi3vb22v32","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: sendRequest: \\n New session auth: 'S256327ddc72f647b1690c69108bb4d58d5073969'.","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"RoundcubeLogin.class.php: LOGIN SUCCESSFUL: \\n RC sent a redirection to .\/?_task=..., that means we did it!","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"OC_RoundCube_App.class.php->login(): Trying to log into roundcube webinterface under \/oc_testing\/mysql\/roundcube\/ as user positive@test.org","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}
{"reqId":"d8baef30aaa784966ce5a2e071901d71","remoteAddr":"<IP_ADDRESS>","app":"roundcube","message":"OC_RoundCube_App.class.php->login<EMAIL_ADDRESS>already logged into roundcube ","level":0,"time":"2015-02-12T16:48:59+00:00","method":"POST","url":"\/oc_testing\/mysql\/owncloud\/index.php"}

I've got no idea why it redirects. Also the admin-settings are not working, as the security model in OC8 eight was changed. I will not further investigate on this. Don't have time for this and the app was discontinued

Hey, adding the following lines to routes.php seems to fix the roundcube-app:
$this->create('roundcube_index', '/')->action(
function($params){
require DIR . '/../index.php';
}
);
I will do some further tests but it looks quite well ;-)
cu.

thanks for the suggestion, i will give it a try:
https://martinreinhardt-online.de/jenkins/job/OwnCloud_integration_tests/

seems to work so far with OC8

confirming, just running as before.
It seems that the settings are saved, but there is no response to the user.

if you try to change the settings, the previous settings are returned ...

"It's annoying that with each OC version the API changes. That's one of the two reasons I stuff developing this app..."

i agree!

so the app seems to work so far, but the settings of the app look a little bit weird in the new UI and besides that the saving of new settings is not working. So if anybody finds out why feel free to push in with a pull request.
I personally stick to use OwnCloud 7

same probleme with the UI, impossible to save the roundcube settings (like the path) in the administration or the profile in "RoundCube Mailaccount" (email and pasword) ...
OC <IP_ADDRESS> and roundcube apps version 2.5.4

and the issue won't be fixed as the app is discontinued

since oc are sponsored by and enterprise, there's a race to a always use newest, introducing changes to made incompatible the olders versions, this forces clients to the newer and upgrades and so then company can request money on each new version..
there's a sick of "the newest", the latest version does not bring new things you really need, the only one that really is new useful is only useful for companies that use windows, (now office documents is published also online)

Hi,
Thks for return, unfortunately not working for me.
I have error "PHP Fatal error: Allowed Memory Size of [...]  in
/var/www/owncloud/3rdparty/symfony/routing/Symfony/Component/Routing/Matcher/UrlMatcher.php
on line 96" when i click on the appslink
Sincerely,

@diablotin84: this has nothing to do with the app itself. you're using to less PHP memory
increase you're PHP memory limit in /etc/php/php.ini, /etc/php4/php.ini, /etc/php4/php.ini or/etc/php/apache2/php.ini (depends on your setup)
If there were previously something like that:
memory_limit = 160M ; Maximum amount of memory a script may consume

Increase the number
memory_limit = 200M ; Maximum amount of memory a script may consume

and restart your web server

Thks for return!
already done, the problem remains the same
2015-02-16 11:44 GMT+01:00 Martin Reinhardt<EMAIL_ADDRESS>
@diablotin84 https://github.com/diablotin84: this has nothing to do
with the app itself. you're using to less PHP memory
increase you're PHP memory limit in /etc/php/php.ini, /etc/php4/php.ini,
/etc/php4/php.ini or/etc/php/apache2/php.ini (depends on your setup)
If there were previously something like that:
memory_limit = 160M ; Maximum amount of memory a script may consume
Increase the number
memory_limit = 200M ; Maximum amount of memory a script may consume
and restart your web server
—
Reply to this email directly or view it on GitHub
https://github.com/hypery2k/owncloud/issues/301#issuecomment-74489445.

but it's no software problem, it's an configuration problem. Seems that the new owncloud needs more memory for all the new features...

The PHP fatal error is caused by this error: Use of undefined constant DIR

assumed 'DIR' at /var/www/owncloud/apps/roundcube/appinfo/routes.php

2015-02-16 12:04 GMT+01:00 Martin Reinhardt<EMAIL_ADDRESS>
but it's no software problem, it's an configuration problem. Seems that
the new owncloud needs more memory for all the new features...
—
Reply to this email directly or view it on GitHub
https://github.com/hypery2k/owncloud/issues/301#issuecomment-74491945.

but you didn't posted this log error ;)
So which version are you using? One of the nightly builds or a custom patched version?
Because in the repo (https://github.com/hypery2k/owncloud/blob/master/roundcube/src/main/php/appinfo/routes.php) is now DIR variable ;)

so please use always the nightly builds https://martinreinhardt-online.de/jenkins/job/OwnCloud_nightly/ as mentioned on the github page and report then errors, not with handcrafted versions...

I use a version available in a owncloud repo for debian.
http://download.opensuse.org/repositories/isv:/ownCloud:/community/Debian_7.0/
2015-02-16 13:46 GMT+01:00 Martin Reinhardt<EMAIL_ADDRESS>
so please use always the nightly builds
https://martinreinhardt-online.de/jenkins/job/OwnCloud_nightly/ as
mentioned on the github page and report then errors, not with handcrafted
versions...
—
Reply to this email directly or view it on GitHub
https://github.com/hypery2k/owncloud/issues/301#issuecomment-74503198.

sorry i mean the roundcube app

but the app packaged there has errors, please use one of the nightly

problem solved.
For install via repo
Replace or Add:
$this->create('roundcube_index', '/')->action(
function($params){
require DIR.'/../index.php';
}
);
By
$this->create('roundcube_index', '/')->action(
function($params){
require '/var/www/owncloud/apps/roundcube/index.php';
}
);
Thks for help.
2015-02-16 14:24 GMT+01:00 Martin Reinhardt<EMAIL_ADDRESS>
but the app packaged there has errors, please use one of the nightly
—
Reply to this email directly or view it on GitHub
https://github.com/hypery2k/owncloud/issues/301#issuecomment-74507465.

Manual login not working in OC8


Add types.List support merge.ThreeWay()

While the code in threeWayListMerge() starts similarly to that
in threeWayOrderedSequenceMerge(), the types of the channels
are different and trying to shoehorn them together would
remove a lot of clarity just for the sake of sharing maybe
15 lines of code.
Toward #148

PTAL

lgtm w/ nit. @kalman can you back me up here.

LGTM with nits.


Dictionary Key-Path Subscript

Fixes https://github.com/SwifterSwift/SwifterSwift/issues/565
var dict =  ["key": ["key1": ["key2": "value"]]]
dict[path: ["key", "key1", "key2"]] = "newValue"
dict[path: ["key", "key1", "key2"]] -> "newValue"

Checklist

[x] I checked the Contributing Guidelines before creating this request.
[x] New extensions are written in Swift 4.
[x] New extensions support iOS 8.0+ / tvOS 9.0+ / macOS 10.10+ / watchOS 2.0+.
[x] I have added tests for new extensions, and they passed.
[x] All extensions have a clear comments explaining their functionality, all parameters and return type in English.
[x] All extensions are declared as public.
[x] I have added a changelog entry describing my changes.

I prefer more my suggestion in https://github.com/SwifterSwift/SwifterSwift/issues/565, because it aligns more with the value(forKeyPath:) method from NSObject.

@guykogus Specifically, do you mean passing in a single string instead of an array of keys?

@guykogus I agree that it aligns more with the NSObject method, but now I was thinking about that, passing a string with separated by a dot, we will not be able to find keys that actually contains a dot because the split will understand it as another level on the hierarchy. But I don't know, maybe we can escape the dot when we want it as part of the key, but to me now seems safer to receive a path as a list. What do you think?

Yeah, I see your point. I guess the dots for key paths worked for NSObject, which just uses it to get property names which can't have a dot, but for Swift Dictionaries it can cause issues.


Support/add waifu token logo

📝 Description

Add logo for Waifu token
https://bscscan.com/token/0xd0aa796e2160ED260c668E90aC5f237b4eBd4b0d https://waifutoken.net/
❓ Context

Impacted projects: ``
Linked resource(s): ``

✅ Checklist

[ ] Test coverage
[x] Atomic delivery
[x] No breaking changes

📸 Demo

🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

@Justkant kindly review the pr

@Justkant i have updated the change set, kindly review

@demonslayer69420 the filename must the same as the token ticker

@demonslayer69420 the filename must the same as the token ticker

@adrienlacombe-ledger apologies, i have updated the file, sorry to keep troubling you over something this small


firesuits/jugsuits buff

tweaking these based off observations/feedback from Arendian. jugsuit has now been all rounded to 0.2 in each resist well see how it goes. firesuits and atmos suit have more heatproofing. what we really need is some sort of "fireproof" component for these that negates straight fire damage. for now yaga. also gives firesuits way higher high pressure multipliers.

But why explosion resistance still only 70%?


Fix API release docs by moving release.svg and token.png to 09_API/images dir

Fixes nbdev's API release documentation by moving missing release.svg and token.png from nbs/images/ to nbs/09_API/images/, i.e., this should fix this doc page which is currently broken due to missing image and screencast:
https://github.com/fastai/nbdev/blob/master/nbs/09_API/17_release.ipynb
https://nbdev.fast.ai/09_API/release.html
PS: thanks for a developing this great package!

Many thanks!


Collection<> for every varargs...

I'd like if there was collection support where varargs are supported on all script methods.

Resolved by a49356f44fb82e34df9d0f571e4e59402606186f


Rewrite ASR dataloader with PyTorch's DataLoader

Codecov Report

Merging #135 into master will decrease coverage by 0.22%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master     #135      +/-   ##
==========================================
- Coverage   39.36%   39.14%   -0.23%
==========================================
  Files          83       84       +1
  Lines       10008    10058      +50
  Branches     2109     2110       +1
==========================================
- Hits         3940     3937       -3
- Misses       5869     5920      +51
- Partials      199      201       +2

Impacted Files
Coverage Δ

neural_sp/bin/asr/eval.py
0.00% <0.00%> (ø)

neural_sp/bin/asr/plot_attention.py
0.00% <0.00%> (ø)

neural_sp/bin/asr/plot_ctc.py
0.00% <0.00%> (ø)

neural_sp/bin/asr/train.py
0.00% <0.00%> (ø)

neural_sp/datasets/asr.py
0.00% <0.00%> (ø)

neural_sp/datasets/lm.py
0.00% <0.00%> (ø)

neural_sp/datasets/utils.py
0.00% <0.00%> (ø)

neural_sp/evaluators/accuracy.py
0.00% <0.00%> (ø)

neural_sp/evaluators/character.py
0.00% <0.00%> (ø)

neural_sp/evaluators/phone.py
0.00% <0.00%> (ø)

... and 6 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d37fbfb...3a131c4. Read the comment docs.


Datastore Service - Get Token TTL from configured max

Fixes #3523
Datastore should get its TTL from the configured max instead of hard-coded value. Without this change if token_ttl is set to a value < the default any python action that access the data service will throw an error.

I don't have an immediate solution as to how the auth service would validate if the request is coming from a "service" or not - and therefore know to use a different MAX TTL. It also seems to break what a MAX TTL setting would be.
Perhaps if we used the concept of a client similar to oAuth this could be achieved, but the added complexity isn't required for what our auth service does and this use-case doesn't warrant prioritizing that feature.
I think setting the service TTL to the max available TTL possible is a reasonable solution. Otherwise we'll have to touch the auth service and come up with some scheme for denoting when to use the service_token_ttl. As max ttl is usually configured for security reasons we'd need to have a reasonably valid way of trusting a service is a service (complexity: medium).
Thoughts?

With service I really just meant every token we generate outside st2auth API endpoint for service purpose (e.g. the one in the datastore used by actions and sensors, temporary token we generate for actions, etc.).

I finished this one so it can be included in v2.3.1.
Will go ahead and merge it once checks pass.


Request for changes in Session and SessionStore

This issue is a request for changes in the following groups:

Data serialization issue: Session.get!T("key") should then be forwarded to SessionStore by serializing the key according to session.serialization based on an interface
Cache store issue: SessionStore should inherit from a cache store in order enable support for a low-level cache feature that contains almost everything a SessionStore has.
Cache object: There should be a Cache object just like Session but with deleteKey method that falls through to the CacheStore, and a m_uuid private member that allows cache groups, see here: https://github.com/GlobecSys/vibe.d/blob/master/source/vibe/cache/cache.d
SessionStore szId: There should be a property to set the maximum size of the ID
SessionStore get/set value type: The type of values in session store should always be ubyte[]. The Variant type would never be of any use considering the use of a serialization interface

For the serialization issue, this would be the proposal:
interface Serialization {
	ubyte[] serialize(T)(ubyte[] value);
	ubyte[] deserialize(T)(ubyte[] value);
}

final struct Session {
	private {
		Serialization m_ser;
	}
	@property void serialization(Serialization ser){
		m_ser = ser;
	}

	T get(T)(string key) { return *cast(T*)m_ser.get(m_id, key, &m_ser.serialize!T, &m_ser.deserialize!T); }
	void set(T)(string key, T value) {        m_store.set(m_id, key, cast(ubyte[T.sizeof])(value), &m_ser.serialize!T, &m_ser.deserialize!T); }
}

This way, one could setup a Session with serialization based off inherited Serialization.
Also, CacheStore would be:
interface CacheStore {
    /// Sets a name/value pair for a given session.
    void set(string id, string name, ubyte[] value, ubyte[] delegate(ubyte[] value) ser, ubyte[] delegate(ubyte[] value) deser);

    /// Returns the value for a given session key.
    Variant get(string id, string name, ubyte[] value, ubyte[] delegate(ubyte[] value) ser, ubyte[] delegate(ubyte[] value) deser);

    /// Determines if a certain session key is set.
    bool isKeySet(string id, string key);

    /// Terminates the given sessiom.
    void destroy(string id);

    /// Deletes the specified key
    void deleteKey(string id, string name);

    /// Iterates all key/value pairs stored in the given cache manager.
    int delegate(int delegate(ref string key, ref ubyte[] value)) iterateKeys(string id);
}

And SessionStore:
interface SessionStore : CacheStore {

	/// Maximum Session ID bytes
	uint szSID;

	/// Creates a new session.
	Session create();

	/// Opens an existing session.
	Session open(string id);

	/// Creates a new Session object which sources its contents from this store.
	protected final Session createSessionInstance(string id = null)
	{
			if (!id.length) {
					ubyte[64] rand;
					g_rng.read(rand);
					id = cast(immutable)Base64URLNoPadding.encode(rand)[0..szSID];
			}
			return Session(this, id);
	}
}

A CacheVar! could then be added to vibe.web.web, with a Cache object in HTTPServerRequest
From my latest estimates, this would allow me to start building the cache library as a separate package.

RedisSessionStore solves this completely


Blog post: Make running programs through AiiDA a piece of cake

@GeigerJ2 is there actually a way to get the post built into the actual docs in order to preview it on the site? Or do we just have to go off the markdown rendered by Github in the rich diff view?

Sure, there ya go:
https://aiida-website--75.org.readthedocs.build/news/posts/2024-11-01-aiida-shell.html
It doesn't show up under the Posts tab of the RTD that is built through the readthedocs Action (probably because the date is in the future), but it's possible to find it via the search.
Title checks out! I'll add my review tomorrow. Thanks!

One note, maybe we can provide the full script as a downloadable Python file at the beginning of the "Real life scientific use case" section?

Thanks for the review @GeigerJ2 . I have addressed the comments. For me this is fine to publish. I will leave the final merge to you should you still want to do anything. Not sure if anything else is needed.

Just a ping to @sphuber that I just squash-merged this. Thanks!


edtr.io: anchor jumps below headings

If I click on an anchor, e.g "wie du auf serlo.org Bilder einbinden kannst", I directly land below the heading. This leaves me confused as I do not have immediate orientiaton. I would love to have the heading included. Hope this is understandable :-)

and here I do land

This fixed it for the old content: https://github.com/serlo/serlo.org/blob/46266e20b00e9cd0d66d7e2cbe15e2625f2c3ceb/packages/public/client/src/frontend/styles/_shame.scss#L90-L112
Probably just need to change the selectors to match anchors by the new editor.

fixed in the new frontend


New package: nclusion v1.0.1

Registering package: nclusion
Repository: https://github.com/microsoft/nclusion
Created by: @lorinanthony
Version: v1.0.1
Commit: 0f70155f7a7966d27b27e7506bb5fa8438349405
Reviewed by: @lorinanthony
Reference: https://github.com/microsoft/nclusion/issues/5#issuecomment-1941931798
Description: Scalable nonparametric clustering with unified marker gene selection for single-cell RNA-seq data

I'm just going to close this, since this PR is not salvageable. "Starts with an upper-case letter" is a pretty hard rule for Julia packages.
The name NCLUSION would still trigger the all-caps check, but I could imagine that it might be acceptable for a manual merge.

There are around 20 non-jll packages starting with a lower case letter.

Well, I'll reopen, then :-)

Closing in favor of #100891

Thanks so much for the help and insight!


python310Packages.intake: unstable-2023-08-24 -> 0.7.0

Description of changes
Get back to stable release of intake.
Now builds fine.
cc @veprbl
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 255872 run on x86_64-linux 1

4 packages built:

python310Packages.intake
python310Packages.intake.dist
python311Packages.intake
python311Packages.intake.dist

Result of nixpkgs-review pr 255872 run on x86_64-linux 1

4 packages built:

python310Packages.intake
python310Packages.intake.dist
python311Packages.intake
python311Packages.intake.dist


nixi commits

Fixes or introduces:
Proposed Changes

print greetings

@nippun99  - Please resubmit this with your own profile and code sample to keep thing separate. Thank you!


Nanopolish eventalign standardized_level

Hi,
I would like to clarify on nanopolish eventalign output. What is standardized_level mean. I noticed that if absolute value of standardized_level is large, there will be a larger difference between event_level_mean and model_mean. Do I have to correct my event_level_mean with this standardized_level to get the actual signal for the k-mer? Or is this a useful parameter to remove outliers beside the "NNNNNN" model_kmer. I ran nanopolish eventalign with --scale-events
Another question I had is the same read output multiple events. Most of the event_level_means are  very close to model_mean, but there are a few outliers. I am curious why nanopolish output can be very different for the same read at the same position? Can these kind of outliers be trusted for analysis?

Hi,
standardized_level is simply (event_level_mean - model_mean) / model_stdv. To get the actual measured signal for the event you have to run without --scale-events.

Another question I had is the same read output multiple events. Most of the event_level_means are very close to model_mean, but there are a few outliers. I am curious why nanopolish output can be very different for the same read at the same position?

After sequencing, there is a segmentation algorithm run on the current signal to generate the events. This algorithm may over-segment the data, resulting in multiple events for some positions. Nanopolish does not attempt to fix this, it just finds the best alignment of the event sequence to the reference genome.


Not working in 2022.2.10 ?

I have followed the instructions for creating a simple <String, String> SerializableDictionary - but no matter what I do, clicking on the "+" icon in the inspector to add a new key or value does absolutely nothing. this is my class:
[Serializable]
public class ssDict : SerializableDictionary<string, string> { }

and this is how i use it:
public class Character : MonoBehaviour
{
    public ssDict NameStringDictionary = new ssDict();
..

Same issue in 2021.3.7f1.

Have you copied the file from the Editor folder as well?
https://github.com/azixMcAze/Unity-SerializableDictionary/tree/master/Assets/SerializableDictionary/Editor

I managed to fix this by adding attribute [CustomPropertyDrawer(typeof(MyDictionaryType))] above SerializableDictionaryPropertyDrawer class.
In this case you need to add this attribute every time you create new type of dictionary. Possibly, exists more elegant fix, just have no time to research.


pkg/transport: remove port in Certificate.IPAddresses

etcd passes 'url.URL.Host' to 'SelfCert' which contains
client, peer port. 'net.ParseIP("<IP_ADDRESS>:2379")' returns
'nil', and the client on this self-cert will see errors
of '<IP_ADDRESS> because it doesn't contain any IP SANs'
cf. https://github.com/coreos/etcd/issues/7654#issuecomment-291382464
WIP to see if it breaks anything.

lgtm


Make Status Bar Text In Debug Mode Visible

Before :

After :

@aaronthomas would you please merge this PR?  It would be helpful for all those who are using this theme.


use XCTest to perform regression test

Hi Scott,
as promised, here's the transfer to XCTest. It might look a bit weird in the beginning, but it's rather easy to use.

Just click in the litte diamond near the class to run the full test. Or near a single function for a single test. It might take a bit longer since the timing tests are done 10 times and you can see the average from the result:

I had checked this PR out, but I couldn't get it to compile and run main.swift (again). The "play" button was greyed out and Xcode complained about not having a target to build.
Sorry for the lack of response, I'm not opposed to having this functionality present. I do want to move towards the "default" layout for Swift packages as with the Swift Package Manager. I'm betting that XCTest will be included with that.


vendor https://github.com/mpl/taglib-go if needed

I've fixed a panic (https://github.com/hjfreyer/taglib-go/pull/8) in taglib-go that I ran into while running Camlistore but haven't had a reply so far.
This issue is just a reminder for myself to switch to my fork (hopefully temporarily) so we get the fix if @hjfreyer is too busy to merge it.

LGTM! Thanks so much for the fix. Apologies for the delay, I was on vacation.

No worries. I didn't mean to pressure you, it was really meant as a reminder for myself. I'll update taglib-go in Camlistore later today.

https://camlistore-review.googlesource.com/5477

a7ccb62bf65435e4ffe1f52c836fcc6d27e07535


add annotations and compile in strict mode

this is all that was necessary to make deno -c tsconfig.json test pass in strict mode.
Thanks for the library!

LGTM,thx


Added postfix gmail relay

What this PR does / why we need it:
Sets up postfix using a Gmail app password, allowing the NAS to send emails using the mail command. Very useful for:

sending alerts for zpool scrubs outcomes
sending errors for failed SMART checks on drives
sending alerts for backup outcomes/failures (e.g. when using Duplicati)

Tested on both x86_64 and arm64 architectures, no issues emerged.
I would plan on adding some documentation on how to set up some of the above usecases in the zfs_configuration.md file or similar (since I use this setup for the cases above), let me know :)

Hmm need to check on this later, linting issue but not straightforward to fix from mobile

I like the thought of having Postfix up to send email, but I'm not sure I like how tied in the implementation is to gmail. For example, I have mine configured to use sendgrid.
I think without too much effort this could be generalised to be a Postfix SMTP relay setup, where someone just configures their own SMTP details via a few variables.
What do you think?

Yeah I would need to check other examples, but I suspect that we can adapt it fairly easily to be general. I'll work on it


perf: Optimize $_SERVER import

This PR replaces #1103 since actions wouldn't trigger when merging from a fork.
I refactored it so the import happens directly in cgi.go, the additional Cgo calls don't seem to matter in the flamegraphs.
Without this PR:

With this PR:

Still not sure why checks aren't triggering.

After doing some testing to summarize everything I found here again:
PHP doesn't do -any- validation on the registered values, the correctness of these values is largely left up to the SAPIs that register them.
What does PHP validate then?
sapi_module.input_filter
filter is a PHP extension that allows filtering strings. There is a php.ini setting called filter.default that also allows pre-filtering all globals. The global filter is deprecated , noone really uses it anymore and passing anything but "unsafe_raw" will lead to a deprecation notice. "unsafe raw" does nothing to the value except copy it to a 'filtered globals' array.
php_register_variable_safe
Even php_register_variable_safe does absolutely nothing to the registered value (beside from checking that it is not null). So what does it actually do?
The main sanitation logic happens in php_register_variable_ex and is about the array key.

First it ensures that the variable name does not contain any space or dot (not binary safe).
If it contains a [, the function will register an array (aka when sending a query string like this: ?values[]=1&values[]=2).
Then it will check for illegal variable names like $this, $GLOBALS __Host- or __Secure-.
Then it will check if the array is $_COOKIES and prevent registering values twice.
Then it will finally just write the zval into the array as is

So if we have hard-coded keys (from all known vars) this function is also redundant.
How can we make variable registration safer?
I added some fuzzing tests to the pipeline. These tests are well suited for security checks and will rerun a specific test with 'fuzzed' or randomized strings. If any combination of strings causes a failure or crash it will stop the test, otherwise it will continue (theoretically) forever.
Due to these tests I already noticed that go will allow a null byte in the Url.Path, which can lead to a truncated registered path. I'll look into fuzzing more potential inputs, maybe it will uncover other issues.

TIL. Thanks @AlliBalliBaba for working on this!

I filed a bug report to github as I'm still not sure why checks have disappeared from all my PRs.

@AlliBalliBaba I rebased and force-pushed your branch, and this triggered the checks. There is something weird however: the ownership of some commits changed. It looks like some commits are made on the behalf of "alliballibaba" but some other on the behalf of "a.stecher". This may be the source of the issue. Maybe are you using an email that is not set in your GitHub account for some commits?

Hmm yeah that's possible, I'll try adding that email. It's weird though that it worked before

Oh I think it's probably because I hit this limit, my actions will be back next month I guess.

Oh I think it's probably because I hit this limit, my actions will be back next month I guess.

That's weird that it is counting your commits to this repository against your personal limits. I guess because this is technically a personal repository (i.e., belongs to @dunglas) and not an organization. In other words, "why should @dunglas have to pay for contributors to run actions?" is the use-case? I don't see an option to change this in the settings on one of my personal repositories though.
Might it be time for an organization then?

@withinboredom I don't think it's related. I have never seen that on any of my repo (org or personal).

Same. It's just the only thing I can think of.

Could also be something else, I'll know once someone responds to github ticket.


Show property doc on Row string representation

It was confusing to not see it even it's assigned, it led me to think that include_docs=True parameter on my request wasn't working. So after some debugging, I noticed this minor issue.

LGTM!


Fix it to work on Windows as well and add tests

Fixes codeowners-generator, so it works on Windows as well. The PR also adds workflow tests for Windows and macOS, and a debugger comment if an error is thrown in generate.ts.
Fixes: https://github.com/gagoar/codeowners-generator/issues/371
The branch protection needs to be updated so the required check matches the new name test (ubuntu-latest).
Initial comment
The first step here is just to try to run the test workflow on both Windows and macOS in addition to Ubuntu, to see if the issue in https://github.com/gagoar/codeowners-generator/issues/371 can be reproduced.
As expected the paths are incorrect on the try run on Windows:
       # Rule extracted from dir1/CODEOWNERS
    - /dir1/**/*.ts @eeny @meeny
    + \\dir1\\**\\*.ts @eeny @meeny

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
259

Relevant Lines:
259

💛  - Coveralls

@gagoar Hi 👋 I got this bug fix for you. I'm leaving the commit history, so you can see the workflow logs (and it does not matter on the main branch as the PR will be squashed when merged).

Hey @gustavkj, Nice to "hear 👨🏻💻" from you! I've added the new matrix to the branch protection to avoid issues.
the only change I will make to this PR is to store the regex for the windows/posix line break into a const and put a tiny comment on it for later. I can do that later, or you can do it before merging. let me know.


Throw less missleading exception if SSL keys could not be loaded

Q
A

Branch
master

Bug fix?
no

New feature?
no

BC breaks?
yes

Deprecations?
no

Tests pass?
yes

Fixed tickets
n/a

License
MIT

Doc PR
n/a

👍 Thank you @phansys