dotdict expression not resolved

JSON file:
// composite data structure
"params" : [{"dict_1_key_1" : "dict_1_key_1 value",
             "dict_1_key_2" : ["dict_1_key_2 value 1", "dict_1_key_2 value 2"]},
            //
            {"dict_2_key_1" : "dict_2_key_1 value",
             "dict_2_key_2" : {"dict_2_A_key_1" : "dict_2_A_key_1 value", "dict_2_A_key_2" : "dict_2_A_key_2 value"}}],
//
// access to single elements of composite data structure
//
// a) standard notation
"dict_1_key_2_value_2_standard" : ${params}[0]['dict_1_key_2'][1]
// b) dotdict notation
"dict_1_key_2_value_2_dotdict" : ${params.0.dict_1_key_2.1}

Outcome:
a) standard notation works
b) dotdict notation causes: The variable '${params}['0']['dict_1_key_2']['1']' is not available
Seems that also indices are assumed to be key names as strings.
But the element after a dot must be interpreted depending on the data type (list or dictionary) of the element before the dot.
I would expect that both notations result in the same value: 'dict_1_key_2 value 2'

Hi Son,
this is actually tricky. In case of an array the 0 in ${params.0.dict_1_key_2.1} need to be considered as integer, if it is a data structure it can be a string. Unfortunately the dot syntax is ambiguous here.
It should work independent of the data type to be user friendly.
Thank you,
Thomas

Retest result:
dotdict notation works now.
Issue can be closed.


Proposed fix for challenge / response

This pull request adds a new strategy augmentation similar to strategy.pass() and strategy.fail() that is intended to support challenge / response type authentication protocols as mentioned in #488 . The new method is strategy.raw(), which is roughly the same as res.send(). It supports options for res.json(), res.type() and res.status() since those seem like those would be the most useful features to people.

Coverage decreased (-2.3%) to 97.085% when pulling 41990d44c838be009fd6426887d864657dd2a4f5 on apowers313:master into 07bff37406241b0cf8db35986788d2dadbf93763 on jaredhanson:master.

To facilitate a discussion of what the best approach to this is, could you link to a strategy that uses this proposed capability?
Sent from my iPhone

On May 28, 2016, at 4:11 PM, Adam Powers<EMAIL_ADDRESS>wrote:
This pull request adds a new strategy augmentation similar to strategy.pass() and strategy.fail() that is intended to support challenge / response type authentication protocols as mentioned in #488 . The new method is strategy.raw(), which is roughly the same as res.send(). It supports options for res.json(), res.type() and res.status() since those seem like those would be the most useful features to people.
You can view, comment on, or merge this pull request online at:
https://github.com/jaredhanson/passport/pull/489
Commit Summary
bumping version
proposed fix for jaredhanson/passport#488
File Changes
M lib/middleware/authenticate.js (27)
M package.json (2)
Patch Links:
https://github.com/jaredhanson/passport/pull/489.patch
https://github.com/jaredhanson/passport/pull/489.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

An example strategy is here:
https://github.com/apowers313/passport-webauthn
Note that Chrome and Firefox are shipping WebAuthn around May -- it would be great to have a solution for this by then.

@jaredhanson now that WebAuthn is taking off, I'm dusting off this old PR.
Any thoughts about adding a raw() response method for challenge / response protocols?

Hi, first of thanks a lot for passport i love using it and i would love to see https://github.com/jaredhanson/passport/issues/488 merged and as @apowers313 pointed out this is the only thing that is left for it to be merged and this is already 4 years old.
Is there some actual concern with this change?
For me it doesn't seem like other parts could be affected by this change (because it adds a new function) and with ~143 bytes (gzipped, ) excluding spaces it would only add 224 bytes (without comments and spaces) or 124 bytes (gzipped and minified) which seems really reasonable for such a great benefit of being able to use U2F/hardware tokens with Passport

I'm reviving this thread with a comment on the original issue: https://github.com/jaredhanson/passport/issues/488#issuecomment-1148788018
Please send me your feedback by continuing the discussion there.  Thanks!


Add macOS builds

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@jaimergp I started with your first commit from #8
Maybe version 2.5.0 made things simpler for building on macOS, but the main change is bumping the macOS SDK to 10.12 since that is the minimum supported version for version 2.4+ (https://pymol.org/2/support.html?#installation)
I also had to increase the tolerance for the test since it was failing on linux.
And I tested the Python 3.9 package from the Azure artifact (uploaded to cctbx-dev channel) by loading up a simple model.
Let me know if anything needs to be changed. I want to folllow up with the osx-arm64 build and a Python 3.10 build (pmw migration has not been merged).
Thanks!

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Another note, the deployment target may need to be updated to 10.12 since the source would not compile with the 10.9 SDK (https://conda-forge.org/docs/maintainer/knowledge_base.html#requiring-newer-macos-sdks). I do not have a machine running any macOS earlier than 10.14, so I was not able to check. I can update the deployment target here or wait to see if there are users with issues.

I do not have a strong opinion on this. As MacOS 10.12 is already 6 years old, I would tend to also increase the target version.

I just committed the change to the macOS deployment target. Since Schrödinger lists the minimum to be 10.12, it should be safe to set the minimum here.

@conda-forge-admin please rerender

Thanks again. I would merge this PR, if you are finished with the changes.

Before I merge, would you like to be added to the maintainers of this feedstock?

@conda-forge-admin please rerender

Sure, I would be happy to help.


Multiscale: An FE domain solve for every integration point

Hello,
We ( @nmnobre ) are working on a multiscale problem, which involves solving the problem at two scales namely macro (coarse) and micro (fine) scale. We want to resolve the fine-scale problem at very macro integration/quadrature point. I am using a modified macro quadrature rule that involves using the stiffness obtained from solving the micro problem located at that quadrature point. I've attached a document Multiscale.pdf that shows the schematic of the method for a 2D Quad first-order Lagrange element.
There are three main tasks for numerical implementation:

Center the micro-domain at every quadrature point in the macro finite element discretization.

Project/transfer the macro test functions and apply them as Dirichlet boundary conditions for the micro problem. There are solution fields from the microdomain for each of the macro basis functions.

Transfer the solution field from the micro solve to be used in the macro quadrature rule.

How can I get started? Thank you for your input.
Kind regards,
Karthik.

Hi @karthichockalingam,
Yes this should be possible with the existing MFEM functionality.
You can start by writing the two solvers and examining the transfer functionality examples in /miniapps/gslib.
Let us know if you have a specific question.

@vladotomov thank you for your response. Here macro_micro_problem.pdf both the macro and micro are diffusion problems.  I am planning to create a MultiscaleIntegrator (which is essentially a copy of the DiffusionIntegrator) and call the micro problem at this line
https://github.com/mfem/mfem/blob/0952809e5e330439bd8c320a0e80ae7cae228460/fem/bilininteg.cpp#L895
so it is solved at every integration point of the macro problem. I will look into /miniapps/gslib for the transfer functionality.

Hello @vladotomov
I am looking into gslib/field-interp.cpp to implement the transfer functionality
I have to transfer a function from one mesh (source) to the second (target)
mesh_1 (or mesh_source or mesh_macro) and mesh_2  (or mesh_target or mesh_micro),  if you see the figure Multiscale.pdf the entire mesh_2 is smaller than one element of mesh_1.
The function I would like to transfer is the basis (or shape) functions of the mesh_1 for each element onto mesh_2.
My primary task would be to construct a source_func (i.e grid_function) for each shape function. So this grid function would be non-zero only one element of mesh_1.
In short how best to loop over the elements in mesh_1 and generate a grid function for each of the basis functions?
I look forward to your response.
Kind regards,
Karthik.

Hi Karthik,
Here's one suggestion:

You can make a list of quadrature points, on mesh_2, where the needed micro-computations will take place.
Once you have the list, with their positions in physical space, you can generate the corresponding quadrature points on mesh_2.
There, you can evaluate whatever macro basis functions are needed, and use the computed values to for the micro-calculations on mesh_2.

This avoids the need to generate complete GridFunctions, but only gets the needed values.

Thank you for getting back to me.
(Q1) In your first bullet point you meant to say mesh_1?
I do like the idea of avoiding to generate GridFunctions for each macro (mesh_1) basis, but I don't need to evaluate the macro basis at the quadrature points of mesh_2 (micro) but rather at the boundaries of mesh_2 to impose it as Dirichlet condition.
(Q2) Can I accomplish the above without creating GridFunctions?
or
(Q3) Maybe in CalcShape(const IntegrationPoint &ip, Vector &shape) const I could pass the physical location of the boundary nodes of mesh_2 (micro) to evaluate the macro basis functions. I did find const Element *GetBdrElement(int i) const  but not something which would retrieve the boundary nodes directly.
(Q4) Just by getting the macro basis values at the boundary of mesh_2 (micro) - can I impose the Dirichlet condition without a  GridFunctions?

(Q1): that's ok, you still need the physical locations of the boundary nodes of mesh_2 (for H1 spaces). For L2, you'd need to construct boundary integrals, which use quadrature points on the boundaries.
(Q2 and Q3): try with FiniteElementSpace::GetBE(i)->GetNodes(). This will give you the locations for H1 spaces.
(Q4): yes, you only need a value for every DOF. You'd need to do something like this for H1 (just assign the interpolated values to the corresponding DOFs).
(Q5): For a physical position on mesh_2, GSLIB will give you an element index and reference quadrature point on mesh_1, which can be used to evaluate.

I am almost there (just need some minor clarifications)
Yes, I am working with H1 Spaces. Here is the algorithm I plan to use.

Step 1: Locate all the physical nodal locations of the boundary nodes of mesh_2 (micro):

   FiniteElementSpace::GetBE(i)->GetNodes()

   /// Get a const reference to the nodes of the element
   const IntegrationRule & GetNodes() const { return Nodes; }

Since  GetNodes() returns type is IntegrationRule: Does it return nodal location or integration point location? Since I am only after boundary nodal location.
On second thoughts, I probably need the locations of all nodes on mesh_2 and get it using vxyz = *mesh_2.GetNodes(); so that I can reconstruct the gridfunction of the macro basis on mesh_2 (micro).
Step 2:  Evaluate the macro basis at the boundary nodes (or maybe at ALL nodes) of mesh_2 (micro).

Should I use  FiniteElement::CalcPhysShape(Trans, shape) or  Quad2DFiniteElement::CalcShape(ip, shape) const to evaluate the basis?

Step 3: Construct a grid function of the macro basis on mesh_2:

How to construct the grid function on mesh_2 of the evaluated macro basis from step 2? Is it using  GridFunction::SetFromTrueDofs?

Step 4: Apply the Dirichlet boundary condition.

u.ProjectBdrCoefficient(dbcCoef, dbc_bdr)
Sorry, my final question is to why I need  For a physical position on mesh_2, GSLIB will give you an element index and reference quadrature point on mesh_1 ?
Is it because in Step 2 I can’t pass physical location but only reference quadrature point to evaluate the macro basis?
Big thank you!

Hi Karthik,
Step 1: GetNodes() would work, but it will return all DOF locations in physical space. If you need only the boundaries, then GetBE(i)->GetNodes() will give you a locations on the reference element, which can be combined with ElementTransformation::Transform to get the corresponding physical locations.
Step 2: These should be the same for H1. Just make sure to use the quadrature points given by gslib.
Step 3: You don't need to construct a full GridFunction, but just to set the values at the boundary DOFs.
Step 4: In example 27, u.ProjectBdrCoefficient(dbcCoef, dbc_bdr) simply sets values at the boundary DOFs. You'd need to replace this with the whole gslib procedure.
My final question ... Is it because ...
Yes. You need this to call CalcShape on mesh_1 in step 2.

Hi @vladotomov
The code below works for the most part. But more cases have to be tested.
Q(1) While looping over the boundary edges of mesh_micro using mesh_micro.GetNBE(),  then retrieve elem->GetNodes(), I end up with the same nodes (that are shared between elements) multiple times. Is there a way I could avoid it?
Q(2) How do I load the calculated sphape(0) (macro shape) values to the micro_mesh boundary dof (dbcCoef)so that I can set u.ProjectBdrCoefficient(dbcCoef, dbc_bdr)?
Q(3) While using MakeCartesian2D is it possible to have the origin of the mesh at a point other than (0.0,0.0)?  I would like to move the micro mesh at the centre of one macro element.
#include "mfem.hpp"
#include <fstream>

using namespace mfem;
using namespace std;

int main (int argc, char *argv[])
{

   Mesh mesh_macro = Mesh::MakeCartesian2D(2, 2, mfem::Element::Type::QUADRILATERAL,
                                     true, 2.0, 2.0);

   Mesh mesh_micro = Mesh::MakeCartesian2D(4, 4, mfem::Element::Type::QUADRILATERAL,
                                     true, 0.8, 0.8);

   int dim = mesh_macro.Dimension();

   mesh_micro.SetCurvature(1, false, dim, 0);
   mesh_macro.SetCurvature(1, false, dim, 0);

   FiniteElementCollection *fec = new H1_FECollection(1, dim);

   FiniteElementSpace fespace_macro(&mesh_macro, fec);
   FiniteElementSpace fespace_micro(&mesh_micro, fec);

   int bnd_pts = 2 * mesh_micro.GetNBE();
   Vector vxy(bnd_pts * dim);

   for (int i = 0; i < mesh_micro.GetNBE(); i++)
   {
      const FiniteElement * elem = fespace_micro.GetBE(i);
      const IntegrationRule & ir = elem->GetNodes();

      FaceElementTransformations * T = mesh_micro.GetBdrFaceTransformations(i);
      DenseMatrix P;
      T->Transform(ir, P);

      for (int j = 0; j < ir.Size(); j++)
      {
        //std::cout <<   P(0, j) << "  " << P(1, j) << std::endl;
        vxy((2*i)+j)           = P(0, j);
        vxy(bnd_pts + (2*i)+j) = P(1, j);
      }
   }

   FindPointsGSLIB finder_pos;
   finder_pos.FindPoints(mesh_macro, vxy);

   auto obj_elem = finder_pos.GetGSLIBElem();
   auto obj_ref_pos = finder_pos.GetReferencePosition();
   //auto obj_ref_pos = finder_pos.GetGSLIBReferencePosition();

   std::cout << "Boundary points:" << bnd_pts << std::endl;

   IntegrationPoint ip;
   BiLinear2DFiniteElement bilinear_elem;
   Vector shape(dim*dim);

   for (int i = 0; i < bnd_pts; i++)
   {
      ip.Set2(obj_ref_pos(i*dim + 0), obj_ref_pos(i*dim + 1));
      bilinear_elem.CalcShape(ip, shape);

      std::cout << obj_elem[i] << " " << obj_ref_pos(i*dim + 0) << "  " << obj_ref_pos(i*dim + 1) << "  " << shape(0) << std::endl;
   }

   return 0;
}

Many thanks!
Karthik.

Hi Karthik,
Q1: I can't think of anything, maybe not.
Q2: This is also related to Q1. You'll have to introduce some new data structures to keep track of what goes where, it's inevitable. I would create a marker array, based on you solution GridFunction DOF numbering, that tells which DOF is a boundary one, and which isn't. Then keep the coordinates of the boundary ones. And then get the shape values from the macro mesh and match them with that marker. This will allow you to set directly the boundary DOFs to the correct values.
Q3: See Mesh::GetNodes(). This gives you a Vector reference that you can manipulate to add displacements to the nodes.

Hi Vladimir,
Thank you for your response.
Sorry, I couldn't quite follow your suggestion based on your solution GridFunction DOF numbering. (Q1) Did you mean to say you have to solve the problem first to get the solution?
Nevertheless,  I was able to accomplish what I wanted to using  fespace_micro.GetBdrElementDofs(i, dofs);  (a functionality I was looking for and was unaware it existed previously) and new data structures.  I was able to generate the boundary DOFs and the corresponding shape values.
 DOF # 0    1
 DOF # 1    0.8
 DOF # 2    0.6
 DOF # 3    0.4
 DOF # 4    0.2
 DOF # 21    0.16
 DOF # 20    0.2
 DOF # 22    0.12
 DOF # 23    0.08
 DOF # 24    0.04
 DOF # 5    0.8
 DOF # 10    0.6
 DOF # 15    0.4
 DOF # 9    0.16
 DOF # 14    0.12
 DOF # 19    0.08

(Q2) Can you please let me know what specific functionality to use and how to apply the Dirichlet boundary condition?
Below is the entire code:
#include "mfem.hpp"
#include <fstream>

using namespace mfem;
using namespace std;

int main (int argc, char *argv[])
{

   Mesh mesh_macro = Mesh::MakeCartesian2D(2, 2, mfem::Element::Type::QUADRILATERAL,
                                     true, 2.0, 2.0);

   Mesh mesh_micro = Mesh::MakeCartesian2D(4, 4, mfem::Element::Type::QUADRILATERAL,
                                     true, 0.8, 0.8);

   int dim = mesh_macro.Dimension();

   mesh_micro.SetCurvature(1, false, dim, 0);
   mesh_macro.SetCurvature(1, false, dim, 0);

   FiniteElementCollection *fec = new H1_FECollection(1, dim);

   FiniteElementSpace fespace_macro(&mesh_macro, fec);
   FiniteElementSpace fespace_micro(&mesh_micro, fec);

   Array<int> dofs; //to store edge dofs

   set<int> dof_set, dof_set_cpy;

   for (int i = 0; i < mesh_micro.GetNBE(); i++)
   {
      const FiniteElement * elem = fespace_micro.GetBE(i);
      const IntegrationRule & ir = elem->GetNodes();

      fespace_micro.GetBdrElementDofs(i, dofs);

       for (int j = 0; j < dofs.Size(); j++)
      {
         dof_set.insert(dofs[j]);
      }

   }

   //std::cout << "Bounday DOF Size " << dof_set.size() << std::endl;

   int bnd_pts =  dof_set.size();
   Vector vxy(bnd_pts * dim);
   int* dof_ids = new int[bnd_pts];
   int count = 0;

   for (int i = 0; i < dof_set.size(); i++)
   {
      const FiniteElement * elem = fespace_micro.GetBE(i);
      const IntegrationRule & ir = elem->GetNodes();

      fespace_micro.GetBdrElementDofs(i, dofs);

      FaceElementTransformations * T = mesh_micro.GetBdrFaceTransformations(i);
      DenseMatrix P;
      T->Transform(ir, P);

      assert(("The size of dof should be same ir", dofs.Size()  == ir.Size()));

      for (int j = 0; j < ir.Size(); j++)
      {
       // std::cout << "DOF# " << dofs[j] << "  "  << P(0, j) << "  " << P(1, j) << std::endl;

       if(dof_set_cpy.find(dofs[j]) == dof_set_cpy.end())
        {
        vxy(count)             = P(0, j);
        vxy(bnd_pts + (count)) = P(1, j);
        dof_set_cpy.insert(dofs[j]);
        dof_ids[count] = dofs[j];
        count = count + 1;
        }
      }
   }

   FindPointsGSLIB finder_pos;
   finder_pos.FindPoints(mesh_macro, vxy);

   auto obj_elem = finder_pos.GetGSLIBElem();
   auto obj_ref_pos = finder_pos.GetReferencePosition();
   //auto obj_ref_pos = finder_pos.GetGSLIBReferencePosition();

   //std::cout << "Boundary points:" << bnd_pts << " Count = " << count << std::endl;

   IntegrationPoint ip;
   BiLinear2DFiniteElement bilinear_elem;
   Vector shape(dim*dim);

   for (int i = 0; i < bnd_pts; i++)
   {
      ip.Set2(obj_ref_pos(i*dim + 0), obj_ref_pos(i*dim + 1));
      bilinear_elem.CalcShape(ip, shape);

      //std::cout << obj_elem[i] << " DOF # " << dof_ids[i]  << "  " << obj_ref_pos(i*dim + 0) << "  " << obj_ref_pos(i*dim + 1) << "  " << shape(0) << std::endl;
      std::cout << " DOF # " << dof_ids[i]  << "    " << shape(0) << std::endl;
   }

   return 0;
}

Hi Karthik,
This code doesn't seem correct: you fill dof_set with DOF indices, but then you do
   for (int i = 0; i < dof_set.size(); i++)
   {
      const FiniteElement * elem = fespace_micro.GetBE(i);

which expects that dof_set is indexed over boundary elements. I don't see why you have two loops, all positions can be recorded in the first loop.
To your question, you need to have the following structure for the boundary dofs:
on micro: dof_index_micro & dof_position_micro (x, y)
find the corresponding value on macro to have: dof_index_micro & dof_position_micro (x, y) & macro_value
and then you set solution_micro(dof_index_micro) = macro_value

Hi Vladimir,
Thank you for pointing out the mistake I was making. I initially had two loops because, I didn't know the number of dofs on the boundary, which now get using  fespace_micro.GetBoundaryTrueDofs(boundary_dofs);. I now have only one loop to record all the positions.
I get the desired output:
 DOF # 0  x =  0  y =   0  macro_value =  1
 DOF # 1  x =  0.2  y =   0  macro_value =  0.8
 DOF # 2  x =  0.4  y =   0  macro_value =  0.6
 DOF # 3  x =  0.6  y =   0  macro_value =  0.4
 DOF # 4  x =  0.8  y =   0  macro_value =  0.2
 DOF # 21  x =  0.2  y =   0.8  macro_value =  0.16
 DOF # 20  x =  0  y =   0.8  macro_value =  0.2
 DOF # 22  x =  0.4  y =   0.8  macro_value =  0.12
 DOF # 23  x =  0.6  y =   0.8  macro_value =  0.08
 DOF # 24  x =  0.8  y =   0.8  macro_value =  0.04
 DOF # 5  x =  0  y =   0.2  macro_value =  0.8
 DOF # 10  x =  0  y =   0.4  macro_value =  0.6
 DOF # 15  x =  0  y =   0.6  macro_value =  0.4
 DOF # 9  x =  0.8  y =   0.2  macro_value =  0.16
 DOF # 14  x =  0.8  y =   0.4  macro_value =  0.12
 DOF # 19  x =  0.8  y =   0.6  macro_value =  0.08

(Q1) In you reponse you said find the corresponding value on macro to have: dof_index_micro & dof_position_micro (x, y) & macro_value but you don't use dof_position_micro (x, y) in solution_micro(dof_index_micro) = macro_value?
(Q2) What is the data type of solution_micro and what mfem functionality do I pass solution_micro?
Below is the code for your reference:
#include "mfem.hpp"
#include <fstream>

using namespace mfem;
using namespace std;

int main (int argc, char *argv[])
{

   Mesh mesh_macro = Mesh::MakeCartesian2D(2, 2, mfem::Element::Type::QUADRILATERAL,
                                     true, 2.0, 2.0);

   Mesh mesh_micro = Mesh::MakeCartesian2D(4, 4, mfem::Element::Type::QUADRILATERAL,
                                     true, 0.8, 0.8);

   int dim = mesh_macro.Dimension();

   mesh_micro.SetCurvature(1, false, dim, 0);
   mesh_macro.SetCurvature(1, false, dim, 0);

   FiniteElementCollection *fec = new H1_FECollection(1, dim);

   FiniteElementSpace fespace_macro(&mesh_macro, fec);
   FiniteElementSpace fespace_micro(&mesh_micro, fec);

   Array<int> boundary_dofs;
   fespace_micro.GetBoundaryTrueDofs(boundary_dofs);

   Array<int> dofs; //to store edge dofs

   set<int> dof_set;

   int bnd_pts =  boundary_dofs.Size();
   Vector vxy(bnd_pts * dim);
   int* dof_ids = new int[bnd_pts];
   int count = 0;

   for (int i = 0; i < mesh_micro.GetNBE(); i++)
   {
      const FiniteElement * elem = fespace_micro.GetBE(i);
      const IntegrationRule & ir = elem->GetNodes();

      fespace_micro.GetBdrElementDofs(i, dofs);

      FaceElementTransformations * T = mesh_micro.GetBdrFaceTransformations(i);
      DenseMatrix P;
      T->Transform(ir, P);

      assert(("The size of dof should be same ir", dofs.Size()  == ir.Size()));

      for (int j = 0; j < ir.Size(); j++)
      {
       // std::cout << "DOF# " << dofs[j] << "  "  << P(0, j) << "  " << P(1, j) << std::endl;

       if(dof_set.find(dofs[j]) == dof_set.end())
        {
        vxy(count)             = P(0, j);
        vxy(bnd_pts + (count)) = P(1, j);
        dof_set.insert(dofs[j]);
        dof_ids[count] = dofs[j];
        count = count + 1;
        }
      }
   }

   FindPointsGSLIB finder_pos;
   finder_pos.FindPoints(mesh_macro, vxy);

   auto obj_elem = finder_pos.GetGSLIBElem();
   auto obj_ref_pos = finder_pos.GetReferencePosition();
   //auto obj_ref_pos = finder_pos.GetGSLIBReferencePosition();

   //std::cout << "Boundary points:" << bnd_pts << " Count = " << count << std::endl;

   IntegrationPoint ip;
   BiLinear2DFiniteElement bilinear_elem;
   Vector shape(dim*dim);

   for (int i = 0; i < bnd_pts; i++)
   {
      ip.Set2(obj_ref_pos(i*dim + 0), obj_ref_pos(i*dim + 1));
      bilinear_elem.CalcShape(ip, shape);

      //std::cout << obj_elem[i] << " DOF # " << dof_ids[i]  << "  " << obj_ref_pos(i*dim + 0) << "  " << obj_ref_pos(i*dim + 1) << "  " << shape(0) << std::endl;
      std::cout << " DOF # " << dof_ids[i]  << "  x =  " <<  vxy(i) << "  y =   " << vxy(bnd_pts + i) << "  macro_value =  " << shape(0) << std::endl;
   }

   return 0;
}

Q1: The dof_position_micro (x, y) is used to obtain the corresponding macro_value. It's not used in the final formula, but it's used to derive the needed value.
Q2: See how example 27 works. It's your solution GridFunction. As I wrote above, Step 4: In example 27, u.ProjectBdrCoefficient(dbcCoef, dbc_bdr) simply sets values at the boundary DOFs. You'd need to replace this with the whole gslib procedure.
Q3: Try with GridFunction *vert_coord = mesh_micro.GetNodes(); and then edit the nodes through the pointer.

Thank you for your suggestions. I was able to solve a diffusion problem using the imposed macro basis function as boundary conditions. I will proceed next by spawning a micro mesh at every macro integration point.

Hi @vladotomov
I noticed you closed the issue unfortunately, I haven't completed all the tasks yet.
As I am spawning a micro-mesh at every macro integration point, my macro_mesh is of type ParMesh but FindPointsGSLIB::FindPoints would only take Mesh as argument type.
Is there a way where I can pass the local portion of the  ParMesh as ``MeshtoFindPointsGSLIB::FindPoints```?
Many thanks,
Karthik.


Faster implementation of RuntimeLong

Review by @gzm0 and @nicolasstucki
For benchmarks, see https://github.com/SebsLittleHelpers/scala-js-long-benchmark
/cc @paullepoulpe and @tOverney

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2323/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3014/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2322/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3013/
Test PASSed.

Jenkins, retest this please

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2324/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3016/
Test FAILed.

That is all. Otherwise LGTM.

Updated.
I had to adapt unsignedDivModHelper not to be @inline, because otherwise its 3 copies (in unsigned_/, unsigned_% and toUnsignedString caused an increase of code size in Reversi). So instead of returning a 4-tuple which was supposed to be stack-allocated, it receives an additional param telling which side the caller wants. For toUnsignedString, we return a js.Tuple4 of the four components.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2325/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3017/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2326/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3018/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2327/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3019/
Test FAILed.

retest this please

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2329/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3021/
Test PASSed.

That's all.

LGTM otherwise. (I just want an explanation on that comment :))

LGTM

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2347/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3045/
Test PASSed.

checksizes need (more) tihgtening

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2348/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3046/
Test PASSed.

@nicolasstucki Anything else to say about this?

Refer to this link for build results (access rights to CI server needed):
https://scala-webapps.epfl.ch/jenkins/job/scalajs-pr/2349/
https://scala-webapps.epfl.ch/jenkins/job/scalajs-matrix-build/3047/
Test PASSed.

Nothing more to say about this, LGTM.


Make sure C++/WinRT unit tests are executed as part of the build

Moved to https://github.com/microsoft/cppwinrt/issues/365


Fix snapshot & module name extraction

Fixes #401 as well as most (but not all) of #477

This is ready to merge & I don't think is controversial


Markup issue: associated type may not live long enough

The following markup works fine:
<Show
    when=show_tripped
    fallback=|| {
        view! {

                <Icon icon={i::FaPowerOffSolid} {..} class=css::onIcon/>

        }
    }
>

        <Icon icon={i::TbCircuitSwitchOpen} />

</Show>

But when moving the css::tripped after the {..} operator on the second <Icon/> tag like:
<Show
    when=show_tripped
    fallback=|| {
        view! {

                <Icon icon={i::FaPowerOffSolid} {..} class=css::onIcon/>

        }
    }
>

        <Icon icon={i::TbCircuitSwitchOpen} {..} class=css::tripped/>

</Show>

Then the markup generates this error:

error[E0310]: the associated type `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>` may not live long enough
   --> cmd/ui/src/components/propulsion/on_buttons.rs:135:5
    |
135 | /     view! {
136 | |             <Show when=move || show_on_button() || show_start_button() || show_throttle_warning()>
137 | |                 <Show when=show_hydraulic_pump_button>
138 | |

...   |
211 | |             </Show>
212 | |         }
    | |         ^
    | |         |
    | |_________the associated type `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>` must be valid for the static lifetime...
    |           ...so that the type `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>` will meet its required lifetime bounds
    |
    = help: consider adding an explicit lifetime bound `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>: 'static`...
    = note: this error originates in the macro `view` (in Nightly builds, run with -Z macro-backtrace for more info)

My assumption would be that at least one of these values (css::tripped, for example) is a borrowed, not an owned, type, and needs to be owned. For example, if css::tripped is &str, then it needs to be either a String or &'static str, etc.
If you provide a reproducible example (i.e., fill in the missing parts in the examples above), I'm happy to look at it in more depth.

css::tripped is a &str generated by stylance.
I will prepare a full example.

Hey Greg, here's a repro: https://github.com/opensourcecheemsburgers/markup_issue

I have a similar issue, with the same error.
// with wu::ShowOption being:
#[component]
pub fn ShowOption<T, VF, IV, TF>(
	/// The data to process.
	data: TF,
	/// A closure that returns what gets rendered if the data is `None`. By default this is the empty view.
	#[prop(optional, into)]
	fallback: ViewFn,
	/// The children will be shown whenever the data is `Some`.
	children: VF,
) -> impl IntoView
where
	VF: Send + Sync + Fn(T) -> IV + 'static,
	T: Send + Sync + Clone + 'static,
	IV: IntoView + 'static,
	TF: Send + Sync + Fn() -> Option<T> + 'static,
{
	let data = Signal::derive(data);
	move || match data.get() {
		Some(data) => Either::Left(children(data)),
		None => Either::Right(fallback.clone().run()),
	}
}

// the code in question
<wu::ShowOption
    data=move || state.get().session().get()
    fallback=move || view! {

            {tr_login}
            {tr_register}

                <button class="btn-circle" on:click=move |_| toggle_app_settings.set(true)>

                </button>

    }
    let:session
>
...
</wu::ShowOption>

error[E0310]: the associated type `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>` may not live long enough
   --> frontend/src/app/routes/mod.rs:232:2
    |
232 | /     view! {
233 | |         <AppSettings toggle=toggle_app_settings />
234 | |
235 | |         <wu::Drawer
...   |
325 | |         </wu::Drawer>
326 | |     }
    | |     ^
    | |     |
    | |_____the associated type `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>` must be valid for the static lifetime...
    |       ...so that the type `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>` will meet its required lifetime bounds
    |
    = help: consider adding an explicit lifetime bound `<impl leptos::IntoView as leptos::prelude::AddAnyAttr>::Output<(Class<&str>,)>: 'static`...
    = note: this error originates in the macro `view` (in Nightly builds, run with -Z macro-backtrace for more info)

At this point, I'm somewhat confused -- I cannot reproduce an error with the reproduction provided by @opensourcecheemsburgers, which compiles and runs (see below)

And likewise I can't reproduce an error with your example @mscofield0 (which I tried against the current main branch). I had to fill out a bit more of the reproduction for this to compile:

The rest of the code I tried
```rust
use leptos::{either::Either, prelude::*};
use leptos_router::components::A;
// with wu::ShowOption being:
#[component]
pub fn ShowOption<T, VF, IV, TF>(
/// The data to process.
data: TF,
/// A closure that returns what gets rendered if the data is None. By default this is the empty view.
#[prop(optional, into)]
fallback: ViewFn,
/// The children will be shown whenever the data is Some.
children: VF,
) -> impl IntoView
where
VF: Send + Sync + Fn(T) -> IV + 'static,
T: Send + Sync + Clone + 'static,
IV: IntoView + 'static,
TF: Send + Sync + Fn() -> Option + 'static,
{
let data = Signal::derive(data);
move || match data.get() {
Some(data) => Either::Left(children(data)),
None => Either::Right(fallback.clone().run()),
}
}
#[component]
pub fn App() -> impl IntoView {
view! {
// the code in question
<ShowOption
data=move || Some(String::from("foo"))
fallback=move || view! {

"Login"
"Register"

}
let:session
>
"bar"

}
}
fn main() {
leptos::mount::mount_to_body(|| view! {  });
}

I had been using an older nightly compiler, and wondered if that was the problem, so I switched to the latest and -- still no errors.

Not sure what to say at this point. Maybe share your `rustc --version`?

I can confirm both code snippets compile fine with the latest rustc:
nightly-x86_64-unknown-linux-gnu (default)
rustc 1.85.0-nightly (9e136a30a 2024-12-19)

Indeed a rustup update fixed the problem.
Thank you Adrian.

I'm using stable rustc @gbj

@mscofield0 Just now, I tried with rustc 1.81.0 (eeb90cda1 2024-09-04), which was the stable I happened to have installed, then ran rustup update stable and tried with rustc 1.83.0 (90b35a623 2024-11-26) — still no error.
Like I mentioned, I had to fill in a few details to make your snippet compile. If you have a complete, self-contained example that errors, feel free to share it and I'll try again.


Better error message for missing SHA256SUMS file

Thank you for reporting an issue.
Currently, a missing SHA256SUMS file causes the following error message:

No versions detected for repository {URL}

This is not helpful and does not tell the user what to do. The error message should be more helpful, point to the GitHub Action run and/or contain the specific error cause.
OpenTofu Version
N/A

OpenTofu Configuration Files
N/A

I'd be happy to work on this as a first contribution.

Thanks @lplazas, sorry it took us a bit to get to your message!


Feature/okta signin

Ok, this one is a doozy.

It adds the Okta 'Login Widget' by way of a sample example I found in their docs.
It refactors some of the organizational stuff @AlexEntrepreneur and I discussed.
It refactors the Items example and wraps it up in a secure route as well as the Home component.

What's left to do?

Get a registration flow up and running/document and test. :)
Testing will come next for what's here but I didn't want to do any more work if it was blocking us so I'll get that up today.

I just pushed a quick fix that was the missing link to enable registration.

I tested the registration flow and right now it works but only if you activate your email first.
We're also directing to /items at this point which is weird so that needs to be fixed.
I'll file those issues today.


Setup pypi

Description

Organise setup.py into core packages, tests, and docs
Fix security issue nbconvert vulnerable to cross-site scripting (XSS) via multiple exploit paths
add pypi config files

Checklist

[x] I have performed a self-review of my code.
[ x] I have made corresponding updates to the documentation.
[x] My changes generate no new warnings

Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Name the new unit-tests that you have added along with this change.

@vishal-ph and @shahidee44 I think this is ready to be merged. We'll need to change some aspects of the pypi pipeline but that's ok I think for now (we'll need to update it to the real pypi index)


CSFC and Leveraging the Platform

If two cloud-based TOEs use the underlying cloud platform for crypto (or other features), this creates a problem if those solutions are intended to create independent components of a CSFC solution. While this problem is not unique to cloud, it is much less likely with on-prem solutions. I'm not sure if it is appropriate to try to address this issue in our guidance, but it may be worth raising awareness of the issue.

This does not seem like something our group would handle.  Revisit in the future to see if there is some appropriate response.   Recommend closing.

Closed, will reopen if applicable following initial publication and input from CSfC.


Finalize v0.11.1

[x] Closes #2220
[x] I am familiar with the contributing guidelines
[x] Adds description and name entries in the appropriate "what's new" file in docs/sphinx/source/whatsnew for all changes. Includes link to the GitHub Issue with :issue:`num` or this Pull Request with :pull:`num`. Includes contributor name and/or GitHub username (link with :ghuser:`user`).
[x] Pull request is nearly complete and ready for detailed review.
[x] Maintainer: Appropriate GitHub Labels (including remote-data) and Milestone are assigned to the Pull Request and linked Issue.

Windows test failures are irrelevant.  Perhaps due to https://github.com/mamba-org/mamba/issues/3467

For new functions, maybe it is helpful to show the full path?  More generally I tend to agree that the path is just clutter.  But I'm sure I haven't followed any consistent rule in my own whatsnew entries thus far.
I'll go through and add the tildes throughout this file.

Thanks for the reviews!  I'll proceed with making the release.
Also, looking through the what's new file, I'm struck by how much of it came from our 2024 GSoC crew -- thanks @IoannisSifnaios, @RDaxini, and @echedey-ls :)


Undo the patch sorting.

My prior change added sorting to the duck.CreatePatch method to try and stabilize the result of jsonpatch.CreatePatch, which is otherwise non-deterministic (probably walking a map?).
My bad assumption was that the patch operations this generated wouldn't conflict, e.g. it should use replace vs. remove and add.
Clearly this was bad because we start getting really strange errors trying to import this into knative/serving, e.g.
https://gubernator.knative.dev/build/knative-prow/pr-logs/pull/knative_serving/2646/pull-knative-serving-integration-tests/1070435951391543298/

/lgtm
/approve

/lgtm
/approve


Re-visit integration tests with .NET Aspire

Status quo:

https://github.com/thangchung/practical-dotnet-aspire/tree/main/counter-api-tests

But .NET Aspire still planning for:

https://github.com/dotnet/aspire/discussions/878#discussioncomment-9631749

The new updates from .NET Aspire 8.2: https://devblogs.microsoft.com/dotnet/getting-started-with-testing-and-dotnet-aspire/


[question] event of chain rollback

Hi guys, how do you handle following scenario?
Order of events:

Booking Flight -> succeed
Booking Car -> succeed
Booking Hotel -> failure (room not available)

How to rollback those in as much as possible generic way? The key lies in what you call correlation or global transaction ID, which should be same in all events. So I should be able to send failure event to both booking car and flight with this global transaction id and they will independently revert the booked flight and car.
That way it can work, but it has one negative drawback

This way it will require each service to listen to failed events of all next services in chain, so each service will have implement event handlers for failed messages from all "next" services in process chain, on top the TCP overhead can be also deadly.
So probably better solution will be to do step-by-step rollback and not massive one:

I have studied sagas, but I didn't find clear answer on this common handling scenario...
The only problem with second design I see that it doesn't make sense from business perspective as when hotel failed, both cars and flights should be canceled in parallel.

As I think this is quite confusing even on publicly available articles, I will put here few things. Thing is that Saga is sometimes shown or interpreted as orchestrator (Saga, Process managers) which is confusing and is wrong.
Saga is more a error management pattern in event driven architectures, so every Event in the system has its corresponding opposite UndoEvent. And this is application of saga pattern.

yes, I think for the scenario you mention, we should use saga to do step-by-step rollback.
For the case if the undoEvent (or compensating transactions) fail, I think we will have to handle it in the service ifself. For example save the correlationId to local database, or send email to admin?
Totally agree with you, it will be very complex to handle  compensating action fail again.

@chenyan71 nice, thanks for confirmation about my thoughts. So actually this is also answer that the functional analyst while designing the flow, he/she should always design the opposite process, while developer uses light platform to develop on top of it.
Thanks for feedback.

Like you have mentioned, there are two ways to implement Saga - Orchestration and Choreography. There are pros and cons on both. For a small and simple system, choreography might be easier to start however, every aggregate needs to know how about the saga and actively manage the business logic. Also, in a complex application, you might have circular dependency issue. For big system, it is better to use orchestration so we can implement aggregates as simple as possible. Also, the centralized console/admin can give operation team an overview what is going on and resolve the issue like failed rollbacks you raised above. Our saga implementation is embedded with a library so we can support both approaches although I myself prefer orchestration for enterprise scale.


Client.Ping method raises network disconnection: "use of closed network connection"

STEPS TO REPRODUCE
$ cd $GOPATH/src/github.com/surgemq/surgemq/examples/surgemq
$ go run *.go

then, go run this code with -logtostderr -vv 3:
package main

import (
    "flag"
    "log"

    "github.com/surgemq/message"
    "github.com/surgemq/surgemq/service"
)

func main() {
    flag.Parse()
    c := &service.Client{}
    cmsg := message.NewConnectMessage()
    cmsg.SetVersion(4)
    cmsg.SetCleanSession(true)
    cmsg.SetKeepAlive(10)
    if err := c.Connect("tcp://localhost:1883", cmsg); err != nil {
        log.Fatalln("Connect:", err)
    }

    fn := func(msg, ack message.Message, err error) error {
        log.Println("Pong:", err)
        return err
    }
    done := make(chan struct{})
    if err := c.Ping(service.OnCompleteFunc(fn)); err != nil {
        log.Fatalln("Ping:", err)
        close(done)
    }
    <-done
}

RESULTS
I1204 23:16:44.348778   13936 sendrecv.go:103/sender] (1/) Starting sender
I1204 23:16:44.348781   13936 process.go:46/processor] (1/) Starting processor
I1204 23:16:44.348883   13936 sendrecv.go:58/receiver] (1/) Starting receiver
I1204 23:16:44.349183   13936 service.go:210/stop] (1/) closing this.conn
I1204 23:16:44.349223   13936 sendrecv.go:100/func1] (1/) Stopping sender
E1204 23:16:44.349252   13936 sendrecv.go:76/receiver] (1/) error reading from connection: read tcp [::1]:61472->[::1]:1883: use of closed network connection
I1204 23:16:44.349364   13936 sendrecv.go:55/func1] (1/) Stopping receiver
I1204 23:16:44.349375   13936 service.go:220/stop] (1/) Received 16 bytes in 2 messages.
I1204 23:16:44.349383   13936 service.go:221/stop] (1/) Sent 6 bytes in 2 messages.

REASONS
In case of Client.Ping(), ackmsg.Msgbuf is empty in service.processAcked().
As a result, msg.Decode(ackmsg.Msgbuf) panics with "slice bounds out of range".

Yep I saw that as well a while ago in your code. The problem is, that a closing socket does NOT return EOF but *net.OpError.
More information can be found here:
http://comments.gmane.org/gmane.comp.lang.go.general/76607
I decided to go for this dirty hack that was proposed in the googlegroups:
func IsEOF(err error) bool {
	if err == nil {
		return false
	} else if err == io.EOF {
		return true
	} else if oerr, ok := err.(*net.OpError); ok {
		if oerr.Err.Error() == "use of closed network connection" {
			return true
		}
	} else {
        if err.Error() == "use of closed network connection" {
            return true
        }
    }
	return false
}

+1
Same issue here, and the IsEOF mentioned above fixes it for me as well. I changed 2 cases in sendRecv.go and 2 more in process.go - from what I can tell, the current surgemq HEAD won't work without this workaround (this is on Mac OSX 10.11.2 with Go 1.5.3, FWIW).

Thanks @jcw @ankoh ... Would either of you be willing to submit a PR?

here is a discussion for that error: errClosing.
and maybe
oerr, ok := err.(*net.OpError)
is not necessary, just need
if err.Error() == "use of closed network connection" {             return true         }
as @ankoh said.

sorry.
if err.Error() == "use of closed network connection" { return true }
is not necessary, need
oerr, ok := err.(*net.OpError)

Unfortunately this repo is labeled as Unmaintained. I will reopen the issue if the status comes back to Maintained.


Add prettify shortcut

It would be nice if I would prettify using a shortcut combo instead of clicking the button.

Hey @nojaf, what shortcut would be recommended?

CTRL + ALT + L would be nice as it is the same in WebStorm.
Guess people might want to configure that, as this is highly suggestive.

Hmmm, I think I would go with Ctrl+Shift+P, so it matches up with the other shortcuts already available.


Add quotation marks

Origin: #51
Now we support custom quotation marks.
I kept in mind that:

Previous versions should work exactly as before this PR by the default value
All test are greenlighted
Update the docs

What I haven't done:

Update the cli. I wasn't really sure how to test it so I prefer @knownasilya to do it.

Hope it's ok! It works really nice for me ;)
P.S: Sorry for the delay. Really busy here!

@edravis will you have time to make those changes or do you want me to do them?

@knownasilya hot commits! :)

We should probably only do the conversion if the quotes property is not ", saving computation in most cases.

Done, also I've moved the code into a function, it looked enough big for me.

Very nice!

Released as 2.5.0


SDWebImageRefreshCached doesn't work on iOS 9

I'm not sure if this broke in iOS 9 or before ... but SDWebImageRefreshCached stopped working.
In SDWebImageDownloaderOperation class, when checking if we have cached response for request,
I get YES, and then completionBlock is called with empty image error and etc.
I checked and indeed the image was in the cache, and was returned by NSURLCache.
After setting sharedCache like this (to disable returning of cached response):
@interface NOURLCache : NSURLCache

@end

@implementation NOURLCache

- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request {
    return nil;
}

@end

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [NSURLCache setSharedURLCache:[NOURLCache new]];
...
}

New image was fetched from network.

can you replicate in demo project?

@cherpake any updates on this?

sorry man - we having holidays in my country, which doesn't leave with much of free time, once we return to work, will create a demo project, which isn't trivial- cause after initial cache, it will have to change the image on the server side...

@cherpake thanks :+1:

same problem +1
it doesn't work on iOS 9

and I found the NSURLCache's subclass as a sharedCache, the method
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
will be called only on iOS 7.0.4, I found it can not be called on iOS 8.4.1 and iOS 9.3.1。

Please retry with 3.8.2 and the 4.0 release that is coming (now available on the 4.x branch).


Raw Expression Information Unavailable for GDSC1 & 2

Thank you for the great benchmarking platform!
I am currently trying to use the GDSC 1 and 2 datasets for drug sensitivity prediction, however I am having trouble locating the raw, unnormalized expression of the cell lines. I see that the normalized expression is available through the TDC API - is the raw expression available anywhere? Thank you in advance!

maybe here? https://www.cancerrxgene.org/downloads/bulk_download


Consider leaving jenkins unaltered where possible?

Hey guys,
Just wondering whether you'd consider moving some of the custom stuff into your own pennyworth cookbook where possible?
I know it doesn't apply to everything, but some of the attribute changes can be moved into the pennyworth attributes file instead of hacking on the original jenkins cookbook:
normal['jenkins']['mirror'] = 'http://mirrors.jenkins-ci.org'
normal['jenkins']['package_url'] = 'http://pkg.jenkins-ci.org'
normal['jenkins']['iptables_allow'] = 'disable'
normal['jenkins']['http_proxy']['basic_auth_username'] = 'jenkins'
normal['jenkins']['http_proxy']['basic_auth_password'] = 'jenkins'

Some of the modifications should definitely go upstream - I was fixing the mirror/package urls, for example. I'll begin taking care of those.
The http proxy stuff builds on the already existing reverse proxy stuff for Jenkins, it should probably go upstream too.. ?


[question] Where to find the example for matrix multiplication recursive snark

I find the "and" example in the github repo. However, I was looking for a matrix multiplication example (c = a x b, where a, b, and c are configurable size matrices). Do you have an example for matrix multiplication similar to that of the "and" example?  And if so, could you please share it with me.

We don't have such an example.
Depending on your familiarity with bellpepper, it should be relatively easy to write it up. In particular, take entries of a, b, and c as witness elements and then implement the naive matrix multiplication algorithm.

Closing this! Please reopen if you have further questions.


Get a GF license

Hello @sebkay! 👋🏻
Would you contact GF developers to get a license for these stubs?
https://www.gravityforms.com/open-support-ticket/account/

...maybe it is beneficial to tell them that stubs are empty function declarations without actual source code

I'll get in touch and let you know what they say.

Have contacted them. Will report back soon as I hear something.

When you have the license key we should figure out how the download URL.

If this is blocker for CI, I am happy to store my developers license key as a repo secret.
If it's a blocker for development, I'm happy to set up a private repo that auto-pushes new releases, and give ya'll team access (where you can add others working on the project).

When you have the license key we should figure out the download URL/method.

@szepeviktor I'm not entirely sure what that file you referenced does, but If you mean the ideal way to pull new GF versions from the source, the most stable way I've found is using GF's cli (e.g). There is AFAIK no way to request a non-current version, which shouldnt be a problem as GF doesnt release patches on old major/minor branches, but if that's essential we could use my suggestion of a private repo instead.

@justlevine There is no Composer package that runs WordPress + WP-CLI :(
ffraenz/private-composer-installer could execute a simple HTTP GET request.
Simply install/upgrade that plugin and look for the URL:
https://github.com/szepeviktor/debian-server-tools/blob/8229be3024c4bfe4ec2a3be8068b8170d2394ad0/webserver/wordpress/_core-http.php#L27-L39

Here it is
https://plugins.trac.wordpress.org/browser/gravityformscli/trunk/includes/class-gf-cli-root.php#L350

There is no Composer package that runs WordPress + WP-CLI :(
Is that a prerequisite vs a bash script?

I personally find ffraenz/private-composer-installer a PITA to use for versioning (since you need to manually know there was a new release, and then update the composer), but either way 🤷♂
Lemme know re the repo licence secret and/or a private repo

Lemme know re the repo licence secret and/or a private repo

So we won't have a granted license for this project?

Correct, it's my personal license. I'm offering it in secret form (or as an autoversioned plugin repo) as either a temporary solution until @SebKay gets a response from GF support, or a long term one if they're unwilling to donate one.
While the Elite license allows me to use it on as many projects as I want, to my understanding it still forbids me from sharing the license itself with others.

All right. I see.
I'm sorry but I have policies which are more important to me than apparent project "success".
I go and open a ticket at GF Support... 🏃🏻♂

Done.

Good afternoon!
I run a project that distributes stubs for WordPress with few million downloads: https://github.com/php-stubs
Would you be interested in distributing stubs for Gravity Forms plugin?
https://github.com/php-stubs/gravity-forms-stubs/issues/1
If yes, please grant me a license that would be stored as a GitHub Actions secret.
What do you think?
All the best to you!

Our records indicate we provided a 1-year license for use with https://github.com/php-stubs in September. I'm not very familiar with how your project is organized, but you might check in with the other contributors to gain access to the license. I hope this info is helpful!

@SebKay Could you please email me the key<EMAIL_ADDRESS>

@justlevine We have the license key.

@justlevine What is your ETA for starting?

@szepeviktor in middle of some client deadlines but hopefully after the 15th 🤞

All right. I can't stop Viktor from doing it!

@SebKay @justlevine Would you like to contribute?

Any update?

No.

@crbon Would you like to contribute?

@crbon This is the first release.
v2.6.7 🎉
I cannot find a GF API that gives me older releases.
Could you help?


Updated Glutin to 0.30

Looking forward to this one being merged, because then it'll be easy to implement taskbar/window app icons.

Merged @joffreybesos! Though we're still having some issues with wayland/nvidia with this one. I hope to fix them soon.


Notifications when a peripheral gets disconnected

I have successfully paired and connected to a given peripheral. After the device has been streaming data for a while, the user disconnected (or turned off) the device. How can my app get notified of events like these?.
Presumably, we need to forward the
func centralManager(
        _ central: CBCentralManager,
           didDisconnectPeripheral peripheral: CBPeripheral,
           error: Error?
          )

method from the Central Manager's delegate to a new "app delegate" we need to implement?

Good point! The central manager needs to be able to communicate events that happen out of its control. We can use a Publisher to notify clients.


The keyboard keeps opening when navigating from search results to individual products

What

[ ] The keyboard keeps opening when navigating from search results to individual products

Video
https://user-images.githubusercontent.com/1689815/147674950-0e602631-42e6-48d6-8ea1-5efe6822a6fd.mp4

Taking a look at this

In one of my other flutter mini-projects, I solved a similar problem by
calling
SystemChannels.textInput.invokeMethod('TextInput.hide'); whenever the
keyboard should be hidden
On Fri, 31 Dec 2021 at 10:45, Marvin M @.***> wrote:

Taking a look at this
—
Reply to this email directly, view it on GitHub
https://github.com/openfoodfacts/smooth-app/issues/800#issuecomment-1003325815,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABZRHYRZMAOILNG2POA27EDUTV3S7ANCNFSM5K6DA5EQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

--
Cheers,
Jasmeet Singh

Fixed by #845


EI Game Lite development - page/style

page development
style building

申请开发 deadline: 2021-04-17 size: 2 @fushang318


DS-3511 Fix HTTP 500 errors on REST API bitstream updates

https://jira.duraspace.org/browse/DS-3511 and
https://groups.google.com/forum/#!topic/dspace-tech/ZEvYkjqbx8s
When trying to update the content of a bitstream or delete  a bitstream policy HTTP 500 error occurs (Dspace 6.0-6.2). Fixed by adding context.complete() to the end of the respective methods (adapted the original patch submitted to DS-3511).

Please rebase this PR against the latest master branch.  The master branch now requires adherence to our new Java Code Style documented at: https://wiki.duraspace.org/display/DSPACE/Code+Style+Guide
If you have any questions, feel free to ask in this PR or on our Slack: https://wiki.duraspace.org/display/DSPACE/Slack

@minurmin , thank you for submitting this PR.  I believe your intention was to apply this fix to DSpace 6.x.  If that is correct, could you update the base branch to dspace-6_x?  That will remove the error that is currently in place and will allow a review to take place.

I've cherry-picked this commit onto dspace-6_x and created another pull request: https://github.com/DSpace/DSpace/pull/1996

Yes, the PR is supposed to be used for Dspace 6. Sorry to have missed the comments, originally I wasn't sure what branch to merge into since the code apparently works on master branch as well. For what it's worth, this PR should now be mergeable with current 6.x branch (fixed by force push).

The code changes look fine to me, however, Travis CI seems to having issues with the PR.  But, the alternative/cherry-picked PR (#1996). Seems to be perfectly fine.  Should we be concentrating on reviewing/merging #1996?

I'll give my general thumbs up here, 👍 , code looks fine..   I suspect the Travis issues in this PR are actually a Travis hiccup, and no fault of the PR itself.  As noted, the same code in #1996 seems to be 100% fine in Travis.  I'll leave it up to @kshepherd which one of these to merge...but one should get merged and the other closed.

I suggest to close this one and use #1996 for 6.3. I'll submit another PR rebased to master.


w: disable functions unused on Windows

This PR should fix the clippy errors on Windows.

green, well done :)


Make deployment ssh key available for 'www' user

The issue occurs when I use private repository and I provided a private ssh key, whereas pubkey is added to repository deployment keys.
Now, when I log in as a 'www' user, I cannot do e.g. git pull because that ssh key is (or might) not be available to 'www' user. It is available during docker build process, but not when I log in directly as 'www' user.
It gets even more complicated if I use /data volume inside another container (e.g. side ssh container) and try to do git pull there. Then the key is completely missing and I cannot do much w/o tedious manual process to make it work (i.e. configuring manually the keys).
Solution:

make the priv ssh key available to 'www' user in its home directory /data/www. Then no matter what, inside the same container or side container with mounted volume user www will have access to it.
configure it, so it's added to keys used by git (.bash_profile?)

Hey, thanks a lot for this awesome docker image! :)
Concerning your first suggestion for a solution, would this be an adequate way to gain access to the ssh key as 'www' user?
COPY gh-repo-key /data/www/.ssh/id_rsa
COPY gh-repo-key.pub /data/www/.ssh/id_rsa.pub
RUN \
	chmod 600 /data/www/.ssh/id_rsa && \
	chmod 600 /data/www/.ssh/id_rsa.pub

Resolved in https://github.com/million12/docker-typo3-flow-neos-abstract/commit/016369a0752fb6c4fe0c56f1d10a15af8a40e273


TargetHashCache has already been frozen

version: target-determinator v0.26.0

When running target-determinator on a repo, I am seeing the error TargetHashCache has already been frozen
~/Downloads/target-determinator.darwin.arm64 -verbose main
2024/04/05 12:16:02 Processing revision 'before' (main, sha: a679f0f50ccc115fc3f50474af98cef947d3958e)
2024/04/05 12:16:02 Finding compatible targets under //...
2024/04/05 12:16:02 Running cquery on deps(//...)
2024/04/05 12:16:03 Running cquery on //...
2024/04/05 12:16:03 Finding compatible targets under //...
2024/04/05 12:16:03 Matching labels to configurations
2024/04/05 12:16:03 Hashing targets
2024/04/05 12:16:04 Processing revision 'after' (current working directory state)
2024/04/05 12:16:04 Finding compatible targets under //...
2024/04/05 12:16:04 Running cquery on deps(//...)
2024/04/05 12:16:05 Running cquery on //...
2024/04/05 12:16:05 Finding compatible targets under //...
2024/04/05 12:16:05 Matching labels to configurations
2024/04/05 12:16:05 Hashing targets
Target Determinator invocation Error
2024/04/05 12:16:06 TargetHashCache has already been frozen

There isn't much more information I can provide based on this limited output but happy to give anything requested if needed

I noticed that this happens whenever I try to use the --verbose command-line flag. Deleting my ~/.cache/target-determinator directory and trying again didn't resolve the problem.

Interesting, I don't repro in some example repos - if it's possible for someone to put up an example repro that'd be really useful to debug what's going on here...

It is possible that I have accidentally reproduced the same issue. I prepared a sample repository with the reproduction here: https://github.com/Asdprom/bazel_sample.
target-determinator.windows.amd64.exe -verbose 85e36dae062b7676931786087d8a874daa92611c fails, while
target-determinator.windows.amd64.exe 85e36dae062b7676931786087d8a874daa92611c does not.
Additionally, I encountered some strange behavior. In the same repository, if I change the A.cc source file, the target determinator does not return any targets as changed. This is probably unrelated and might be due to some misconfiguration on my side.


Enable prometheus metrics so that it can be easily scraped

Is this a bug or a feature request?
feature request
What did you expect?
A prometheus metrics endpoint to consume.
Something like localhost:8080/metrics  that will contain some valuable metrics with proper tags so that we can visualize that in a time series. I do remember we have an influx integration which is built-in and that's great. But we use prometheus a lot, and we would like to have that in lora app server as well.
What happened?
Metrics not available through an HTTP endpoint
What version are your using?
2.4.0
How can your issue be reproduced?
Could you share your log output?

Prometheus metrics have been added in v.3.2.0.


Please speed up software startup

Startup speed is very important for an editor to let users have good experience.  Maybe some features can run backgroud as service.
Add close but minimize to the system tray function.

Please file separate issues, we cannot track combo issues.


Octoprint: 1.8.7 -> 1.9.0

Description of changes
Major update of octoprint.  See https://github.com/OctoPrint/OctoPrint/releases/tag/1.9.0
For this update I had to include class-doc (https://github.com/danields761/class-doc)
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] 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.05 Release Notes (or backporting 22.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

[x] Fits CONTRIBUTING.md.
[x] Tested in a VM

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/2291


Set up Travis CI

Description
This PR add the functionality described in issue #21.
How has this been tested?
By submitting forked branch to Trevis.
Screenshots

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Thanks my dude!


Fix: Enable cookies for cross-domain requests

This will enable user to make authenticated requests to another domain (if Cross-Origin Resource Sharing policy of this domain allows user to do so). Authentication should be done before in a separate tab.

Codecov Report

Merging #7 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master      #7   +/-   ##
======================================
  Coverage    82.6%   82.6%
======================================
  Files           2       2
  Lines          23      23
======================================
  Hits           19      19
  Misses          2       2
  Partials        2       2

Impacted Files
Coverage Δ

template.go
84.61% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Any update here? This seems to work fine for me?


[RSDK-7151] Update analog reader responses to include accuracy data

Surprisingly, we don't need a protobuf update (from https://github.com/viamrobotics/api/pull/492) because we're already using the new protobufs and have just been ignoring the extra data they hold!
Everything compiles and the tests all pass, though I haven't tried it out more than that.

The CI build is failing with Failure: decode buf.lock: no digest specified for module buf.build/googleapis/googleapis, and retrying the tests leads to the same error. Any idea what changed? I didn't think I had touched that. and it builds fine on my local machine (mkdir build; cd build; cmake .. -G Ninja; ninja -j 5 all), so I can't reproduce the problem.

The CI build is failing with Failure: decode buf.lock: no digest specified for module buf.build/googleapis/googleapis, and retrying the tests leads to the same error. Any idea what changed? I didn't think I had touched that. and it builds fine on my local machine (mkdir build; cd build; cmake .. -G Ninja; ninja -j 5 all), so I can't reproduce the problem.

@penguinland not sure what's going on with this but it's not a problem on your end; it's popping up in other PRs as well. I'll investigate.

Yup, I rebased off of main and everything works now! Thanks for looking into it.


Show popup in the current focused monitor

I have a two monitor setup, and I would like to see the Maccy popup in my current focused monitor,
this behavior occurs by default in spotlight
I would to implement this feature myself
If I didn't make myself clear I can record a video of it

Could be related to #334. I'll merge PR adding this.

I'm having issues running the code on Xcode
that's my log file
yld[18333]: Library not loaded: @rpath/Sparkle.framework/Versions/A/Sparkle   Referenced from: /Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/Maccy.app/Contents/MacOS/Maccy   Reason: tried: '/Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/Sparkle.framework/Versions/A/Sparkle' (no such file), '/Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/PackageFrameworks/Sparkle.framework/Versions/A/Sparkle' (no such file), '/usr/lib/swift/Sparkle.framework/Versions/A/Sparkle' (no such file), '/Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/Maccy.app/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle' (code signature in <AF06CE6A-597E-3E22-ABA6-70678A1591FB> '/Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/Maccy.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle' not valid for use in process: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)), '/usr/lib/swift/Sparkle.framework/Versions/A/Sparkle' (no such file), '/Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/Maccy.app/Contents/MacOS/../Frameworks/Sparkle.framework/Versions/A/Sparkle' (code signature in <AF06CE6A-597E-3E22-ABA6-70678A1591FB> '/Users/fsk/Library/Developer/Xcode/DerivedData/Maccy-anbhurwhijtczogcyctkzvsvisce/Build/Products/Debug/Maccy.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle' not valid for use in process: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)), '/Library/Frameworks/Sparkle.framework/Versions/A/Sparkle' (no such file), '/System/Library/Frameworks/Sparkle.framework/Versions/A/Sparkle' (no such file) (lldb)

"Screen Center" preference should do what you want. It was also improved in c4470dd62b76bce9b168fdb8cabbba443a529c50 and will be available in the next release. Please, re-open the issue if it's still present.


Cannot send CTRL+C signal to remote machine while terminal is rendering text

Environment
Windows build number:
Microsoft Windows [Version 10.0.18363.836]

Windows Terminal version (if applicable):
Version: 1.0.1401.0

Any other software?

- wsl-ubuntu-18.04
- ssh using wsl to remote computer
- tmux inside the remote computer

Steps to reproduce
Connected to a remote machine with ssh from wsl, running tmux on this remote.
Issue happens when application print lots of contents to the terminal, which prevents the user to send signals (CTRL-C to stop the application from printing to the terminal). You only regain control after the terminal renders EVERYTHING that is being printed.
Other signals such as CTRL+Z or tmux bindings to change the pane scope (to work on other pane or kill the running window also does not get accepted while the printing is happening.
Expected behavior
I expected the CTRL+C to stop the application running the printing. And regain control of the terminal.
Actual behavior
Long running applications that print lots of contents to the terminal prevent the user to send signals (CTRL-C to stop the application from printing to the terminal). You only regain control after the terminal renders everything that is being printed.

i have same problem...

I have the same issue as well, but without WSL, just using the Windows built-in OpenSSH.  Once it's in this state, if I press CTRL-C a whole bunch of times and then wait a few minutes, it will eventually "catch up" and kill the running process. But at first it doesn't appear anything has happened.

In other terminals (e.g. WSLTTY) I had more success with Ctrl+Z still being processed.
Another issue: when pasting by Ctrl+Shift+V some giant text it takes (understandably) an immense amount of time, but it's impossible to cancel the paste. But not sure if anything can be done about this.

Although the issue #1064 is closed, this problem is not fixed. As mentioned in this comment, it would be expected that priority would be given to user signals instead of finishing the printing to the screen.

Although, while it's writing STDOUT really fast, there is a long delay to interrupt the foreground process, almost as if the terminal is not able to output the text rapidly and send the interruption sequence to the underlying shell. I would imagine that it makes more sense to prioritize the user's input if there's a bottleneck somewhere.

Similar issue here, Powershell tab running docker.exe attached to a container, after some time I suddenly can't CTRL-C to kill the session. I have to kill the tab instead and start again, quite annoying.

Canonical example is running dmesg over ssh, impossible to stop it with Ctrl+C or Ctrl+Z

So, the UI queue unblocking work we did in #3622 #4608 #6492 helped this only a tiny bit. We also still have a long way to go. A really long way.
I just ran yes (which notoriously prints out trillions of lines and causes a bunch of buffer rollover and scrolling) via WSL locally and over an SSH connection. Here's what I got for how long it took ^C to return me to a prompt.
Methodology
I'm using an application on my phone called "Is it Snappy?", which takes high-speed video and lets you scrub frame by frame to mark "input" and "output" frames. It then tells you the time delta between them.
Parameters:

Command: timeout 10 yes
Input mark: When I bottom out the C key while holding down Ctrl
Output mark: First frame where ^C appears in my buffer.

Terminal v1 local (baseline)
local
wsl ssh
win32-openssh

1065.0
982ms
10517.1ms (timeout reached)
9701ms (timeout reached)

1231ms
998ms
10101.2ms (timeout reached)
9618ms (timeout reached)

for comparison, here's gnome-terminal in the same WSL instance. The Windows Console subsystem is out of the way.
I only did one trial for these. I didn't run win32-openssh because it would use the console subsystem.
It's eating our lunch.

local
wsl ssh

116.7ms
116.7ms

I'm going to dig around for a duplicate of this, as I know we probably have one. It's remarkable how much worse SSH is -- I can't explain that difference very well.
For fun, I measured win32-openssh and wsl ssh in conhost, without Terminal.

wsl ssh
win32-openssh

4043ms
3178.3ms

The root cause here might be #2141

To me it was just disbling Ctrl+C key binding for copy text.


error with factory in Laravel 8.x

I am currently updating the version of Laravel and the Laravel-module package. I noticed when I launch the command php artisan module:make-factory FactoryName Blog it doesn't produce a class like the official Laravel documentation. Moreover, the documentation of the command php artisan module:make-factory FactoryName Blog doesn't follow the Laravel convention, it should rather be ...NameFactory... .
These remarks I made, is it normal for the moment?

Laravel have provided a package to help with the upgrade.
If do
composer require laravel/legacy-factories
That should fix your issue.

Hi,
This has been tagged as 8.1


[BUG] Email-spooler dependency

Hi,
Members is dependent on bolt/email-spooler since a few months ("bolt/email-spooler": "^3.0"), this raises 2 issues preventing any email to be sent.

The readme has not been updated so there's no way for a newcomer to know they're required to run a command to get their emails sent.
The dependency is based on a non-functioning (though stable) version of email-spooler. There has been a fix on the command but no tag yet.

Either removing that dependency or releasing a new stable version of email-spooler would fix it all.
I would personally be in favour of removing that dependency, I reckon spooling every email should be the dev's choice. Also, IMO running a command and/or setting up a cronjob adds a bit of complexity, making Members less quick-to-install / dev-friendly.
I can open another issue on email-spooler's repository if you wish (but I know you guys are related 😉).
Cheers
Details

Relevant Bolt Members Version: 3.0.x
Relevant Bolt Version: 3.x
PHP version: 7.0

I would personally be in favour of removing that dependency

Not at all. There is a very good reason they are spooled… PRs welcome to improve the pooler.

Right. I'd be interested to know the reason why they are spooled.
I can't PR because the only need is to release a stable version of email-spooler. I will open another issue on the concerned repository.

They are spooled because otherwise they can and do get lost.
An unbelievable amount of people do not set up their SMTP settings, even fewer set them p correctly … then there are the people that use 3rd party services that have the reliability of a Hyundai … Sorry, but losing registration, password resets, and other critical data without fallback is just not sensible and if you think that is the case, give up web development … you're not up to the task.

I'll take that explanation. I don't get the raging reply though...
Still, I don't think you understood my problem as you closed and deleted my issue on email-spooler right away. Would you please try and send a spooled email with the v3.0.3 of email-spooler and see by yourself...


docker: optimizations

The scope of this work is to make the docker environment work out of the box on linux hosts (which it didn't so far for me), reduce errors and warnings to a minimum, and reduce config adjustments for the docker environment if possible.
On Linux hosts, the pulseaudio socket is 'volumed' to the docker containers to be used by dockers pulseaudio. Additionally the UID has to match, which made some adjustments for windows/mac necessary too.
Changes were successfully tested on Linux (Arch) and Windows 10. Mac is untested; the Mac config seems to be closer to the Windows config than to the Linux config, so I adjusted it accordingly.

Thanks for the effort. I will try to test your changes on Mac in the next couple of days and merge it accordingly!

Can you merge the most recent PRs because they will resolve the failing checks above

I was able to get it to work. We need to update the docs in another place. The path has changed from /home/pi to /root. Since this is used in settings.yaml, the docs require an update.
Also, in my logs after running docker compose, I see the following error. Has the MPD config location changed? Interestingly, the sound still works properly (startup sound and songs alike)

jukebox  | 01.11.2023 17:51:39 -   36:init.py        - jb.player            - MainThread      - ERROR    - Could not determine music library directory from '/etc/mpd.conf'
jukebox  | 01.11.2023 17:51:39 -   37:init.py        - jb.player            - MainThread      - ERROR    - Reason: FileNotFoundError: [Errno 2] No such file or directory: '/etc/mpd.conf'

I was able to get it to work. We need to update the docs in another place. The path has changed from /home/pi to /root. Since this is used in settings.yaml, the docs require an update.

I didn't find settings.yaml, do mean jukebox.yaml? Only the host value needs to be changed now as written in jukebox.overrides.yaml. Update all relative paths (../..) in to /home/pi/RPi-Jukebox-RFID is no longer needed, thats why I removed that line from the doc. mpd is run as user now (root user for Windows/Mac host, pi user for Linux host) and the config is always in ~/.config/mpd/mpd.conf.


Cannot Edit A Redirect When Set To Just A Forward Slash

I attempted to redirect from the site root to an existing page. E.g. example.com/ to example.com/blog/. I assumed "Redirect from:" should be set to "/", as all other redirects start with a forward slash. The redirect is successfully added, however, the FROM column field is blank and you cannot click on the redirect to edit it. It also doesn't appear to be functional.
Taking a look at the following code, one can see that it strips any extra white space and removes a trailing slash. If the string is set to only a forward slash, the string is now empty. This doesn't seem to explain why multiple slashes would be set to an empty string, but that's as far as I looked into this issue.
How do we prevent the user from creating a redirect with an empty old_path?
If supported, how do we properly redirect from the site root?

Hi @AtomicSpark,
Redirects only take effect on URLs that don't exist as pages (i.e. would return a 404 if the redirect wasn't there), so setting one on the root URL generally won't work. (Actually, it probably will work if you leave your site root page unpublished, but that's not a particularly obvious way of doing it...) We should probably add in a check to disallow an empty 'from' URL, yep.
A better way of achieving what you want to do is to set up a 'redirect' page type, as described here: http://www.coactivate.org/projects/ejucovy/blog/2014/05/10/wagtail-notes-managing-redirects-as-pages/


Conversation and Parent Message Id Feature Request

The conversation_id and parent_id parameters can be used to keep track of the context of a conversation between a user and an AI.
The conversation_id parameter is a unique identifier for a specific conversation, and it can be generated by the client. This allows the API to keep track of all messages in a specific conversation and return relevant responses.
The parent_id parameter is used to identify the previous message in the conversation and provides context for the current message. By including the parent_id in the API request, you can indicate to the API which message should be considered the previous message in the conversation, and the API can use this information to generate a more contextually appropriate response.
async function sendMessage(conversation_id, parent_id, message) {
  const response = await axios.post('https://api.openai.com/v1/engines/davinci/completions', {
    prompt: message,
    max_tokens: 100,
    temperature: 0.5,
    n: 1,
    conversation_id,
    parent_id
  }, {
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer <API_KEY>'
    }
  });

  return response.data.choices[0].text;
}

please add support them to returned response from api and send request api.

any news about this functionality?

Agree this would be useful. Currently you have to send the entire conversation via the "messages" property to give the AI context into the whole conversation. But you quickly hit the 4000 token limit. Starting a new conversation would wipe the context?

Maybe we should use the createChatCompletion method instead in this situation. Unfortunately, the server side doesn't hold historical messages, and we have to manage them by ourself.

Related: https://github.com/openai/openai-node/issues/149
We are considering adding helper methods for this in the future.

Closing this as it's an API feature request rather than a client library feature request. If you're still interested in this functionality, please post it in community.openai.com

Hi everybody. Any news about this feature?


MacOS x86_64 pipeline is broken

See https://github.com/maia-sdr/pm-remez/actions/runs/8967825255/job/24626279887?pr=3

This was fixed a long time ago. Closing.


Fr translation review part one

Some corrections in french translation.
(I do it in many passes because I do it when I found where it's used)

Thank you very much for this help! Let me know when you are done going through it and I'll get this approved.

@bluecaret  For translation fixes, I take great care not to "break" the json syntax but I don't have a way to "compile" to retest
Personally I prefer to make several PR containing several corrections.
I prefer one fix per commit, but multiple fixes in a single PR.
And do several PRs as I go through my correction sessions (I'm pretty erratic because I do this for every product I use).
So you can approve whenever you want and I will start a new PR if I find other improvements to do.

That sounds good. And with translation fixes, no need to compile to test, I'll do so before publishing. I'll take whatever I can get with translations :)

I'm ready


Question on correct use of #bc-ignore!

I'd like to use #bc-ignore! in Interface Builder. For mostly personal preference, I'd rather put it in the comment section, rather then the actual value of a label.

This works, and looking at StringsFileUpdater.swift, it doesn't seem to make a difference between keys and comments when looking for the special ignore strings.
I just want to confirm this is expected behavior. I don't want to depend on anything undocumented that might break in the future.
Thanks for all the work on this library, it is exactly what we needed.

Hi donellyk, thank you for your question. To be honest, I didn't know you can add comments to labels in Interface Builder, but this sounds very interesting. I might use this myself in the future, thanks for the pointer!
Having that said, that it works just out of the box is thanks to @kafejo who requested #15 and implemented it himself in #16, so having comments work is part of BartyCrouch since version 3.1.0. Also note that there is even a test written by @kafejo here which will make sure this feature doesn't break in the future, that should also make sure comments in Interface Builder keep working (so long as they are extracted as comments to the .strings files).
I hope this answers your question. Please let this issue open as I want to add this usage possibility to the README and this serves nicely as a TODO for that.
I'm happy this library is useful to you!

Great, thanks for the feedback.

Closing this as the question was answered.

This is a life saver! This must be added to the documentation.
When you add #bc-ignore! to label it stays this way in buidl output. and there's no other workaround but this.

@Dschee please add this to documentation. Allowing to add #bc-ignore! to comment is essential.

Could you explain why you would need a label text to be untranslatable which you don't want to set in code? I'd like to understand the use case. Cause if you want to set it in code, it's not important what stands in the label in interface builder.
I'm actually not a fan of using #bc-ignore! via the interface builder comments as it adds a very hardly debuggable source of potential problems. Say someone new enters your project and for some reason needs to make the label translatable again. He will ask himself why it doesn't appear in the localization files of your Storyboards, understand what I mean? If he would see #bc-ignore! he would probably think that's the reason (due to the ignore) and make a web search or just remove it. I don't want to introduce hidden problems if they are not necessary.

Let's say you design a storyboard view that displays user information.
And there's placeholder label where email would appear. Label text is placeholder<EMAIL_ADDRESS>We don't want this to appear in translation, so we change label text<EMAIL_ADDRESS>to<EMAIL_ADDRESS>#bc-ignore!
While it does not appear in translated languages, it appears as<EMAIL_ADDRESS>#bc-ignore! in default base language (en) when app is run in English, on user's screen.
We can make it disappear if we change strings and nullify or remove that string.
In project we have tens of such strings that are not supposed to be translated. Instead of lot of manual work we simply add #bc-ignore! it to "Comment" field of label and it works fine.
Regarding your comment about possible confusion with #bc-ignore! comments - if it's a serious documented project you have #bc-ignore! mentioned in project Readme and developer guidelines. Responsible developers will be aware of that rule, it's not a problem.
Please don't disregard #bc-ignore!. I found this project because of this possibility to exclude strings from translation and this is the only tool that does it automagically.
Thank you for the great tool.

I do not disregard #bc-ignore!, not at all. But I always meant it to be included in a way that everybody will immediately see it's there in the Storyboard, not somewhere in the properties. Your example with the email placeholder is a perfect example for a string that should be translated – I would never use a .com TLD or the name user in a view translated to German. And I think you are misunderstanding me: Maybe in your company every "responsible developer" is expected to read the entire README. But I'm pretty sure there are many developers, who are "responsible developers" and want to contribute a single feature on an open source project – I don't think they should be required to read the entire READMEs of all frameworks and tools used. The errors should be self-explanatory if possible.
Having this said, this is also an open source tool, so if you feel like others would profit from such a feature being documented, feel free to create a PR with an explanation. I would probably merge it. I just don't want to invest time in something I don't believe in. I hope you can understand this. ;)


Book_Store_Landing page Updated

here is the Books_Store Landing Page ,
Which contains a beautiful navbar built using bootstrap and it contains
Home, Books , Add Books , Get all users , Requests , Logout as Nav item Links with Hovering effect and Nav bar is highlighted with an orange color at bottom
and body of this page contains a good animated , moving Background GIF and a Heading Books Store for You with a small Bootstrap Btn primary View Books which has hovering effect al well
and this page also have Footer and Footer is also highlighted with a color; and
I had added link to the index.html  file in the root directory for the home link for my Page
https://github.com/0silverback0/LandingPages/assets/127650446/6a3cac3b-b0fb-4f44-8a8f-2d859bd8efee
Once go through this and merge it _Hacktoberfest_23 : )

once please check and merge it and inform incase of modifications _Hacktobefest_2023 : )