A more flexible Access Manager?

The current access manager presumes access is based on Roles, and Roles are associated with specific endpoints:
    app.routes {
        path("/my-api/something") {
            path("/widget") {
                get(WidgetController::get, roles(MyRoles.COOL_PEOPLE))
            }
        }
    }

I applaud the simplicity of this.
What about other access control that is not based on attributes of users? Access control based on IP address, or based on time of day? Or based on http headers?
I believe we can keep it simple while supporting more access control use cases. I also think we can do this without imposing specific access control mechanisms. There are many, and people should be able to bring their own (or plug something in if it is a standard).
What I propose is rather than passing in a set of Roles with my endpoints, how about if I pass in something that implements a marker interface AccessRules:

    public interface AccessRules {}

    public class WidgetAccessRules : AccessRules { ... }

    val widgetAccessRules: WidgetAccessRules = ...

    app.routes {
        path("/my-api/something") {
            path("/widget") {
                get(WidgetController::get, widgetAccessRules)
            }
        }
    }

Now I can define any access rules I wish -- I can make them as simple or as complex as needed. Simplest might be Role based AccessRules:
    class RoleBasedAccessRules : AccessRules {
      val allowRoles: Set<Role>
    }

And the AccessManager would work some thing like this:
    @FunctionalInterface
    public interface AccessManager {
        void manage(@NotNull Handler handler, @NotNull Context ctx, @NotNull Array<AccessRules> accessRules) throws Exception;
    }

With this in place, now access rules could be placed anywhere along the path() of a route:
    val PUBLIC_ACCESS: AccessRules = ...
    app.routes {
        path("/api/public", PUBLIC_ACCESS) {
            path("/login") {
                post(LoginController::post)
            }
        }
        path("/api", AUTHENTICATED_ACCESS) {
            path("/customer/:customerId", CUSTOMER_ACCESS) {
                get("/foo", FooController::get)
                get("/bar", BarController::get)
                crud("widget/:widgetId", CustomerWidgetController())
            }
            path("/superuser", SUPERUSER_ACCESS) {
                path("/batcave") {
                    get(BatcaveController::get)
                }
            }
        }
    }

Now access rules can be customized however people want, or can implement existing access control designs. This would provide a more flexible way to satisfy the varied requests for "support my flavor of authorization".
The simplest case would be a single, literal AccessRule at the tip of the endpoint with a set of allowed Roles, which would feel similar to what we have today, using roleAccess() rather than role() from SecurityUtil:

    public interface AccessRule {}

    data class RoleAccess(val allowedRoles: Set<Role>) : AccessRule

    fun roleAccess(vararg roles: Role) = RoleAccess(allowedRoles = setOf(*roles))

    app.routes {
        path("/my-api/something") {
            path("/widget") {
                get(WidgetController::get, roleAccess(MyRoles.COOL_PEOPLE))
            }
        }
    }

Forgive me if my examples above are not all syntactically correct -- I'm just trying to communicate the idea of supplying a list of generic AccessRules as you go down a path, and let the AccessManager walk that list to decide what to do.
Looking for comments.

Interesting idea @bseib, thank you!
Could you write an example of something that isn't possible to do with the current access manager (or something that is hard/complicated) that would be easier to implement with this new setup?

@tipsy I think the idea is mostly about being DRY. Today we would write:
    app.routes {
        path("/api/public") {
            path("/login") {
                post(LoginController::post, roles(Roles.ANYONE))
            }
            get("/foo", roles(Roles.ANYONE))
            get("/bar", roles(Roles.ANYONE))
            get("/baz", roles(Roles.ANYONE))
            get("/quux", roles(Roles.ANYONE))
            get("/zuub", roles(Roles.ANYONE))
               ... lots more of these ...
        }
        path("/api") {
            path("/customer/:customerId") {
                get("/foo", FooController::get, roles(Roles.CUSTOMER, Roles.SUPERUSER))
                get("/bar", BarController::get, roles(Roles.CUSTOMER, Roles.SUPERUSER))
                crud("widget/:widgetId", CustomerWidgetController(), , roles(Roles.CUSTOMER, Roles.SUPERUSER))
                    ... lots more ...
            }
            path("/superuser") {
                path("/batcave") {
                    get(BatcaveController::get, , roles(Roles.SUPERUSER))
                       ... lots more ...

                }
            }
        }
    }

The alternative would be to apply access control in one place rather than repeating it:
    val PUBLIC_ACCESS: AccessRules = ...
    app.routes {
        path("/api/public", PUBLIC_ACCESS) {
            path("/login") {
                post(LoginController::post)
            }
        }
        path("/api", AUTHENTICATED_ACCESS) {
            path("/customer/:customerId", CUSTOMER_ACCESS) {
                get("/foo", FooController::get)
                get("/bar", BarController::get)
                crud("widget/:widgetId", CustomerWidgetController())
            }
            path("/superuser", SUPERUSER_ACCESS) {
                path("/batcave") {
                    get(BatcaveController::get)
                }
            }
        }
    }

Secondly, I find it a little odd to express an access control strictly using Roles (which I associate with a person/caller). There are "non-person" reasons to do access control.
Although it feels a little weird (maybe it's just me), we can still use the role mechanism to represent non-person concepts that we want to use to enforce access control. For example, a time of day access control can be made readable in the code as a role like this:
internal enum class Is : Role {
    ANYONE, AUTHENTICATED, SUPERUSER, SYSTEM
}
internal enum class During : Role {
    TRADING_HOURS
}
private val WEEKDAYS = setOf<DayOfWeek>(DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY)
private fun isTradingHours(): Boolean {
    val now = LocalDateTime.now();
    return WEEKDAYS.contains(now.dayOfWeek) && now.hour > 9 && now.hour < 17
}

        config.accessManager { handler, ctx, endpointRoles ->
            // check attributes of the endpoint to enforce
            if (endpointRoles.contains(During.TRADING_HOURS) && !isTradingHours()) {
                ctx.status(401).result("Trading hours are closed.")
            }

            // check attributes of the caller to enforce
            else {
                val callerRoles = getCallerRoles(ctx) // determine caller's roles based on request
                if ((endpointRoles intersect callerRoles).isEmpty()) {
                    ctx.status(401).result("Unauthorized")
                }
                else {
                    ... look at ctx.path to enforce more access rules ...
                    handler.handle(ctx)
                }
            }
        }

    app.routes {
        path("/api/something") {
            path("/trade") {
                post(TradeController::post, roles(Is.AUTHENTICATED, During.TRADING_HOURS))
            }
        }
    }

As I migrate my existing project to javalin, I will be coding some of this, and I'll share what I learn here.

I found using before() handlers for access control may help my DRY concern:
app.routes {
        before("/api/v6/*") { ctx ->
            allowRoles(ctx, roles(Is.AUTHENTICATED))
        }
        path("/api/v6") {
            before("/customer/:customerId/*") { ctx ->
                val customerId = ctx.pathParam("customerId").toInt()
                authorizeCustomer(ctx, customerId)
                path("/customer/:customerId") {

                    before("/message/:messageId") {ctx ->
                        val messageId = ctx.pathParam("messageId").toInt()
                        authorizeMessage(ctx, customerId, messageId)
                    }
                    path("/message/:messageId") {
                        get(V6MessagesController::get, roles(During.TRADING_HOURS))
                    }

                }
            }
        }
    }

It will also cascade the authorization information as you traverse deeper toward an endpoint. As an example with the customerId above, that id can be checked once then passed as an Int to those access controls below it.

Oops. I can't nest a path() inside a before(). So the above example should be:
    app.routes {
        before("/api/v6/*") { ctx ->
            allowRoles(ctx, roles(Is.AUTHENTICATED))
        }
        path("/api/v6") {
            before("/customer/:customerId/*") { ctx ->
                val customerId = ctx.pathParam("customerId").toInt()
                authorizeCustomer(ctx, customerId)
            }
            path("/customer/:customerId") {
                before("/message/:messageId") {ctx ->
                    val customerId = ctx.pathParam("customerId").toInt()
                    val messageId = ctx.pathParam("messageId").toInt()
                    authorizeMessage(ctx, customerId, messageId)
                }
                path("/message/:messageId") {
                    get(V6MessagesController::get, roles(During.TRADING_HOURS))
                }
            }
        }
    }

The alternative would be to apply access control in one place rather than repeating it:

So the original proposal was to allow roles to be included in path calls, and it's been raised a couple of times as a feature request (so, I've rejected the idea multiple times). In the docs I have written:

Javalin has a functional interface AccessManager, which let’s you set per-endpoint authentication and/or authorization. It’s common to use before-handlers for this, but per-endpoint security handlers give you much more explicit and readable code.

I feel pretty strongly about the per-endpoint part of that quote. While I definitely see the appeal of having neater route declarations, I'm very careful about prioritizing neatness over explicitness when it comes to security.

Secondly, I find it a little odd to express an access control strictly using Roles (which I associate with a person/caller). There are "non-person" reasons to do access control.

I agree with that. I have some apps with roles like Role.ANY, Role.SIGNED_IN and Role.PAGERDUTY_WEBHOOK. Some of my apps use Right.READ_XYZ and Right.WRITE_XYZ too. While I have never felt that the current system isn't flexible enough, it does feel a bit "weird".

As I migrate my existing project to javalin, I will be coding some of this, and I'll share what I learn here.

Great, keep us posted!

The alternative would be to apply access control in one place rather than repeating it:

So the original proposal for the AccessManager was to allow roles to be included in path calls, and it's been raised a couple of times as a feature request (so, I've rejected the idea multiple times).

I agree that there is value in this. There is less chance to misunderstand how the access manager is behaving when the access controls are expressed at the tips of the endpoints. In the end we want our code to be easy to understand, hard to misunderstand, and hard to get ourselves in trouble. Having simple building blocks are good.
Now that I've learned that the before() handlers are a place where access control is possible, I think my question about changing the Access Manager is not a good suggestion and can be closed. The existing mechanism is very simple to understand, and there is little value in changing it.
I also think that people will continue to ask about this topic. Perhaps some tutorials around the topic would give users some guidance on possible solutions if they go down this road.

At the moment, the before() handlers are allowing me do perform the checks I need as I convert a project to Javalin. It is shaping up like this, although it is still work in progress:
    app.routes {
        path("/api") {
            before { ctx ->
                if (!ctx.path().matches("^/api/[^/]+?/public/.*$".toRegex())) {
                    requireCallerToHaveAtLeastOneOfTheseRoles(ctx, roles(Is.AUTHENTICATED))
                }
            }
            path("/v6") {
                path("/public") {
                    get("/callme", V6MessagesController::anyoneCallMe)
                }
                path("/customer/:customerId") {
                    before { ctx ->
                        val customerId = ctx.pathParam<Int>("customerId").get();
                        authorizeCustomer(ctx, customerId)
                        ctx.attribute("authorizedCustomerId", customerId)
                    }
                    path("/message/:messageId") {
                        before { ctx ->
                            val customerId = ctx.attribute<Int>("authorizedCustomerId") ?: throw ForbiddenResponse("Unauthorized")
                            val messageId = ctx.pathParam("messageId").toInt()
                            val message = V6MessagesController.authorizeMessage(ctx, customerId, messageId)
                            ctx.attribute("authorizedMessage", message)
                        }
                        get(V6MessagesController::get)
                    }
                }
            }
        }
    }

I will expand a bit in the docs and mention filters a bit more.
By the way, since the ApiBuilder is static, you can also easily write your own methods to use in the app.routes DSL.

FWIW to those who find this thread, I did make my own api builder DSL that allowed me to place access handlers at key points along a path, namely wherever a path :variable needs to be interpreted. In addition, everything downstream on that path needs access to the already interpreted values that were extracted from the path. Plus anything downstream on the path should obey type safety of those values, and not extract/validate/retrieve those values multiple times (i.e. where db calls/checks are involved).
I ended up with a DSL that allows concise expression of access control, and the compiler will also complain when you don't obey the types expressed with the generics. This means when you write your get<T>() function, you must accept an argument of the given type T (in addition to the usual ctx: Context). Likewise you can't express a get<T>() without being inside a acceptPath<T>() or acceptPath<A, T>(), whose acceptor function extracts the :variable (or variables) in the path into a particular type T (or throws exception for any reason -- validation, access control, bad/illegal argument, etc). I also have PathAttribute that can be passed to the acceptor functions, so that the same functions can be used on different paths that just have slightly different attributes associated with them.
It looks like:
app.typedRoutes {
    path("/api", ::acceptApiPath) {
        path("/v6") {
            path("/public") {
                get("/callme", V6MessagesController::anyoneCallMe)
            }
            path("/trade", ::acceptDuring, pathAttributes(During.TRADING_HOURS)) {
                get { ctx -> ctx.result("trading!") }
            }
            acceptPath<CustomerId>("/customer/:customerId", ::acceptCustomerPath) {
                get<CustomerId> { ctx, id -> ctx.result("yo customer $id") }
                path("/anything", ::acceptAlways) {
                    path("/greet") {
                        get<CustomerId>("/howdy") { ctx, id -> ctx.result("howdy customer $id") }
                    }
                    path("/everything", ::acceptAlways) {
                        acceptPath<CustomerId, CustomerMessage>("/foo/:messageId", ::acceptMessagePath) {
                            get<CustomerMessage>(V6MessagesController::get)
                            get<CustomerMessage>("/foo", V6MessagesController::get)
                        }
                    }

                    acceptPath<CustomerId, CustomerMessage>("/message/:messageId", ::acceptMessagePath) {
                        get<CustomerMessage>(V6MessagesController::get)
                        get<CustomerMessage>("/baz", V6MessagesController::get)

                        acceptPath<CustomerMessage, DeepName>("/deep/:name", ::acceptCustomerMessageDeepName) {
                            get<DeepName> { ctx, deep -> ctx.result("yo deep ${deep}") }
                        }
                    }

                }
            }
        }
    }
}

fun acceptDuring(ctx: Context, pathAttributes: Set<PathAttribute>) {
    println("acceptDuring pathAttributes=${pathAttributes}")
    // ...
}

fun acceptCustomerPath(ctx: Context, pathAttributes: Set<PathAttribute>): CustomerId {
    val customerId = ctx.pathParam<Int>("customerId").get()
    println("acceptCustomerPath pathAttributes=${pathAttributes} customerId=${customerId}")
    authorizeCustomer(ctx, customerId)
    return customerId
}

fun acceptMessagePath(ctx: Context, pathAttributes: Set<PathAttribute>, customerId: CustomerId): CustomerMessage {
    val messageId = ctx.pathParam<Int>("messageId").get()
    println("acceptMessagePath pathAttributes=${pathAttributes} customerId=${customerId} messageId=${messageId}")
    authorizeMessage(ctx, customerId, messageId)
    return CustomerMessage(customerId, messageId)
}

fun acceptCustomerMessageDeepName(ctx: Context, pathAttributes: Set<PathAttribute>, cm: CustomerMessage): DeepName {
    val name = ctx.pathParam<String>("name").get()
    println("acceptCustomerMessageDeepName pathAttributes=${pathAttributes} CustomerMessage=${cm} name=${name}")
    return DeepName(cm.customerId, cm.messageId, name)
}

I didn't need to modify Javalin code -- I just added a few extension functions and created another DSL that uses the same underlying calls that api builder uses. I can share code if anyone is interested. At the moment I have a working proof of concept, but needs a good bit of clean up.

It's a neat approach @bseib. I'd be happy to publish a tutorial on javalin.io if you're interesting in writing one.

@tipsy sure, I could do that. I'm going to try living with my code for a while to see how it goes, and the code also needs some cleanup. I'll see where I am in a few weeks to write something up.

Sounds like a good plan!


jest + collectCoverage with babel-plugin-lodash results into error

Do you want to request a feature or report a bug?
bug
What is the current behavior?
Using babel-plugin-lodash, collectCoverage enabled and a lodash function as show below imported from test file, results into an error.
import { flow, flatten } from 'lodash/fp'

// export const testFunction1 = flatten
export const testFunction2 = flow(flatten)

example#testFunction1 npm test will output
    /home/nam/projects/jest-babel-lodash-issue/src/example.js:3
    var testFunction1 = /* istanbul ignore next */exports.testFunction1 = ();
                                                                           ^

    SyntaxError: Unexpected token )

example#testFunction2 npm test will output
    ReferenceError: /home/nam/projects/jest-babel-lodash-issue/src/example.js: Container is falsy

      at NodePath._replaceWith (node_modules/babel-traverse/lib/path/replacement.js:170:11)

Removing collectCoverage from package.json  lets the tests run without failure.
Removing babel-plugin-lodash from .babelrc or importing directly from lodash also runs without failure.
If the current behavior is a bug, please provide the steps to reproduce and either a repl.it demo through https://repl.it/languages/jest or a minimal repository on GitHub that we can yarn install and yarn test.
https://github.com/namjul/jest-babel-lodash-issue
What is the expected behavior?
Test should run without errors.
Please provide your exact Jest configuration and mention your Jest, node, yarn/npm version and operating system.
Ubuntu 16.04.1 LTS, node v6.11.0 npm 3.10.10 also tested with node v8.1.3 npm 5.0.3
previous issue: https://github.com/lodash/babel-plugin-lodash/issues/179

I think babel-plugin-istanbul is the place you should place this issue

Have you tried moving thebabel-plugin-lodash plugin to a non-test environment config?
{
  "plugins": [],
  "env": {
    "production": {
      "plugins": ["lodash"]
     }
  }
}

then when running tests, use:
BABEL_ENV=test jest --coverage

https://github.com/istanbuljs/babel-plugin-istanbul/issues/116

Have you tried moving thebabel-plugin-lodash plugin to a non-test environment config?
{
  "plugins": [],
  "env": {
    "production": {
      "plugins": ["lodash"]
     }
  }
}

then when running tests, use:
BABEL_ENV=test jest --coverage

https://github.com/istanbuljs/babel-plugin-istanbul/issues/116
https://github.com/namjul/jest-babel-lodash-issue/issues/1

so finally what is the solution for this issue, I am not able to understand properly @AndersDJohnson  solution can someone help me little?


Update README.md

It does not support OpenSUSE Tumbleweed. Refer to issue #150

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thank you very much for the information!


Finish table component and remove deprecated Tables class (with functions to build lists and tables)

Remaining pieces (tables.ts and all its imports) were deleted since they were no longer used


(dev) Fix IPAM after Contiv plugin refactor.

Coverage increased (+0.1%) to 76.165% when pulling fce8cfcc1cd8e7c5c2d8f03c6402cc258fce435d on milanlenco:dev into eb508c3f04e2e72c4dc1d17b4257c2e5d1f2647e on contiv:dev.


[Q] Can absolute filepaths be hidden?

Hi, currently looking for ways to implement a filldir64 hook that hides absolute paths, instead of all files matching a certain word or prefix. Is it possible to do that with your solution? I'm looking for a way to do this for https://github.com/xplshn/hidefs, which is supposed to be a replacement for GoboHide, thanks!

Hello brother,
Actually the rootkit is made to only hide directory entries so the basename of your absolute path.
Hiding a wanted here : https://github.com/wepfen/rootkit2600/blob/main/src/rootkit/init.c#L54
So yeah it's hiding when matching a certain word or prefix and not the absolute path.


2022 Home air quality sensor choice

Related https://github.com/130s/hut_10sqft/issues/566

Chose indoor air quality sensor https://www.amazon.com/IQAir-AirVisual-Series/dp/B0784TZFRW?th=1, for a usecase where more accuracy and stable feature are required. There's a promising HASS integration as well https://github.com/130s/hut_10sqft/issues/677#issuecomment-1139315803
For cheaper and hackier options, some options discussed in https://github.com/130s/hut_10sqft/issues/677#issuecomment-1139331204

AirVisual Pro initially failed to connect to wifi, both 2.4Ghz and 5Ghz (WPA2 + AES). After disabling and enabling wifi on the device it seems to have connected.


The "Cache-Control", "max-stale=30" directie is invalid.

This directive always returns cached data

Test case? Example?

private static OkHttpClient okHttpClient = new OkHttpClient();

    static {
        int cacheSize = 10 * 1024 * 1024; // 10 MiB
        Cache cache = null;
        try {
            cache = new Cache(new File("CacheResponse.tmp"), cacheSize);
        } catch (IOException e) {
            e.printStackTrace();
        }
        okHttpClient.setCache(cache);
    }

    public static void main(String[] args) {
       cache();
    }

    private static void cache() {
        Request request = new Request.Builder()
                .url("https://publicobject.com/helloworld.txt")
                .header("Cache-Control", "max-stale=30")
                .build();

        try {
            Response response1 = okHttpClient.newCall(request).execute();
            if (!response1.isSuccessful()) throw new IOException("Unexpected code " + response1);

            String response1Body = response1.body().string();
            System.out.println("Response 1 response:          " + response1);
            System.out.println("Response 1 cache response:    " + response1.cacheResponse());
            System.out.println("Response 1 network response:  " + response1.networkResponse());

            Response response2 = okHttpClient.newCall(request).execute();
            if (!response2.isSuccessful()) throw new IOException("Unexpected code " + response2);

            String response2Body = response2.body().string();
            System.out.println("Response 2 response:          " + response2);
            System.out.println("Response 2 cache response:    " + response2.cacheResponse());
            System.out.println("Response 2 network response:  " + response2.networkResponse());

            System.out.println("Response 2 equals Response 1? " + response1Body.equals(response2Body));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

After more than max-stale, send each request,  return to the data in the cache, is this why

The response in this case is fresh anyway, so max-stale doesn't take effect. Typically the cache will expire a response after a given period. With max-stale, you're extending that period even further.


Add monthly income text to options on income select

Nice free basket from a CM -- it would be helpful if income options included monthly income, since that's how a lot of patients talk about their incomes in practice.
Two things to do here:

The option displayed in the select should include monthly income (ex: Under $9,999 (less than $192/wk - $834/month))
The value persisted in the database should be just the first part of the option. e.g. Instead of saving Under $9,999 (less than $192/wk - $834/month), we should just save Under $9,999.

To implement, you can just fix up the array in PatientsHelper#income_options to something you could drop in a form_for block.
Came up in #614

I'll take this =D.  I'm new to Ruby, so I will most likely have questions.

ayo @souphan let me know if there's anything I can help unstick on this!

Hello Colin,
I modified the monthly income portion, but am having issues finding the portion that stores the selection to mongodb.  I was under the impression it would be under /config folder.

To close the loop on this -- we talked about this in slack and unstuck this!
On Sun, Oct 23, 2016 at 3:10 PM souphan<EMAIL_ADDRESS>wrote:

Hello Colin,
I modified the monthly income portion, but am having issues finding the
portion that stores the selection to mongodb. I was under the impression it
would be under /config folder.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/colinxfleming/dcaf_case_management/issues/657#issuecomment-255607681,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADsA9PWFjHpjKO7LX-kucT5D5fO6hdjQks5q27ERgaJpZM4KOacV
.

@souphan check this stuff out -- http://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags
The stuff in the second code block in 3.1 is what I'm talking about. Basically, there's an array of two-piece arrays getting put in that looks like this:
[
  ['display thing 1', 'actual value 1'],
  ['display thing 2', 'actual value 2'],
  ...
]

and what rails is doing when it builds that form into HTML is turning it into something like this:
<option value='actual value 1'>display thing 1</option>
<option value='actual value 2'>display thing 2</option>

where it goes thru each item in the array, and then the first value is what shows up in the dropdown, and it saves the value of the second item to db. So we need to convert the income array to something like: [ ['display item 1', 'value1'], ['display item 2', 'value2']... ].
Is that helpful?

Thanks for the helpful explanation.  I will update you once I get this done, or have any other questions.

I just got around to doing this again, and I believe this is what you wanted:
<%= f.select :income,
options_for_select([[income_options[1],'Under $9,999'],
[income_options[2],'$10,000-14,999'],
[income_options[3],'$15,000-19,999'],
[income_options[4],'$20,000-24,999'],
[income_options[5],'$25,000-29,999'],
[income_options[6],'$30,000-34,999'],
[income_options[7],'$35,000-39,999 '],
[income_options[8],'$40,000-44,999'],
[income_options[9],'$45,000-49,999'],
[income_options[10],'$50,000-59,999'],
[income_options[11],'$60,000-74,999'],
[income_options[12],'$75,000 or more/yr'],],patient.income),
autocomplete: 'off' %>
Let me know if that is the case.  Sorry for being slow on this.


try to enable coverage on travis

Seem to work, enabled coverall so we should get a message with coverage once submitted.

Changes Unknown when pulling 7a9cc9d31351810bb1448ae907be02dc9d55e6f0 on Carreau:coverage into ** on jupyter:master**.

Yeah, works, merging.


Fix missing usageMetadata in streamed aggregated response (#174)

Fixes https://github.com/google-gemini/generative-ai-js/issues/174

Thank you! Can you add a changeset? (Run yarn changeset - select "patch".)

Thank you! Can you add a changeset? (Run yarn changeset - select "patch".)

Done ✅

@hsubox76 do you know when the next release is planned? 🙏

We have a feature to be released soon, likely tomorrow, so we will probably group this in with that.

We have a feature to be released soon, likely tomorrow, so we will probably group this in with that.

Awesome 🙌 thx


feat: adding switch component

Title
Feature request for adding Switch component with props
Proposed Changes

added docs for switch
Switch with props like size, color, bgColor and isChecked

Check List (Check all the applicable boxes)

[x] Bug(s) fixed
[ ] Enhancement done
[x] New Feature(s) added
[x] Documentation changed
[ ] All new and existing tests passed.
[x] My code follows the code style of this project.

Screenshots (if any)
Additional Information
featured added #179

@thekavikumar check this one bro

please use pnpm and update the commit also there are 14 files that got changed, pls check and do only the required changes

@thekavikumar I removed the package-lock.json file from my commit.

Can you resolve the error

@thekavikumar Actually, I can't get switch component from love-simple-ui. So I did manually copied the dist files to the node_modules/love-simple-ui


Add use of coinselect to improve transaction sending

Add dependency on coinselect.
Hides the input for fee, user doesn't need to think about it.
Makes the fee sat/byte to avoid confusion and value transformations.
Improves the max send option.

Hides the input for fee, user doesn't need to think about it.

I think this is good user UX but we should not allow also a user to manage that?

Hides the input for fee, user doesn't need to think about it.

I think this is good user UX but we should not allow also a user to manage that?

I think most apps allow users to configure fee a bit, but mostly hidden. We'll leave it like this for now and change depending on user feedback and needs.


what is the synthetic self-training

I noticed that the best model for squad2.0 uses bert + synthetic self-training trick, but i can't find any description about this. Could anyone show me how this trick work?
Thanks!

I have also been wondering about the same,I am not able to find any further details about these methods can be used along with BERT .
Any details on this will be very helpful.

same question

Here is the answer, from page 26
https://nlp.stanford.edu/seminar/details/jdevlin.pdf?fbclid=IwAR2TBFCJOeZ9cGhxB-z5cJJ17vHN4W25oWsjI8NqJoTEmlYIYEKG7oh4tlY

Here is the answer, from page 26
https://nlp.stanford.edu/seminar/details/jdevlin.pdf?fbclid=IwAR2TBFCJOeZ9cGhxB-z5cJJ17vHN4W25oWsjI8NqJoTEmlYIYEKG7oh4tlY

Thank you so much for your sharing !!!

So how about N-Gram Masking?  Does anyone know?
Even Single Model beats the others lol

So how about N-Gram Masking? Does anyone know?
Even Single Model beats the others lol

Baidu recently open sourced a model called ERNIE, which masked n-gram instead of 1-gram during pre-training. I think this is similiar to the bert + N-Gram Masking.
https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

Is synthetic self training in this code?

So how about N-Gram Masking? Does anyone know?
Even Single Model beats the others lol
Baidu recently open sourced a model called ERNIE, which masked n-gram instead of 1-gram during pre-training. I think this is similiar to the bert + N-Gram Masking.
https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE

What is N-Gram Masking? Anyone care to translate the readme in Baidu's repo to English?


newsboat: 2.37 -> 2.38

Release notes: https://github.com/newsboat/newsboat/releases/tag/r2.38
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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

[x] 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/)
25.05 Release Notes (or backporting 24.11 and 25.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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 367453

x86_64-linux

:white_check_mark: 1 package built:

newsboat

nixpkgs-reviewd workflow started
Status and logs: https://github.com/nixosbrasil/nixpkgs-reviewd/actions/runs/12460804939

nixpkgs-reviewd workflow finished
Status and logs: https://github.com/nixosbrasil/nixpkgs-reviewd/actions/runs/12460804939
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 367453

x86_64-darwin

:white_check_mark: 1 package built:

newsboat

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 367453

aarch64-darwin

:white_check_mark: 1 package built:

newsboat

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 367453

x86_64-linux

:white_check_mark: 1 package built:

newsboat

Thanks for reviewing everyone an thanks for merging this alreadyy, @sikmir, much appreciated! 🙂


bowler  solution added

This PR will be closed soon if there is no response

i have added comments and instruction

Could you please recheck your bowler solution.
The output of your code for the testcase
2
4 3 2
5 4 1

is
3 2 1 3
-1

Expected Output
1 2 3 2
-1

Also add comments to the chef and work solution as well.


LSC prototype: Code snippets

Code snippet insertion via Insert Snippet command now works.
Still need to finish:

Add available snippets to completion list
Trigger snippet via pressing TAB

Code to add snippets now added to completion list, but there is internal bug 987737 in upstream VS that is preventing our middle layer from working.

Trigger snippet via pressing TAB is now working

Closing this since most of it is implemented. I have task https://github.com/microsoft/PTVS/issues/5763 that covers adding the items to the completion list.


Тhermostat does not respond ?

A few minutes after adding a thermostat does not respond in the home application,
but the monitor shows that it works and even receives temperature data.
Has anyone had the same problem and how to fix it?

I have the same issue, it works great for a couple of times but after +-30 it stops working. I am running it on a esp32, you?

I’m running it on wemos d1 mini...

NodeMCU

Hey @maccoylton, that issue with updates on integer characteristics should be fixed in latest esp-homekit.

@max thanks latest version does seem to fix that issue

Hi, I am sorry for this basic question. How do I make sure I am using the latest version?

Run git submodule update --init --recursive

Hello  I will ask my question here.
My wife does not have an ios device and can not control a thermostat.
I would like to add two buttons to raise and lower the temperature.
Is this the variable I need to increase and decrease -> target_temperature.value.float_value?
Please give your conversion suggestions.

Yes, and then call  homekit_characteristic_notify
See my example repository (has a temperature sensor, but it's the same behavior)
https://github.com/ruudk/esp32-homekit-contact-and-temperature-sensor/blob/master/main/main.c#L263:L264

Thank you

I tried your advice -> git submodule update --init --recursive but the device still does not respond

I had to reinstall Mac OS
I installed everything blinking again on ESP, but the thermostat still does not respond.
What should I do ?

Did you remove the device and then add it again in the Home app?

This thermostat works for me (https://github.com/RavenSystem/esp-homekit-devices/tree/master/devices_legacy/Sonoff_TH)

@Kristian8606 you’re doing something wrong. Just reflashed my thermostat with latest code version and it is running no problem for a day so far

Should I use the latest version after I install everything again?
I do everything according to the instructions.


network Activity Indicator for WebView

Hello there.
Do we have possibility to use network Activity Indicator for WebViews without modifying files in Xcode?

Not yet. I've created a task to implement this.

To be clear, do you want to display a loading indicator inside the webview itself, or are you talking about the network activity indicator that appears in the status bar on the top of the screen?

@nicklockwood Network activity indicator that appears in the status bar on the top of the screen. Thanks


Detect shared projects when parsing solution files

Fixes #3183

I wish our parser wasn't the one to use for this but since it is . . .

I agree. It'd be great if there were a solution-parsing API available that wasn't so tied to the semantics of what MSBuild needs to build. Getting to that's on my list someday. :smile:

The RHEL7.2 failure does not look related to my change. @rainersigwald : Is this a known failure?

@dotnet-bot test RHEL7.2 Build for CoreCLR please

@cdmihai has it ever passed? the current history is all red :(

@DustinCampbell probably unrelated. I restarted it. If it fails again we can just ignore it, since I don't see how your changes could cause that.

@cdmihai: FWIW, I'd already kicked it a few times directly on Jenkins. Looks like this one might be failing in general.

Feel free to merge when everyone is comfortable with this. I don't have write access.

Thanks @DustinCampbell!


gatekeeper: 3.12.0 -> 3.13.0

Description of changes
change log: https://github.com/open-policy-agent/gatekeeper/releases/tag/v3.13.0
diff: https://github.com/open-policy-agent/gatekeeper/compare/v3.12.0...v3.13.0

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

[x] 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
[x] 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 249129 run on x86_64-linux 1

1 package built:

gatekeeper

Commits have been squashed into https://github.com/NixOS/nixpkgs/pull/249129/commits/ea3df1934f447a126a5a6235953e73b39458c674


Tag the source

It would be very helpful if you could tag releases as well. This would enable distributions who want to run your tests to fetch the package from GitHub instead of PyPI, where the tests are excluded.
Thanks

Thanks for submitting this. I'll get on this asap.

Done this. Feel free to let me know if you have any more suggestions.


Add initial kernel testing infrastructure

This PR ensures that we can load the BPF program in different kernels with 1.6G of available memory.
See https://github.com/parca-dev/parca-agent/issues/1141
Running locally
$ ./env.sh # to install bluebox

qemu-system-x86_64 and curl should be installed, too.
$ time make vmtest
[...]
Test summary: 4 passed, 0 failed

real	0m53.361s
user	0m55.341s
sys	0m2.298s

Test Plan
locally, happy path
$ make vmtest
[...]
=============
Test results:
=============
- ✅ 5.4
- ✅ 5.10
- ✅ 5.18
- ✅ 5.19

Test summary: 4 passed, 0 failed

locally, error path
$ make vmtest
[...]
=============
Test results:
=============
- ✅ 5.4
- ❌ 5.10
- ✅ 5.18
- ✅ 5.19

Test summary: 3 passed, 1 failed
(See logs in kerneltest/logs/)
make: *** [Makefile:222: vmtest] Error 1

GH Actions
See the Kernel tests action below

TODO

[x] Return the right status code
[x] create /kernels and /logs directories
[x] Fix batch tests so they are only run if the kernel supports them (we need this anyways once we use batch map APIs)
[x] Set memlock to non unlimited
[ ] Create our own repo where to host the kernels. Alternatively we could cache them on GH actions
[ ] Decide how and when to run in CI (e.g. on PR or periodically? individual jobs or as-is?). We can decide this now or later on

Signed-off-by: Francisco Javier Honduvilla Coto<EMAIL_ADDRESS>

The CI failures are known https://github.com/parca-dev/parca-agent/pull/1185

Hmm, why do we have merged commits on this? Did I do it?

Thought you had used the update branch feature to merge main in this branch

The vmtest workflow did not start because according to the documentation:

To trigger a workflow runs on the workflow_run event, the workflow file should exist on the master or default branch.

Given that it worked fine when it was in the Build workflow, it should probably work now. We will iterate if this is not the case. We considered workflow_call and workflow_dispatch but decided not to use them as it would require extra logic in our workflows to ensure that they were called by the right workflow, which would complicate our setup


Library is licensed as GPL-3

Hey,
This library is licensed as GPL-3 and is being used in chakra-ui/vue. Unfortunately, this blocks us from using chakra ui in a commercial product.
Would you consider changing the license to something more permitting? 💖
Apache-2.0 works well for us, MIT would too.

Yep, no problem! I have no intention of restricting usage of this package so happy to change!
Just merged a change to Apache-2.0, hope that helps!

@phegman Thank you so much! 🎉


Support for new JobScheduler APIs on Android P

https://developer.android.com/preview/features.html#jobscheduler

Since this library will be deprecated in favor of WorkManger in the future, this feature won't be implemented.


[Feature] Softban Unbanner

According to this subreddit you can unban your account from a softban by spinning a (the same!) pokestop ~40 times. I tried it out and it works pretty well for me.
Maybe someone can add this? Would be very nice to see auto-unbanning :D

Sorry, didn't look it up. This is a copy of #1187


⚠ Bofrost.de has degraded performance

In bd2dd2e, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 845 ms

Resolved: Bofrost.de performance has improved in a25813b after 1 hour, 35 minutes.


[Ask] Cannot invoke 'map' with an argument list of type

Hi ...is everyone here create NetworkService wrapper for transform response in to Decodable object, when I create function with generic type of Decodable.protocol I got this Cannot invoke 'map' with an argument list of type

Moya/RxSwift (10.0.1)
ObjectMapper (3.1.0)

Hi @alfian0. You could try making the function generic, as our function expects any type that implements Decodable and AFAIK Decodable does not implement Decodable, which shouldn't be the case and I'm not sure if it's fixed in the newest Swift.
Something like:
internal func requestObject<T: Decodable>(token, decodableClass: T.Type) {}

Let me know if it helps.

 I just forgot to use T, my existing code use ObjectMapper and I need change to Decodable. Its working now

this is my old implementation

thanks @sunshinejr

Nah, not dumb at all @alfian0. In fact this shouldn't be a problem and you should be able to just run the code you posted without any changes. But yeah, it's not there yet.
I'm closing this one but if there is anything else we can help you with, let us know!


Ongoing development

This PR has ongoing development since the last update in October 2018 to maintain compatibility with the latest versions, update for new SMAPI features, and make minor improvements. Once this is merged, I can provide a compiled package to release if you'd like.
Changes
Improvements

Added support for the new sprinkler upgrades like the pressure nozzle and enricher.
Added crossplatform compatibility with reworked Harmony patching.¹
Added automatic compatibility with sprinkler mods by patching the new obj.IsSprinkler() and obj.GetBaseRadiusForSprinkler() methods.
Added compatibility with custom locations by using Harmony patches instead of location scanning.
Added Korean translations (thanks to @S2SKY!).
Fixed various errors reported by users.
Fixed sprinklers not un-scarecrowed when the option is disabled.
Fixed non-prismatic tool sprites overwritten, which affected compatibility with other mods.
Fixed translations not updated when the player switches language.

Maintenance

Updated for Stardew Valley 1.3.36, 1.4 (thanks to @Seawolf87!), 1.5, and 1.5.5.
Updated for SMAPI 3.14.
Updated the mod build package and migrated to the new .csproj format.
Bumped the manifest.json versions for release.
Fixed hardcoded assembly references.
Removed old sprinkler index migration.
Removed old assets/old files (still available in the commit history).
Internal refactoring.

¹ (SMAPI automatically handles code changes between Linux/Mac and Windows, but it can't do that for type references in attributes. Using Harmony's API instead means the mod will work seamlessly across Linux/Mac/Windows without needing separate builds.)
Testing
The unofficial updates for Prismatic Tools have over 35,000 downloads, so the changes should be pretty stable. See download counts for the most recent releases: unofficial.12, ~unofficial.11~, unofficial.10, unofficial.9, unofficial.8, unofficial.7, unofficial.6, unofficial.5, unofficial.4, unofficial.3, unofficial.2, unofficial.1.
Let me know if you want me to change anything!

This mod makes the mod "no crows" invalid.I wonder if you have changed the code of crow.

This mod makes the mod "no crows" invalid.I wonder if you have changed the code of crow.

@bingfengkushao I replied in the issue you opened.

@bingfengkushao I replied in the issue you opened.

Is there any chance you might update this mod for 1.6? I'd do it myself it I could but I don't know how to.

hey patho can you pls update prismatic tools and pelican fiber for 1.6? that were very nice

@Locien @XiNaru There's an updated version for 1.6 at Prismatic Tools Continued (but none for Pelican Fiber yet). You can check the SMAPI compatibility list to find updates for any C# mod.


Configuration Features Added

Hey there.  Fellow professional blockchain dev here.  I love the project.  I'm definitely open to contributing more if you're open.  If you have a project wiki / jira, let me know.
About the PR: I've added some config options for perigord.yaml (mainly because you had mentioned it in a TODO).  This is just a start to see what you think.  I want to add a bunch more options.
Regards,
Eric

FYI - I plan on adding https://godoc.org/github.com/spf13/viper#SetDefault as the mechanism for default values rather than configDefault map.  What are your highest priority config options?  What defaults are you thinking?

Thanks for your interest and contribution! I am going to hold off on merging this PR for now, mostly because the compile process is going to be changing quite a bit soon to support linking deployed contracts after binding generation. I also am not sure if all of these options should be configurable, or if we should take a convention-over-configuration stance on them.
As part of getting contract linking working we needed to switch to using solc's --standard-json mode to get additional output from the compiler which seems to be otherwise inaccessible (this is also what truffle uses). This mode also exposes several other options which may be relevant to the user, such as optimization level etc. which I think are good candidates for config options. Check out the "linking" branch for the current state of this, and http://solidity.readthedocs.io/en/develop/using-the-compiler.html#compiler-input-and-output-json-description for some of the options (incomplete afaik). We're currently working to get support for linking contracts post-compilation without the need to recompile the contracts upstream into abigen/go-ethereum which this is blocking on to see how they want to handle it (WIP).
Our wiki is currently empty but we would definitely welcome any content there! For now it seems the best way to do that would be to add some wiki pages to your fork then submit an issue and I will check them out and merge them.
Thanks again!

I would recommend convention for the folder names.  There are many other configurations we could think up.  This was essentially just to create the workflow.  I could add other items easily now.
I'll have some spare time this weekend.  I'll see what I can do to help with the wiki.  Otherwise, I'll check out your linking branch and see if I can add anything.


Add Prometheus service account in monitoring NS

Current antrea-prometheus.yml uses default account for Prometheus server access.
The following replaces it with Prometheus service account.
#718

/test-all

/skip-all

@antoninbas PR #657 is already rebased on top of this one so we can merge this one.
As of now #657 tests won't pass due to issue #734 :(

@antoninbas I think it's good to have separate service account, prometheus example is doing the same: https://github.com/prometheus/prometheus/blob/master/documentation/examples/rbac-setup.yml

@ksamoray could you add replace the issue ID with "Fixes #718" to enable Github's association and auto-closing?

@tnqn done


Upload app to Samsung's and Huawei's store

Google App Store is not present on all Android devices, distributing the builds to Samsung, Huawei and even other alternate stores can provide wider world-wide coverage for the app. Although #203 (especially Chinese translation) would be really nice for that first.

I uploaded the apk build 103 to apkfiles.com.

The Galaxy Store has an Import Google App feature https://seller.samsungapps.com/guidePopup.as?numcid=0201070000&localeLanguage=en&viewmore=0201070200

Submitted to Galaxy App Store, ID<PHONE_NUMBER>68

The Huawei store requires a thorough identification process which will last a few days, I started it. The Galaxy Store accepted my application: https://seller.samsungapps.com/application/main.as?contentId=000006353768&platform=&readOnly=Y&forSale=Y#/detail/info

Huawei AppGallery approved my ID. Uploading app.

Got to a roadblock: everything seems to be aligned except I cannot select the apk for submission. WTF? https://forums.developer.huawei.com/forumPortal/en/topic/0201905691476960102?fid=0101188387844930001

Now that the app is the Galaxy Store and will be in the Huawei AppGallery it'll be more important to make the app localizable so it can be translated to Chinese and other languages #203

Ref #300
Ref #301


Support interval field on metrics POST

Adds support for submitting the interval for metrics, which is supported by the API.

Bump, any reasons not to merge this?

@bkabrda @gzussa either of you mind having a look?


Light and dark theme switching option should be in Settings page

There is an option in settings page to set theme. Show a pop-up dialog to show these 3 options:

Light
Dark
System Default

Two buttons: Cancel, OK.
This theme information should be stored in preference.

@AliAkberAakash Issue description updated. Also master is updated. Please update your feature branch.


POC -> Database -> MongoDB with PrismaORM or AWS Amplify

As a Speaker, I should be able to create an account or login in JSLovers website and see my profile.
As an Attendee, I should be able to create an account or login in JSLovers website, see my profile, and sign up for meetups.
As a Meetup Organizer, I should be able to create an account or login in JSLovers website, see my profile, and create and manage meetups, add speaker roles for that meetup and fetch list of attendees and should be able broadcast communication messages to attendees.
As an Admin, I should be able to login in JSLovers website as Admin, create and manage, delete meetups, add meetup-organizer roles or remove them.
New Features to built

Mongo DB with Prisma ORM / AWS Amplify Integration with NextJS API.
Forms for Login and Registration + Auth
Speaker profile
Create User Roles.

Hello @ekas will do but be needing some help
what are requirements ?
Components you might wanna add
any specific direction you want to give about what the database should contain in MongoDb
ui of signin/signup page
thank you!

Hello @ekas will do but be needing some help
what are requirements ? Components you might wanna add any specific direction you want to give about what the database should contain in MongoDb ui of signin/signup page
thank you!

Hey @akshat99812 , have you checked the description? @jaswantsandhu  has added requirements in that.
I would suggest you before you move ahead with code or ui of signin/signup page  can you share the design of the DB?
we will work in collaboration to discuss the design of the DB.

@Neha Ya sure , here 's a high level of what I think schema should be
1.User Model:

id
email: unique
name
number
password
meetups

2.Speaker Model:

id
email: The speaker's email, which must be unique.
name
password

3.Meetups Model:

id
meetup: name or label of the meetup
userId: The ID of the user who is associated with this meetup.

Is there any changes you want

Could you please take a look
Users Table
user_id (Primary Key)
name
email (Unique)
password_hash
role (e.g., attendee, speaker, admin)
city
country
created_at
updated_at
Speakers Table
speaker_id (Primary Key)
user_id (Foreign Key to Users table)
bio
profile_picture_url
location
Meetups Table
meetup_id (Primary Key)
title
description
location
date
visibility (e.g., public, private)
created_at
updated_at
Speaker_Meetup Table (Many-to-Many relationship between Speakers and Meetups)
speaker_meetup_id (Primary Key)
speaker_id (Foreign Key to Speakers table)
meetup_id (Foreign Key to Meetups table)
Feedback Table
feedback_id (Primary Key)
user_id (Foreign Key to Users table)
meetup_id (Foreign Key to Meetups table)
rating
comments
created_at
Resources Table
resource_id (Primary Key)
meetup_id (Foreign Key to Meetups table)
resource_type (e.g., ppt, code repo)
resource_url
created_at
what types of roles to assume in users table
Could you kindly review the proposed schema and provide any feedback or suggestions for improvement?

We can have discussion here: https://github.com/jslovers/jslovers-official-website/discussions/68

Just added db schema design in the discussion section could you please review.

Any updates?

There is no update on this. I would request you to keep an eye on discussion. Discussion will be updated whenever there is any update. For now, I have locked this conversation. to avoid adding more comments here


Find a channel to exchange

Hello,
I made a quick overview of the tools that I knew (or not :)) used in big open source project.
I believe that I would go like this :

Gitter to chat simply : No archive, no file sharing etc ...
Slack if we need to go further :)

For the project, I guess we could just use a Github Project and make some card for extension. ;)
So let's try with gitter and start to know each other ;)

I've created a Gitter community for the project communication :)


Vault keys and token in s3

@bonifaido When I choose s3 to store keys and token with KMS encryption for vault, Bank-vault is able to store and retrieve the keys for unsealing. However, After deleting CRD and deployments I can still see the keys and token exist in s3.
This is causing a issue when you apply CRD and deployments for the second time with the same s3 as the storage.
Bank-Vaults log
time="2018-08-02T13:36:10Z" level=info msg="initializing vault..."
time="2018-08-02T13:36:17Z" level=info msg="initializing vault"
time="2018-08-02T13:36:17Z" level=fatal msg="error initializing vault: error before init: keystore value for 'vault-root' already exists"
Is it possible to add this feature for aws storage CRD so that it could be seamless for re-deployments.

@gowthamsubbu  Deleting resources from an object storage is not the job of this operator by design - and we'd like to keep it that way. As a well-accepted Vault design pattern among object store backend users (e.g. S3) the unseal keys are not managed (thus deleted) buy Vault itself. The lifecycle of an unseal key is usually the concern of different set of ops people/roles (but certainly not the operator). If you wish to reuse the same key names you have to delete yourself beforehand.

@matyix Understood. Thanks.

@matyix i'm experiencing a similar issue, but when updating the vault configuration.
With the unseal storage set to k8s each configuration change which triggers a rolling update will cause the error "error initializing vault: error before init: value for key 'vault-root' already exists"


Bug multi libusb

@ghollingworth @timg236 @XECDesign @pelwell

As mentioned in the first PR, the path is not a valid fix for anything.
In what situation doesn't the pkgconfig not work?


cleanup: resolve errorlint issues

This commit resolves errorlint issues
which checks for the code that will cause
problems with the error wrapping scheme.
Updates: #1586
Signed-off-by: Yati Padia<EMAIL_ADDRESS>

/retest ci/centos/mini-e2e-helm/k8s-1.19

/retest ci/centos/mini-e2e/k8s-1.20

/retest ci/centos/mini-e2e-helm/k8s-1.19

/restest ci/centos/k8s-e2e-external-storage/1.21

/retest ci/centos/k8s-e2e-external-storage/1.21

/retest ci/centos/k8s-e2e-external-storage/1.21

/retest ci/centos/mini-e2e/k8s-1.20.

/retest ci/centos/mini-e2e/k8s-1.20

/retest ci/centos/mini-e2e/k8s-1.19

/retest ci/centos/mini-e2e-helm/k8s-1.19

/retest ci/centos/k8s-e2e-external-storage/1.21

/retest ci/centos/mini-e2e/k8s-1.19

/retest ci/centos/mini-e2e/k8s-1.20

/retest ci/centos/mini-e2e/k8s-1.20

/retest ci/centos/k8s-e2e-external-storage/1.21

/retest ci/centos/upgrade-tests-cephfs

/retest ci/centos/mini-e2e/k8s-1.20

/retest ci/centos/mini-e2e/k8s-1.20

/retest ci/centos/mini-e2e/k8s-1.20

NodePublishVolume for CephFS PV pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56 with request-id 31 never finished (logs):
I0714 14:28:46.139903       1 utils.go:171] ID: 31 Req-ID: 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca GRPC call: /csi.v1.Node/NodePublishVolume
I0714 14:28:46.140105       1 utils.go:175] ID: 31 Req-ID: 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca GRPC request: {"staging_target_path":"/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56/globalmount","target_path":"/var/lib/kubelet/pods/7994b9c8-481c-48be-9c62-f871d2d4aa0c/volumes/kubernetes.io~csi/pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56/mount","volume_capability":{"AccessType":{"Mount":{"mount_flags":["debug"]}},"access_mode":{"mode":5}},"volume_context":{"clusterID":"60ab47e6-e3ab-479e-a924-698281ed1b3b","csi.storage.k8s.io/pv/name":"pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56","csi.storage.k8s.io/pvc/name":"csi-cephfs-pvc","csi.storage.k8s.io/pvc/namespace":"cephfs-8081","fsName":"myfs","fuseMountOptions":"debug","mounter":"fuse","pool":"myfs-data0","storage.kubernetes.io/csiProvisionerIdentity":"1626272803856-8081-cephfs.csi.ceph.com","subvolumeName":"csi-vol-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca","subvolumePath":"/volumes/e2e/csi-vol-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca/bc645063-5708-4472-8b39-ccdfb94e7603"},"volume_id":"0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca"}
I0714 14:28:46.151946       1 mount_linux.go:173] Cannot run systemd-run, assuming non-systemd OS
I0714 14:28:46.151978       1 mount_linux.go:174] systemd-run failed with: exit status 1
I0714 14:28:46.151993       1 mount_linux.go:175] systemd-run output: System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to create bus connection: Host is down
I0714 14:29:28.249554       1 utils.go:171] ID: 32 GRPC call: /csi.v1.Identity/Probe
I0714 14:29:28.249639       1 utils.go:175] ID: 32 GRPC request: {}
I0714 14:29:28.249677       1 utils.go:182] ID: 32 GRPC response: {}
I0714 14:30:28.250114       1 utils.go:171] ID: 33 GRPC call: /csi.v1.Identity/Probe
I0714 14:30:28.250197       1 utils.go:175] ID: 33 GRPC request: {}
I0714 14:30:28.250231       1 utils.go:182] ID: 33 GRPC response: {}
I0714 14:30:46.659598       1 utils.go:171] ID: 34 GRPC call: /csi.v1.Node/NodeGetCapabilities
I0714 14:30:46.659688       1 utils.go:175] ID: 34 GRPC request: {}
I0714 14:30:46.659817       1 utils.go:182] ID: 34 GRPC response: {"capabilities":[{"Type":{"Rpc":{"type":1}}},{"Type":{"Rpc":{"type":2}}}]}
I0714 14:30:46.664384       1 utils.go:171] ID: 35 Req-ID: 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca GRPC call: /csi.v1.Node/NodePublishVolume
I0714 14:30:46.664594       1 utils.go:175] ID: 35 Req-ID: 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca GRPC request: {"staging_target_path":"/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56/globalmount","target_path":"/var/lib/kubelet/pods/7994b9c8-481c-48be-9c62-f871d2d4aa0c/volumes/kubernetes.io~csi/pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56/mount","volume_capability":{"AccessType":{"Mount":{"mount_flags":["debug"]}},"access_mode":{"mode":5}},"volume_context":{"clusterID":"60ab47e6-e3ab-479e-a924-698281ed1b3b","csi.storage.k8s.io/pv/name":"pvc-f9250fb8-767c-44c9-bbed-130c6d2c4c56","csi.storage.k8s.io/pvc/name":"csi-cephfs-pvc","csi.storage.k8s.io/pvc/namespace":"cephfs-8081","fsName":"myfs","fuseMountOptions":"debug","mounter":"fuse","pool":"myfs-data0","storage.kubernetes.io/csiProvisionerIdentity":"1626272803856-8081-cephfs.csi.ceph.com","subvolumeName":"csi-vol-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca","subvolumePath":"/volumes/e2e/csi-vol-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca/bc645063-5708-4472-8b39-ccdfb94e7603"},"volume_id":"0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca"}
E0714 14:30:46.664632       1 nodeserver.go:224] ID: 35 Req-ID: 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca an operation with the given Volume ID 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca already exists
E0714 14:30:46.664656       1 utils.go:180] ID: 35 Req-ID: 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca GRPC error: rpc error: code = Aborted desc = an operation with the given Volume ID 0001-0024-60ab47e6-e3ab-479e-a924-698281ed1b3b-0000000000000001-c9ebee2e-e4af-11eb-9b57-4e25d0b69dca already exists

/retest ci/centos/mini-e2e/k8s-1.21

/retest ci/centos/mini-e2e/k8s-1.21

/retest ci/centos/mini-e2e-helm

/retest ci/centos/mini-e2e-helm

/retest ci/centos/mini-e2e-helm/k8s-1.22

/retest ci/centos/mini-e2e-helm/k8s-1.19

/retest ci/centos/mini-e2e-helm/1.19

/retest ci/centos/mini-e2e-helm/1.21

/retest ci/centos/mini-e2e-helm/k8s-1.21

/retest ci/centos/mini-e2e-helm/k8s-1.21

Failed due to #2264

/retest ci/centos/mini-e2e-helm/k8s-1.19

Failed with some etcdserver timeouts (logs):
Jul 19 08:06:17.613: INFO: waiting for PVC rbd-pvc (0 seconds elapsed)
Jul 19 08:06:19.623: INFO: waiting for PVC rbd-pvc (2 seconds elapsed)
Jul 19 08:06:21.621: INFO: waiting for PVC rbd-pvc (4 seconds elapsed)
Jul 19 08:06:23.622: INFO: waiting for PVC rbd-pvc (6 seconds elapsed)
Jul 19 08:06:33.622: INFO: waiting for PVC rbd-pvc (16 seconds elapsed)
Jul 19 08:06:45.928: INFO: Error getting pvc "rbd-pvc" in namespace "rbd-1318": etcdserver: request timed out
Jul 19 08:06:47.623: INFO: waiting for PVC rbd-pvc (30 seconds elapsed)
Jul 19 08:06:56.324: INFO: Error getting pvc "rbd-pvc" in namespace "rbd-1318": etcdserver: request timed out
Jul 19 08:06:57.622: INFO: waiting for PVC rbd-pvc (40 seconds elapsed)
Jul 19 08:07:09.622: INFO: waiting for PVC rbd-pvc (52 seconds elapsed)
Jul 19 08:07:21.622: INFO: waiting for PVC rbd-pvc (64 seconds elapsed)
Jul 19 08:07:25.622: INFO: waiting for PVC rbd-pvc (68 seconds elapsed)
Jul 19 08:07:38.417: INFO: Error getting pvc "rbd-pvc" in namespace "rbd-1318": etcdserver: request timed out
Jul 19 08:07:39.622: INFO: waiting for PVC rbd-pvc (82 seconds elapsed)
Jul 19 08:07:47.622: INFO: waiting for PVC rbd-pvc (90 seconds elapsed)
Jul 19 08:07:59.624: INFO: waiting for PVC rbd-pvc (102 seconds elapsed)
Jul 19 08:07:59.634: INFO: Error getting pvc "rbd-pvc" in namespace "rbd-1318": Get "https://<IP_ADDRESS>:8443/api/v1/namespaces/rbd-1318/persistentvolumeclaims/rbd-pvc": dial tcp <IP_ADDRESS>:8443: connect: connection refused
Jul 19 08:07:59.634: FAIL: failed to create PVC with error failed to get pvc: Get "https://<IP_ADDRESS>:8443/api/v1/namespaces/rbd-1318/persistentvolumeclaims/rbd-pvc": dial tcp <IP_ADDRESS>:8443: connect: connection refused

/retest ci/centos/mini-e2e-helm/k8s-1.20

/retest ci/centos/mini-e2e-helm/k8s-1.20

Deploying minikube+rook timed out, network slowness in the CI infra? (logs)


[release-v0.13] chore: Update and drop dependencies

What this PR does / why we need it:
Updated modules golang.org/x/* and github.com/docker/distribution to the latest versions and dropped dependency on k8s.io/kubernetes.
Release note:

None

/retest


【brew services start nginx】can not start nginx

homebrew.nginx.service
[Unit]
Description=Homebrew generated unit for nginx
[Install]
WantedBy=default.target
[Service]
Type=simple
ExecStart=/home/linuxbrew/.linuxbrew/opt/nginx/bin/nginx -g daemon\ off;
WorkingDirectory=/home/linuxbrew/.linuxbrew
nginx error.log
2024/07/11 18:39:05 [emerg] 10978#0: unexpected end of parameter, expecting ";" in command line
maybe the ExecStart be like this?
ExecStart=/home/linuxbrew/.linuxbrew/opt/nginx/bin/nginx -g 'daemon off;'

What brew services command are you running that doesn't work?

brew services start nginx
but nginx didn't start.

Sorry, there's not enough information to help you here.


Attention Mechanism not working

Hi,
I have added an attention layer (following the example) to my simple LSTM network shown below.
timestep = timesteps
features = 11
model = Sequential()
model.add(LSTM(64, input_shape=(timestep,features), return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(32, return_sequences=True))
model.add(LSTM(16, return_sequences=True))
model.add(Attention(32))
model.add(Dense(32))
model.add(Dense(16))
model.add(Dense(1))
print(model.summary())
The code worked fine up till last week and I got a summary of model having attention layer details like this:

However, now running the same code gives me a weird error.
ValueError: tf.function-decorated function tried to create variables on non-first call.
What I noticed is that the model summary has changed too:

I am tight on time due an upcoming deadline. Any assistance would be highly appreciated.
P.S. This was a fully working model that has stopped working all of a sudden for no apparent reason.

Try to downgrade your tensorflow version.

I changed the way I was calling the model, without downgrading Tensorflow and it started working again. New model definition:
timestep = timesteps
features = 11
model_input = Input(shape=(timestep,features))
x = LSTM(64, return_sequences=True)(model_input)
x = Dropout(0.2)(x)
x = LSTM(32, return_sequences=True)(x)
x = LSTM(16, return_sequences=True)(x)
x = Attention(32)(x)
x = Dense(32)(x)
x = Dense(16)(x)
x = Dense(1)(x)
model = Model(model_input, x)
print(model.summary())

Great!

Quick follow-up question: Can you tell how to downgrade tensorflow to 2.3? Current version in Colab is 2.5 and I am having the report issue again, even with the new model definition.
I know %tensorflow_version 2.x cannot downgrade TF to 2.3

I think this should work:
!pip install tensorflow==2.3

Like that

Alright, so that worked. Next up, I cannot use multiple Attention layers in one ensembled model. So, I have model1 that has an attention layer and I have model2 that has another attention layer. But when I concatenate these two models, I get this error:
ValueError: The name "last_hidden_state" is used 2 times in the model. All layer names should be unique.
I believe this is because the attention layer itself has multiple inner/nested layers and models cannot have layers with same name. I tried renaming the attention layer but since it is just a wrapper, that renaming didn't help and the error persists.
Any workaround for this?

@SaharaAli16 yes have to remove the names inside the layers: https://github.com/philipperemy/keras-attention-mechanism/blob/0f8b440e8e74fb25309b2d391f7280bf4f13129a/attention/attention.py#L24. Otherwise Keras will complain that they already exist if you instantiate a second Attention class.

The suggested setup:
timestep = timesteps
features = 11

model_input = Input(shape=(timestep,features))
x = LSTM(64, return_sequences=True)(model_input)
x = Dropout(0.2)(x)
x = LSTM(32, return_sequences=True)(x)
x = LSTM(16, return_sequences=True)(x)
x = Attention(32)(x)
x = Dense(32)(x)
x = Dense(16)(x)
x = Dense(1)(x)
model = Model(model_input, x)
print(model.summary())

No longer works for TF 2.7.0
Error :
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-88e2c30c5093> in <module>()
      7 x = LSTM(32, return_sequences=True)(x)
      8 x = LSTM(16, return_sequences=True)(x)
----> 9 x = Attention(32)(x)
     10 x = Dense(32)(x)
     11 x = Dense(16)(x)

1 frames
/usr/local/lib/python3.7/dist-packages/keras/engine/base_layer.py in __init__(self, trainable, name, dtype, dynamic, **kwargs)
    339              trainable.dtype is tf.bool)):
    340       raise TypeError(
--> 341           'Expected `trainable` argument to be a boolean, '
    342           f'but got: {trainable}')
    343     self._trainable = trainable

TypeError: Expected `trainable` argument to be a boolean, but got: 32

I would suggest copying the source code and compile it in your code. That should work.

Yes so this issue was fixed in the latest release (4.1) of the attention mechanism.
pip install attention --upgrade

Will solve it.


Global object "PushNotification" is an empty function on Android

Hi,
I have a problem getting this to work on my android device (Android 4.4.2). Everything works fine on iOS but on Android the global PushNotification object is not an object, just an empty function:
https://www.dropbox.com/s/jxfgpwaurntmhpk/Screenshot 2015-11-20 16.05.48.png?dl=0
I am using cordova version 5.1.1 and installed the plugin using "cordova plugin add phonegap-plugin-push".
Any ideas on this issue?

@vilhelmjosander are you trying to call the init method before the "deviceready" event occurs?

@macdonst No, I have an ember initializer which doesnt advance the application until the deviceready-event is fired.
Also, you have to log in to the application before the init method is called. So the deviceready-event should always have been fired before the init-method.

@macdonst My bad, I updated from the old push-plugin and forgot to remove the old PushNotification.js from my index.html. Sorry about that!


[Feature]: Support for multi-threaded / parallel experiments

Description
To my understanding, it's currently only possible to log experiments done sequentially, or experiments done in using several sub-processes. However, a big part of out work consists in running multiple experiments using a ThreadPool (as this is much cheaper than using processes, and still provides speed-up for many libraries releasing the GIL for work).
As such, I wonder if there is any way of tracking these kind of experiments right now.
As an example, think about evaluating 10 different hyperparameter choices on one and the same data set, e.g. using 3-fold cross-validation, and running each of the 10 models in parallel. How would we go ahead and track (average) metrics of all 10 models? How would we go about tracking each set of 3*10 results?
I can see https://github.com/wandb/examples/blob/master/examples/wandb-sweeps/sweeps-cross-validation/train-cross-validation.py, but this uses multiprocessing and parallelizes over splits, not across models (or across both at same time)
Suggested Solution
I think just being able to use the following approach, independent on whether its sequential, parallel or thread-parallel, would be very helpful:
def run_model_on_split(model_id, hyperparams, x_train, x_test, y_train, y_test):
  with wandb.init(group_name=model_id, ...) as run:
      ...
      run.log(acc)
      return acc

with ThreadPoolExecutor(10) as tpe: // may as well be processpool
    for n_estimators in range(10):
       for split_data in cv.split(x, y):
          future = tpe.submit(run_model_on_split, n_estimators, {"n_estimators": n_estimators}, *split_data)

Alternatives
No response
Additional Context
No response

Hi @Zahlii!
Thank you for your feature request! You are right, while we are working to move in this direction, this style of experiment tracking is not fully supported yet. I'll create an internal ticket to track this request and provide you with updates as movement is made here.
Thanks,
Ramit


Maximum file size allowed in PrimeVault?

What is the maximum file size that can be uploaded to the PrimeVault? and is there a way to extend that limit?

The default maximum data size per transaction is 8 MB. But on the multichain level it can be scaled up to 64 MB by modifying the parameter max-std-op-return-size in ~/home/yobiuser/.multichain/yobichain/params.dat. You can do this through multichain.sh file.

Well you can't change this parameter once the chain has started. You need to modify the multichain.sh file in such a way that this parameter is set even before the chain starts.

I still cannot store more than 2MB even after changing value you mentioned. Can you help please?

You shouldn't modify the parameters of an existing chain. That's why you need to modify the multichain.sh file before running it so as to modify this parameter even before the chain starts running.
Again...
Note: Since you'll be storing the file data in hex format, the size of the hex data will be higher than the actual file size.


Fix for replies not being written back to database

Fix for related issue #141; The Guid for a new bookmark is currently getting written to the database as "m/GUID" rather than "Guid" and when replies are received, the related post wasn't being found because of the "m/".

I can imagine! Enjoyed working on it.


KHM Land Slot

I have a little bug report [KHM].
Now mtgadraft packs, tapin 5c land and tapin dual land cycle in common slot, basic snow land in land slot.
Real mtga KHM draft packs, only tapin 5c land in common slot, tapin dual land cycle and basic snow land in land slot.

DraftLog_26271f29c62c.txt
Wasn't able to reproduce, will have to do more testing.

This was happening when using a restricted card pool (i.e. a generic BoosterFactory).
LastSlot wasn't correctly updated to use the Map API that is now used to store card pools, this is fixed by<PHONE_NUMBER>31f43cb0b9f18da16c02f632b8a4c8.


Electron updates

Description of changes

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] 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/)
24.05 Release Notes (or backporting 23.05 and 23.11 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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

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

1 package built:

electron_28

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

2 packages built:

electron_26
electron_27


Add build tools to Pie requirements in the docs

Fix #101
A few lines about packages required to build extensions as well as the commands to install those packages.

Thanks @alexandre-daubois !


Added VelocityVectorProperty

Added VelocityVectorProperty so billboard's aligned axis can follow the velocity vector. Tests were also added.

@hpinkos can you review this?

@tfili can we rewrite VelocityOrientationProperty in terms of this now?  I imagine it would get rid of all of the code duplication.

@tfili just had that one question

@mramato this should be good for another look.

Just that one last comment.

@mramato Updated the code sample.

Also, please merge in master.

@mramato Master is merged and the comment is fixed.

Thanks @tfili


examples don't compile

via CocoaPods and here are the errors:

https://github.com/pepibumur/SugarRecord/commit/2b2efbcf7d77d4dcbc19afefd34a6c5d79b2c5ea


OLS search is intermittently slow

Screenshot of page that is not loading

API that is not loading
Takes 30 sec to a couple of minutes to search for a term in HP or MONDO. After clicking on a term, the tree is equally slow to load. It has been intermittently very slow, then normal, then slow again today.
Desktop (please complete the following information):
Windows 11, Chrome Version 126.0.6478.127

Hi @lopierra! we have been investigating our Kubernetes usage stats and it looks like there are certain spikes in memory usage around the time you reported the issue which would have led to this... we are working on finding a solution for this and will fix it as soon as possible.

This seems to have been due to some network issues within EBI, which have thankfully been resolved.


Remove Unspecified from user type

The user type drop menu on the profile page contains "unspecified". This should be removed since we already have an "other" option. Removing this will help improve our metrics/reporting

@Castronova - is this simply removing the item from the list or does it also include updating any users for which the option "Unspecified" has been chosen? Is this something @Maurier could do really quickly?

@horsburgh I think it can be done in two steps. The first would be to remove this option from the list which will take @Maurier 5 minutes to complete. The more difficult step would happen afterwards...removing the Unspecified type from existing user profiles. This might be a combination of notifying users and implementing code that forces them to change their user type. As far as correcting the profile data goes, I suggest that it be broken out into a separate issue.

@Castronova @horsburgh  for what it is worth back in the day (2013-2016  era) when use tracking and profiles were conceived both "Unspecified" and "Other" were deliberate.  See https://docs.google.com/document/d/1VhKhxeuBZb6s5K3mPuQnNx6JSO0JIW5T6pi09zL4AjI/edit
Unspecified is the default when an account is created.  "Other" is different from "Unspecified".  When a user selects Other, there is a required free form text field to specify what Other refers to.
If you remove unspecified, you will need to make a choice as to what to default new accounts to.  If the default is "Other" then you will need to fill in the required text field.  I do not think it is a good idea to default to any of the other options.
Unless you want to add "User Type" to the form where an account is created, I do not think it will be easy to get rid of "Unspecified".  I see three choices, that are essentially policy choices
(A) Add filling in (or selecting) user type to the account creation form.  Then this information will be captured with account creation.  For consistency other required information (currently Country and State are required - to facilitate metrics on geographic use) could be captured here too - adopting the policy that if it is required, we ask for it up front.  Anything else in the profile is optional.
(B) Leave things as they are but implement reduced functionality for users with incomplete profiles.  E.g. creating a resource, joining a group might check for profile completeness and disallow the action with a message that profile information needs to be completed before the action is allowed.
(C) Rework the account creation process so that it has steps (1) sign up, (2) verify email, (3) land on profile page in edit mode and click Save.    Any attempts to log in with an inactive account but verified email take you to profile page to complete required information.
So, sorry to rain on the parade, but I fear removing unspecified is not that simple.  If you really want, I could dig out some back in the day workflows for ideas on these designs, but rather than revisiting these, I would suggest a fresh and holistic look at the account creation process and information needed.

I will defer to @Castronova on what is needed here. Tony - once the policy decisions are made, Mauriel could probably help with the implementation.

@dtarb Thanks for linking the design doc. Currently, most of our users have the "unspecified" user type which is problematic when compiling our metrics for NSF. Given, that we have an "other" option, I propose that we remove "unspecified" since it's not meaningful.  According to the user and group profile document (https://docs.google.com/document/d/1l4zJlGyeq2WONijr-azZvFlcG9uvGKXeHJHDcEtFk3Q/edit) it appears that User Type is a required field when editing and saving profile information, but not when creating an account. Since we give all users an "unspecified" user type upon account creation it's not really acting like a required field. Because of this, HS users that have provided and alternative user type have gone into their profile and updated sometime after they created their account. I don't think this is what we had envisioned back in 2016 when the User and Group Profile design document was created. To make this field more informative, we should not specify a default value and instead require users to choose a user type during account creation. Of course, this would require additional work on the account creation page.
I'm looping in @jtpollak since he's responsible for writing out NSF reports and I would like to hear his thoughts on this.

@Castronova what you outlined is the option (A) alternative I mentioned above.  It will require entry of user type during account creation.  It is certainly doable.  But the solution does require changing the login process in addition to just removing this user type from profile, so is not as simple as the 5 min suggested above.

@dtarb @Castronova @horsburgh I would enthusiastically support requiring User Type during the account creation process (i.e. Option A above). In order to deal with a legacy data, could we force users that have an Unspecified User Type to select one as they login? What I am envisioning is a pop-up with a User Type selection form that doesn't allow the user to proceed with doing anything in HydroShare until the user selects a type.

I created #3838 to capture the account creation requirements.

@horsburgh I created ticket #3838 to capture the requirements for modifying the account creation page. This is required before completing this ticket, i.e. removing Unspecified from the user type list.

@Castronova I created a PR #3972 to address the ticket #3838 and asked you to code review. In the PR, unspecified is already removed from user profile editing so that users cannot select unspecified any more when editing their profile. So what is left to do in this issue is how to handle existing users with unspecified user type. Do we want to notify those users with a popup asking them to select a valid user type before allowing them to do anything else? Have we made a decision how to handle this case? Let me know what the decision is to handle this before I can start implementation.

Deployed. Closing.


Where can I find the document of open api of Module

There is no type define of Module in @types/webpack. And there is no any information of it in document. I can dig in the source code, but I don't know which method and property is stable and others are internal

Please open issue in @types and use issue template in future


Not working with Facebook ( keep using it's internal App Browser )

Describe the bug
The plugin works great on WhatsApp! but not on Facebook ( using its in-app browser but my app listed on the options button on the top right corner  ) and on messenger it's actually weird when I click the link jumps to the in-app browser too, but when clicking the thumbnail of the link works fine!!!!
To Reproduce
Steps to reproduce the behavior:

I'm using App Links https with my domain https://carstime.republic-news.com/
I added the Facebook meta tags but didn't notice any difference actually.

Expected behavior
That is working with Facebook at least on the correct way not opening the in-app browser.
Smartphone (please complete the following information):

I tested this on Xiaomi note 8 pro
OS: Android 9

Additional context
I didn't implement code as I don't think it's the problem as  I'm only now the link nothing more for testing.

Thanks, I have fixed this, was an issue with Facebook Meta tags, ( You need to implement this as a required step or not going to work  )

@heshaShawky  can you share what was the exact issue in the meta tag? I am facing similar issue

@heshaShawky can you share what was the exact issue in the meta tag? I am facing similar issue

Check this out in here

@heshaShawky Can you show please your configuration (both meta tags and intent-filter)? I just can't get it to work...

@heshaShawky I have added all the required meta tags.
From the Facebook app, it shows a 404 error on iOS, whereas it does work well on android.
Any suggestions?

@heshaShawky I have added all the required meta tags. From the Facebook app, it shows a 404 error on iOS, whereas it does work well on android.
Any suggestions?

can you please share the manifest file?


sample tests where response is coming from https://www.luis.ai/

What are these test for https://github.com/Microsoft/BotBuilder/tree/master/CSharp/Tests/Microsoft.Bot.Sample.Tests?

To test Bot Framework, or

To test the bot that I have created.

I am asking this because SetupLuis is used in SimpleAlarmBotTests.cs, which is a method of LuisTestBase class. And the parameter to SetupLuis is SetupLuis<SimpleAlarmDialog>(luis, a => a.SetAlarm(null, null), 1.0, entityTitle, entityDate, entityTime);. So this is pretty much obvious that we are not sending the request to LUIS: Language Understanding Intelligent Service (beta) and the request and response is being mocked. Its like testing 2 + 2 = 4. Kindly explain.

Those tests are to validate that the alarm sample works properly, not to check anything about the LUIS service.  It's good practice to mock external dependencies so that the unit tests can run quickly without non-deterministic failures due to network conditions, etc.


Support for X-AppImage-Version

Is your feature request related to a problem? Please describe.
Some tools on Linux such as AppImageLauncher looks for the field X-AppImage-Version in the .desktop file for desktop integration and then adds them as a menu entry with the format appname (version) but if X-AppImage-Version is missing it will lead to appname (1) a hardcoded version of 1. Major Linux apps like KDE applications that offer an appimage do specify this field correctly.
Describe the solution you'd like
There must be a way for app developers to communicate their version information, the appimagetool for example supports the VERSION environment variable and automatically adds this field to the .desktop (View code)

Since Velopack already has your app version, presumably we don't need to add any extra cli variables etc, and the following would be fine?
[Desktop Entry]
Type=Application
X-AppImage-Version={vpk pack version}
// ...

Since Velopack already has your app version, presumably we don't need to add any extra cli parameters etc, and the following would be fine?
[Desktop Entry]
Type=Application
X-AppImage-Version={vpk pack version}
// ...

Yep, that should get the job done, now it's up to how you edit the file, a simple concatenation should be safe I hope, but if you want to rely on an external program I'd like to let you know of desktop-file-edit which would also do validation, although it seems to fail validation on .desktop files with Version=1.5 of the spec, at least the tools I have on Debian, just a note but you may know better ways.


WIP: Dev vendor files

Example how files could be vendored in

@SchrodingersGat the idea would be to use webpack to collect all the modules in the CI and package them together and remove the vendored files from the repo enitrely.

@matmair my understanding is that it would be similar to how the python packages are installed from requirements.txt - is this roughly accurate?

@SchrodingersGat yes. We would just un npm install to gather all the libraries and then package them together into a bundle (single file) for easy redistribution. That gets placed into static and is shipped with the code.


[Tokens] Update light private leboncoin

Update light private leboncoin : Figma
Slack : JSON available  here

Some colours were no longer accessible
Blueberry:

Blueberry 50: F4F9FE
Blueberry 100: E6F2FD
Blueberry 200: C2E0FA
Blueberry 300: 9FCEF7
Blueberry 400: 69B2F3
Blueberry 600: 0F69B9
Blueberry 700: 0C5291
Blueberry 800: 094171
Blueberry 900: 152233

Nightshade:

Nightshade 50: F6F8F9
Nightshade 100: F0F2F5
Nightshade 200: E4E8ED
Nightshade 300 : D0D7DF
Nightshade 400 : ACB8C7
Nightshade 600: 4F6076
Nightshade 700: 3A4757
Nightshade 800: 2B3441
Nightshade 900: 202730

Impact:

Support container:  E6F2FD (Blueberry 100)

On Support Container: 152233 (Blueberry 900)

Support: 094171 (Blueberry 800)

Support Variant: 0C5291 (Blueberry 700)

Basic: 094171 (Blueberry 800)

Basic container : E6F2FD (Blueberry 100)

On Basic Container: 152233 (Blueberry 500)

Base:

On background / Variant/ On surface: 152233
Surface Inverse: 2B3441
Outline: ACB8C7 (Nightshade 400)
Outline high:  202730
Overlay: 202730 (72% opacity)

Feedback:

Neutral Container: F0F2F5 (Nightshade 100)
On neutral container : 3A4757 (Nightshade 700)
Info: C2E0FA (Blueberry 200)
On Info container : 0C5291 (Blueberry 700)

Mistake on
Info: C2E0FA (Blueberry 200)
Should be
Info Container: C2E0FA (Blueberry 200)

Ah yes ! Good point 👍
I correct thanks

old ticket here?
@solygambas @Bibisirius please sync jSon and FIgma
@LouisBorleeAdevinta : Your source of truth is the jSon file


[Automation] Generate Fluent Lite from azure-kusto#package-2022-12

[Automation] Generate Fluent Lite from azure-kusto#package-2022-12

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-resourcemanager-kusto


Move root folder to environment variable docker

Description
Overriding the root folder thanks to the environment variable root in Docker container was not possible because of java system property (-D).
Moving this default value to environment variable solve the issue.
Related Issue
No related issue.
Tasks

[x] I have signed the CLA.
[x] I have written tests and verified that they fail without my change.

@loick111 Just released 2.2.2 containing this change.


Add CookieJar Support for Cookie Passthrough in Redirects

This merge request introduces support for cookie management during redirects by adding a CookieJar to the http.Client when config.CookiePassthrough is enabled. When this option is set to true, the CookieJar is initialized to store and manage cookies across multiple requests, including handling cookie changes on redirects. If CookiePassthrough is disabled, the Jar remains nil, and no cookie management occurs.
Key changes:

Added a conditional check to initialize http.CookieJar based on config.CookiePassthrough.
Ensured the client handles redirects without exceeding the configured maximum number of redirects (config.MaxRedirects).
Improved error handling in case of failure during CookieJar initialization.

This feature allows for seamless handling of session-based or cookie-dependent operations during HTTP requests with redirection.

thank you for your comments.
I’ve applied your feedback. please review it again.

I forgot to mention you.
@DarthSim

@a-roomana Sorry, our build pipeline is a bit broken. I'll merge this as soon as I solve the problem with builds


[SYSTEMML-1940] Modify the default directory of performance test to avoid maven compilation issue

Currently, the performance test generates it data in scripts folder. This causes maven to take too long for compilation as it tries to create jar with all the data.

@nakul02 @krishnakalyan3 can you  please review this PR ?

Refer to this link for build results (access rights to CI server needed):
https://sparktc.ibmcloud.com/jenkins/job/SystemML-PullRequestBuilder/2141/

The standalone scripts (bin/systemml-standalone.py and bin/systemml) already create a temp directory in the root folder of the systemml source.
Do you maybe want to name it something else?

@niketanpansare could you please let me know more about the compilation issue.

Consider the following scenario:

The user runs a performance test and the data is in script/temp directory
The user wants to rerun the test again with new changes: git pull, followed by mvn package
Since maven packages the script folder into jar, maven hangs without any warning or error.

Maven "hangs" because of the absurdly large directory that it tries to package into the jar. It does in fact eventually finish, given enough time.

@niketanpansare @nakul02 thanks for catching this. LGTM from my side.

Thanks @krishnakalyan3  and @nakul02  .... I will merge :+1:

Refer to this link for build results (access rights to CI server needed):
https://sparktc.ibmcloud.com/jenkins/job/SystemML-PullRequestBuilder/2160/