Rikudo830 patch 1

Sony apps  from request form and more icons added

Fixes #(issue)

Type of change

:x: Bug fix (non-breaking change which fixes an issue)
:x: Icon addition (non-breaking change that adds/modifies Lawnicons's icons)
:x: General change (non-breaking change that doesn't fit the above categories, such as copyediting)

Icons addition information

Icons added

Music(`com.sonyericsson.music) - added from icon request form
Photo Pro (com.sonymobile.photopro`)
Video Pro (`jp.co.sony.mc.videopro)
South Park (com.ubisoft.dragonfire)
SmartBand Talk (com.sonymobile.hostapp.swr30)
Root Explorer (com.speedsoftware.rootexplorer)
Music Pro (jp.co.sony.mc.musicpro)
Cinema Pro (com.sonymobile.cinemapro)
Game enhancer (com.sonymobile.gameenhancer)

also: instead of com.sonyericsson.music.svg, you need to call it sony_music.svg.

@rikudo830 just to remind you - as of right now, the way you added these icons actually breaks the process that builds Lawnicons, and there are a couple other things you need to correct before this PR is merged.

In this case, it's better to look at 2 PRs at once. #1412

@x9136 is it duplicate PRs??

@x9136 is it duplicate PRs??

Partial.

imo they should just use one branch (and to extend on that, one PR), and if they don't know how to do that someone else should make their PR


made minor grammatical corrections in the docs

in line no 149 :- FCL is agnostic to the communication channel and  be  -> is configured to

Thanks for catching this @jashwanth0712 !


lib: add ffmpeg-d3d12 support

LGTM, look's like d3d11 without different with d3d12, so maybe we merge them as ffmpeg-d3d ?

In the future we'll add d3d12 encoder support. So maybe better keep them separately?


feat(3scale)!: migrate to the new backend and remove deprecations

Hey, I just made a Pull Request!

removes legacy backend system
removes deprecations

:heavy_check_mark: Checklist

[X] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)
[X] All your commits have a Signed-off-by line in the message. (more info)

@BethGriggs could you take a look and approve?


Fix ctrl s on global section

Description
Fixes Issue #3336

[X] I have read and understand the CONTRIBUTING.md document in this repository.

Type of change

[X] Bug fix (non-breaking change which fixes an issue)

This has been fixed on the 2.0 branch, if you want to make the same fix here we can merge that in! https://github.com/payloadcms/payload/blob/2.0/packages/payload/src/admin/components/views/Global/index.tsx#L105
Basically you just need to move the EditDepth provider up one level.
Looks like your branch needs to merge master changes in also. LMK if this makes sense!

Yes, it does.
I think it should be supported on here as well.
I'll make the changes.

Changes have been made.

Thanks @limistah! Merged 👍


Feature/v1.1

 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.guoyiji seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


win32: Show TIFF warnings on console

Showing them in a window (default) is not acceptable for a console
application like Tesseract which must be able to work in batch mode.
Signed-off-by: Stefan Weil<EMAIL_ADDRESS>

TIFF gui warnings probably should be turned off during tiff library compilation with definition TIF_PLATFORM_CONSOLE.

All precompiled TIFF libraries for Windows which I know (e .g. the mingw64-i686-tiff which is part of cygwin) don't define TIF_PLATFORM_CONSOLE.
I don't think that it would be a good idea to require using a special TIFF library for Tesseract.
So yes, in theory your suggestion is an alternative solution, but it is not feasible in practice.

Your commit introduces dependency on tiff library for tesseract.
Now by default tesseract uses only leptonica library.

I think there is another bug about better memory usage with multipage tiff, where the solution is also a tiff library dependency. Will try to find it.

Yes, it was bug #223. There is an enhancement request to improve performance on multipage tiff reads. It is currently slow to read the latter images in multipage tiff. The only way to accomplish this is with a direct libtiff dependency. I didn't implement because I wasn't sure if it was worth it.

I mean bug #233

Some additional notes on the problem which is addressed by this PR:
It looks like many TIFF files (nearly all?) include some vendor specific data which trigger warnings from libtiff, so it is a real and very common problem for Windows users who want to do batch processing. I see these alternatives to handle the problem:

Change libtiff. Instead of defaulting to a message window for all warnings, it could do so for GUI applications but use stderr for console applications.

Change leptonica. It could offer an interface for setting the handler for warnings, and tesseract could use that interface to set the handler.  Or leptonica could set a reasonable default for GUI / console applications.

Change tesseract. That's what I did in my PR.

IMHO in the long run the first alternative would be the best solution, but i see no chance to get it quickly.

@egorpugin, I added a commit which handles the libtiff dependency, so the code will not break if tiffio.h is unavailable.

Yes, but the code won't be active almost always. Users should care about tiff library, download it, deploy, link to 'tesseractmain' or their own binary.
Also what is HAVE_TIFFIO_H? It is not defined in tesseract build system, so it will be turned off.
Better solution I provided when building tesseract with CPPAN.
See:
https://github.com/tesseract-ocr/tesseract/issues/209 (bottom comments)
https://github.com/tesseract-ocr/tesseract/wiki/Compiling#master-branch-305-and-later
and
https://github.com/DanBloomberg/leptonica/blob/master/cppan.yml#L62 this line will disable gui notifications from tiff library completely.

HAVE_TIFFIO_H is set by the current tesseract code – both by configure and by cmake (I tested both variants before adding the last commit).

Ah, I see now, sorry.
Well, it's ok then.

Wait a second. Does this mean it is okay for me to use direct calls to libtiff if I
put it inside HAVE_TIFFIO_H? If so, I can go make the multipage TIFF reader
vastly faster.

yes
On 18 Jul 2016 19:23, "jbreiden"<EMAIL_ADDRESS>wrote:

Wait a second. Does this mean it is okay for me to use direct calls to
libtiff if I
put it inside HAVE_TIFFIO_H? If so, I can go make the multipage TIFF reader
vastly faster.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/tesseract-ocr/tesseract/pull/367#issuecomment-233397033,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAjCzNcT2CXvmIoUIyBJdt-DlI4Ur6ueks5qW7aNgaJpZM4JN-Iw
.

My vote for removing HAVE_TIFFIO_H (and removing this commit).
It is not used anywhere in tesseract except this commit.
Tesseract uses leptonica API, so maybe it's better to contribute there and use its API later.

It seems HAVE_TIFFIO_H was a legacy check, that was automatically imported to cmake to save compatibility with autotools build. Now I see that it's not used.

Well, this is a core decision. If and only if allow a direct TIFF dependency
for Tesseract, then I am going to use it to significantly speed up OCR of
multipage TIFF as part of bug #233.

Is it possible via leptonica API? I see some comments from Dan B. there.

Yeah, Dan and I talked about this extensively and eventually came to agreement. It does not seem possible through Leptonica, even if we modify Leptonica. The issue is there is a libtiff data structure that must be held in memory, and must be iterated through to get successive images in multipage TIFF. Leptonica doesn't have the ability to keep this data structure around, because Leptonica is functional C program. So you can't stash it as a member variable as a Leptonica class or something like that. And we're sure as heck not going to put it in a global because that isn't threadsafe. Which means that, currently, Leptonica has to start over from the beginning every time. When someone asks image 2348 in a multipage TIFF, we have to start at the beginning and do 2348 seeks to get to data.

I suppose it is possible we are wrong, that's just current thinking. I'll look one last time, starting ehre. http://www.libtiff.org/libtiff.html#Dirs

@egorpugin: libtiff is needed for tesseract opencl implementation. So you need to remove much more than this commit.

It's strange a bit. Does OpenCL really need this? I.e. leptonica can not provide required interfaces? Or opencl is only implemented for tiff images?
Also with CPPAN build I mentioned above tiff dependency can be added in the simplest possible way (add one line to cppan.yml).

I'm trying to understand what do you need to get custom pages (images, directories) from tiff image. Looks like it's TIFFSetDirectory(TIFF *tif, int dir_n) [1,2] call. It reads image file from the beginning, iterates over each directory until requested dir number and reads it (TIFFReadDirectory(tif) [3]). Then it can be read by leptonica with pixReadFromTiffStream(tif) like here [4]. I do not understand why leptonica has one more cycle here [5]. It gives us O(N^2) complexity instead O(N), isn't it?
So, for example if we want to read custom dirs (images) from tiff via leptonica, the complexity is O(N). But if we want to read tiff sequentially we can add a new function to lept. For example, pixReadStreamTiffNext() which will iterate to the next dir (image) in the tiff stream via one TIFFReadDirectory() call because it increases tif->tif_nextdiroff offset.
Correct me if I'm wrong somewhere.
[1] http://www.libtiff.org/man/TIFFSetDirectory.3t.html
[2] https://github.com/vadz/libtiff/blob/master/libtiff/tif_dir.c#L1531
[3] http://www.libtiff.org/man/TIFFReadDirectory.3t.html
[4] https://github.com/DanBloomberg/leptonica/blob/master/src/tiffio.c#L375
[5] https://github.com/DanBloomberg/leptonica/blob/master/src/tiffio.c#L409

The OpenCl code (amongst other things) provides hardware accelerated alternatives to a very small subset of Leptonica calls.
You are right,  Leptonica's pixReadStreamTiff() is adding lots of unnecessary overhead. The only reason we didn't notice it was all this stuff gets cached in memory, hence the massive amount of seeking is a little bit hidden. I already have a patch out to Dan to call TIFFSetDirectory() only once.  However, even a single call to TIFFSetDirectory() itself is expensive.
Your suggestion about calling TIFFReadDirectory(TIFF *tif) to get down to linear will not work unless someone is able to hold onto the TIFF *tif struct. Tesseract can do this, but only if it is allowed to directly link to libtiff. Leptonica cannot do this, because it has nowhere persistent to hold it. Everything is completely reset for every image read,  including the call to TIFFOpen. All that said, I now see that we can - potentially - work around this by keeping track of file offsets. Need to think this over.
#include <stdio.h>
#include <tiffio.h>
#include <stdint.h>
#include <stdbool.h>

const char *testfile = "test.tiff";

size_t PrimeThePump() {
  TIFF *tiff = TIFFOpen(testfile, "r");
  TIFFSetDirectory(tiff, 0);
  size_t offset = TIFFCurrentDirOffset(tiff);
  TIFFClose(tiff);
  return offset;
}

size_t ThankYouMayIHaveAnother(size_t offset) {
  TIFF *tiff = TIFFOpen(testfile, "r");
  TIFFSetSubDirectory(tiff, offset);
  TIFFReadDirectory(tiff);
  offset = TIFFCurrentDirOffset(tiff);
  TIFFClose(tiff);
  return offset;
}

int main(void) {
  size_t offset = PrimeThePump();
  while (offset = ThankYouMayIHaveAnother(offset)) {
    printf("offset=%lu\n", offset);
  }
}

Alternative 1 (see my comments from yesterday) is addressed by this libtiff issue: http://bugzilla.maptools.org/show_bug.cgi?id=2571.
I don't expect that a libtiff version with that modification will be available soon.

So I see the following possible solution. We need to query all offsets in tiff file atleast once. We could do this in leptonica. Also we can add a function that will read tiff image by dir offset.
Code flow:
// tesseract side
FILE *fp = fopen(filename, rb);
int n_dirs = 0;

// call to leptonica
// fp is opened, leptonica will call fast? TIFFClientOpen()
uint64_t *offsets = pixReadTiffOffsets(fp, &n_dirs);

// read interesting image O(1)
// fp is opened, leptonica will call fast? tif = TIFFClientOpen()
// TIFFSetSubDirectory(tif, offset)
// TIFFReadDirectory(tif)
// pixReadFromTiffStream()
PIX *image = pixReadTiffDir(fp, offsets[interesting_image_number]);

// free() offsets as C does not have C++ delete[]
free(offsets);

What do you think?

I dunno; we almost always read all the images in a loop, so putting functions in Leptonica somewhat similar to my example would also do the trick.  This is going ultimately be Dan's decision. But also consider that it's kind of a pain to put something new in Leptonica and then make Tesseract depend on it. So for Tesseract, we may be better off doing the direct libtiff calls.

This is the only place we use libtiff directly now.
Can we move it to Leptonica?
CC: @Danbloomberg

https://github.com/tesseract-ocr/tesseract/blob/21e739ca2e1e/api/tesseractmain.cpp#L41
https://github.com/tesseract-ocr/tesseract/blob/21e739ca2e1e/api/tesseractmain.cpp#L411

stweil commented on Jul 17, 2016

Change leptonica. It could offer an interface for setting the handler for warnings, and tesseract could use that interface to set the handler. Or leptonica could set a reasonable default for GUI / console applications.

https://github.com/DanBloomberg/leptonica/commit/d42a51d29eb8

1.72.2 is here, so we may able to drop this code soon.
We need to wait to an update for Mingw-w64's Leptonica PKGBUILD.
Egor will probably update cppan very soon.

Added 1..74.2, tess will automatically use it now.


#169 Fixed repeated updates for the unchanged target

Issue - https://github.com/recogito/text-annotator-js/issues/169

such events as "releasing the Shift" or "releasing the handlebar" are considered as "selection finishing events". In both cases, the upsertCurrentTarget gets called almost immediately. However, a user can simply press Shift or tap over the handlebar, which will also lead to redundant updateTarget calls upon the initial creation.

The reason for such behavior was a missing check of whether the target that's about to be updated is different from the existing one.
Changes Made
I added the updated property comparison between the existing annotation target and the currentTarget. That effectively filters out repeated Shift key releases or taps over the handlebar, because there's no selectionchange event emitter that solely leads the updated prop change.

Thanks for this!!


Issue with Image and zoom

Unable to get Image zoom to work
I have tried to get feature Image zooming to work mentioned here:
https://use.docs.page/components#zooming
Not sure exactly what it is supposed to do, as I can see no feature on it on the docs page, nor when I try it.
It sounds like something that I would find useful if it does what I think it should be doing.
Tried with "zoomImages" set to both false and true, made no difference.
Reproduction docs repo:
Here is a test reproduction repo: https://github.com/rydmike/docs_page_test
and site: https://docs.page/rydmike/docs_page_test
This page contain a normal html link clickable image and also two zoom attempts, that don't do anything.
https://docs.page/rydmike/docs_page_test/another_page
its source: https://github.com/rydmike/docs_page_test/blob/master/docs/another_page.mdx
Having docs.json config file:
{
    "name": "DocsPageTests",
    "favicon": "/images/favicon.png",
    "logo": "/images/logo.png",
    "logoDark": "/images/logo.png",
    "theme": "#0x29B6F6",
    "zoomImages": "true",
    "noindex": "false",
    "sidebar": [
        ["Welcome",
            [
                ["Intro","/"],
                ["More intro", "/more_intro"]
            ]
        ],
        ["Zoom image", "/another_page"]
    ],
    "navigation": [
        ["Intro","/"],
        ["More intro", "/more_intro"],
        ["Package", "https://pub.dev/packages/flex_color_scheme"],
        ["Playground", "https://rydmike.com/flexcolorscheme/themesplayground-v5"]
    ]
}

@cabljac cool, going to try it our again. Now I have everything setup with normal img and a link, this might be nicer. Need to test it with the docs. Thanks!


Update composer.json

Please :)

Unfortunately, that wasn't enough. During composer install :(
Do you have any idea?
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires shawnsandy/img-fly ^0.1.21 -> satisfiable by shawnsandy/img-fly[v0.1.21].
- shawnsandy/img-fly v0.1.21 requires illuminate/support 5.* -> found illuminate/support[v5.8.36, ..., v5.0.0] but it conflicts with another require.

I will try my best to take a look at it by the end of the week (sorry best I can do)...
Regards


store relay groups on relay

since

https://github.com/nostr-protocol/nips/pull/786

is merged, we can start impl new relay selector with local relay group uploading to relay

same with

https://github.com/digi-monkey/flycat-web/issues/242


How to add underline in card header ?

 <Card>
              <CardItem header>
                  <Text style={{color: '#512DA8', fontSize: 20, fontWeight: "bold"}}>Nutrition</Text>
              </CardItem>
              <CardItem >
                   <Text>Serve</Text>
                   <Right>
                      <Picker
                          supportedOrientations={['portrait','landscape']}
                          iosHeader="Select one"
                          mode="dropdown" style={{height:35, width:100}}>
                          <Item label="Yes" value="key0" />
                          <Item label="No" value="key1" />
                          <Item label="Refused" value="key2" />
                     </Picker>
                   </Right>
              </CardItem>
              <CardItem>
                 <Text>Feed</Text>
                 <Right>
                      <Picker
                        supportedOrientations={['portrait','landscape']}
                        iosHeader="Select one"
                        mode="dropdown" style={{height:35, width:100}}>
                        <Item label="Yes" value="key0" />
                        <Item label="No" value="key1" />
                        <Item label="Refused" value="key2" />
                      </Picker>
                 </Right>
              </CardItem>
            </Card>

Hi! Thanks for trying out NativeBase!
Due to the overwhelming requests and issues/questions we ask you to add the following details with your issue.
Please check the existing open/closed issues for a possible duplicate before creating a new issue :)
Also DO fill out the below form to give us a better idea about your environment and help us debug it quicker. Issues without the required details will mostly be unattended to.
react-native, react and native-base version
Expected behaviour
Actual behaviour
Steps to reproduce (code snippet or screenshot)
Screenshot of emulator/device
Is the bug present in both ios and android or in any one of them?
Any other additional info which would help us debug the issue quicker.

Use style borderBottomWidth for card header. Use stackoverflow for such questions.


auto import only shows suggestions for current folder in multi-root workspace

VSCode Version: 1.21.0
TypeScript Version: 2.7.2
OS Version: Window 10 (1709)

Please provide an example

two folder muli-root workspace: folder1 & folder2...
folder1
A.ts:
export function alpha() {
    return "alpha";
}

folder2
B.ts
export function beta() {
    return "beta";
}

C.ts
console.log(alpha()); // no suggestion for alpha
console.log(beta()); // suggestion for beta & import statement generation work fine

@mjbvz thanks for the quick reply. please let me know if you need more info.

@mjbvz do you know how the native VS Code auto import compares to the extension "Auto-Import" ?
The VS Code team reached out to the maintainer last October...  see this post
Unfortunately, as far as I can tell, the multi-root workspace support has the same issue (version 1.5.3).

This is the correct behavior.
You can think of folders more like "projects" in this context. If your projects have dependencies, you should declare these in the package.json

@mjbvz ok, thank you! :-)


date range component

#78 date range picker

Thanks for catching my typos! Back to you @gcampo88

👍 looks great!


Validate date range for hourly apportioned emissions

User Story
As a user
I want
So that
Acceptance Criteria
Date must be in the format MM/DD/YYYY
End date must be equal to or greater than start date
Start date must be between 1995 and present
End date must be between 1995 and present
Testing
Test Case:
Tester: @davidkwartler

https://cvpcorp.testquality.com requirement R16. Do not remove or edit.

@tlageman-epa Added Dev Tasks: #600 and #602

TC69 passes


WIP update Select to use react-select 2.0

react-select-plus is no longer actively maintained
https://github.com/HubSpot/react-select-plus

Closing old PRs


Laravel 8.x Compatibility

This is an automated pull request from Shift to update your package code and dependencies to be compatible with Laravel 8.x.
Before merging, you need to:

Checkout the l8-compatibility branch
Review all comments for additional changes
Thoroughly test your package

If you do find an issue, please report it by commenting on this PR to help improve future automation.

:warning: The latest version of Laravel has a dependency for phpunit/phpunit of ^9.3. If you would like to also upgrade your tests, you may run the PHPUnit 9 Shift for free.

:alembic: Using this package? If you would like to help test these changes or believe them to be compatible, you may update your project to reference this branch.
To do so, temporarily add Shift's fork to the repositories property of your composer.json:
{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/laravel-shift/laravel-mandrill-driver.git"
        }
    ]
}

Then update your dependency constraint to reference this branch:
{
    "require": {
        "therobfonz/laravel-mandrill-driver": "dev-l8-compatibility",
    }
}

Finally, run: composer update


Testcase

[ ] + Operation must be working
[ ] - operation
[ ] % operation
[ ] / operation
[ ] ++ operation
[ ] -- Operation

@Datta565 @KiranPhadtare30  @SamuelAnanth  @Udayasree-cloud  @NivyaChinnasamy  @Abhiram1107
Please test all code executions and if any issue list down in comments

Found compilation error in Division operation.

Division Operation is not working correctly.

Are you getting Result 0, Every time?

is the testing completed?


Tunning Saturn

I wanted to optimize Saturn integration, so I tried to tune pe_sim_penalty, which seemed one of the rare parameters affecting loss and thus potentially also integration strength. However, in a wide range (0.01, 0.1, 1, 10) this didn't affect batch or bio integration metrics in any clear way. Is this expected?

We observed a small, 1-2% increase in accuracy on the logistic regression transfer accuracy task when setting the value to 1 vs 0 for the frog and zebrafish dataset.
How many seeds are you testing? (eg, for our results we ran 30 trials).

I tested only 3 seeds and the variation between seeds visually seems to be the main driver of differences, not the weight.
Thank you for letting me know that you observed similar - I was concerned something was wrong with my code after observing so little differences.

No problem! Please let us know if you have any other questions!


NEXT-3743 - Fix inadequate entity definition resolving in Elasticsearch filter parsing that show when filtering for a translated field of a related entity is executed in Shopware 6.5

1. Why is this change necessary?
If a filter is applied on an Elasticsearch query that uses a translated field of an entity that is related to the product entity, a RuntimeException is thrown in the getTranslatedFieldmethod of the EntityDefinitionQueryHelper.
The filter parsing uses the getField method of the EntityDefinitionQueryHelper to get the field even if the field name contains relations. The same is not done for the definition itself. As the root definition is passed to the value parsing this would mostly lead to a null return of the getField method, which is unexpected behavoir. However, if the field is TranslatedField, the getTranslatedField` method is called. This method only searches for the field in the fields of the passed translation (without deeper resolving). The field won't be found an an execption is thrown indicating that the property is missing.
2. What does this change do, exactly?
This change introduces a private getDefinition method in the CriteriaParser to resolve the definition over it's relations to a definition that actually contains the field. This method is called in the parseEqualsAnyFilter method, the parseEqualsFilter method and the parseRangeFilter method. The original definition will still be used for the query creation. If the field does not exist in the resolved entity, an exception is still thrown.
3. Describe each step to reproduce the issue or behaviour.
The bug only occurs on translated fields of entities that are related to the product entity. One example is the shortCode field in the unit entity. The exception will be thrown if a filter (equals, equals any or range) is applied to this field.
4. Please link to the relevant issues (if any).
https://github.com/shopware/shopware/issues/3743
5. Checklist

[x] I have rebased my changes to remove merge conflicts
[x] I have written tests and verified that they fail without my change
[x] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfill them.

6. Related PR
There is closed (an merged) PR for this changes implemented in SW 6.6. This is a backport of this changes to SW 6.5. https://github.com/shopware/shopware/pull/5739

Changed that and overwrote the commit.

Hi @SpiGAndromeda
Your changes has been merged into 6.5.x branch 🎉 , it will be released within the next 6.5.x patch release


Enhancement/i2 chirp

Adding a better soil moisture and temperature sensor:
https://www.tindie.com/products/miceuz/i2c-soil-moisture-sensor/

I tried to print my comments with DEBUG_VAR but I got strange compile errors so I juste print no debug at all...


Soularium Not processing

Is there an existing issue for this?

[x] I did not find any existing issues.

Current Behavior
JEI shows this recipe:

However it does not work for me:

Create adds a recipe to smelt soul sand into scoria, which does work when not in alloy only mode, so potentially a mod conflict?
Expected Behavior
It would craft soularium
How to Test

Put in required ingredients with Soularium
Don't get soularium
Admittedly I do have a lot of other mods so it may be a conflict?

Local Environment

Operating System: Win 10
Java version: 8 Update 381
Minecraft Version: 1.20.1
Version: 6.2.1
Other Mods:
See additional info (I'm not typing all those mods out)

Any Additional Information?

Update: Soul SOIL works, soul SAND does not, despite JEI stating otherwise

I also am having the same issue. For me the recipes for both Soul Soil and Soul Sand are broken.

Just downgraded to 6.1.8 and it is fixed. Definitely a problem in one of the newer updates.

I'm struggling to reproduce this issue, having tested with Create and Ender IO alone and then in ATM9. Can you retry this with the latest Ender IO to see if this is still a problem? Thanks!

This bug seems to be caused because the Alloy Smelter is trying to smelt the Soul Sand into Scoria (Create mod), despite the machine being set in alloy mode instead of smelting or both.
Basically the Allow Smelter is checking for smelting recipes even in allow mode, which should not happen. This blocks crafts that have ingredients that can be smelted into something in regular furnace recipes.

This bug seems to happen because the Alloy Smelter is trying to smelt the Soul Sand into Scoria (Create mod), despite the machine being set in alloy mode instead of smelting or both. If you use Soul Soil (which cannot be smelted in Create), it will work.
Basically the Allow Smelter is checking for smelting recipes even in allow mode, which should not happen. This blocks crafts that have ingredients that can be smelted into something in regular furnace recipes.

I understand the rationale for this possibly occurring, however testing in ATM9 and in a pack with just ender io and create I was unable to get this to occur 😅

Does ATM9 remove the Soul sand to Scoria smelting recipe?

Does ATM9 remove the Soul sand to Scoria smelting recipe?
Edit: ah you also tested with only Create and Ender IO. Well, not sure why you can't repro then.
Did you try setting the alloy only mode?

Yep tested in alloy only mode too and it is working as expected

Okay I was able to reproduce in ATM9 TTS specifically, now to work out why...


Deprecate blog section and remove outdated documentation [phab:T180]

Created by zarko at 2016-10-25 17:43:28:

revision #1474


Automl cleanup

The goal is to centralize where all our AutoML Samples go so that in the future there will be less duplication and make it easier to maintain.
Once in master, I will:

update docs to point here
Delete old branches

@dpebot merge when green


How to set the HIE to use stack/cabal for the current project

In my current project I have both stack and cabal configuration file, however, how do I set up HIE so that it only uses say stack?
The problem here is that if it uses the other one it won't be able to work properly. My current workaround is temporarily deleting the cabal.project file so that it always uses stack.
Thanks for the help!

Hi! To tell HIE to always use stack, use a hie.yaml file! https://github.com/haskell/haskell-ide-engine#project-configuration

Thanks for the response!
But it seems like setting up the hie.yaml` can be quite tedious if we have multiple components, e.g. more than 15 components.  So I am wondering is there any more efficient way to do this?

No, currently not.
A fix would be to implement https://github.com/haskell/haskell-ide-engine/issues/1516, which should be quite trivial. There you can tell cabal-helper which build-tool to use.

Another one could be add a cli flag to tell hie prefer one over another: https://github.com/haskell/haskell-ide-engine/issues/1432


It doesn't work when downloaded from Elgato Marketplace

Hi
When I installed your plugin from the Elgato Marketplace, I only saw an empty field on a green background
I tried to enter my username, API key and minutes, but nothing happened. So, I downloaded version 1.0.12 from your GitHub releases, and now everything works fine
Could you please update your release on the Elgato Marketplace? The version there is still 1.0.11

Many thanks for letting us know. I wrote a message to the support-team to include the new version. I will close the ticket as soon as I receive an answer.

Version 1.0.12 is now on the Marketplace. If you have any further problems, please open a new ticket. I'll see if I can find some time to tweak the plugin in the next few days. Maybe there will be another version right away. Thanks again for letting me know!


Tenant Token

Summary
A Tenant token is generated on the user server-side code to be used by an end-user. It allows users to have multi-tenant indexes and thus restricts access to documents depending on the end-user making the search request.
A Tenant Token is a JWT containing the information necessary for MeiliSearch to verify it and extract permission/rules to apply it to the end user's search.
Summary Key Points

Tenant tokens are meant to solve multi-tenancy in an elegant way.
Tenant tokens contain rules that ensure that a Tenant token holder (e.g an end-user), only has access to documents matching rules chosen at the tenant token creation.
Tenant tokens are JWTs.
Tenant tokens are signed from a MeiliSearch API key when generated.
Tenant tokens cannot be less restrictive than the signing API key and can only be used for searching. It means that a Tenant Token cannot search within more indexes than the API Key that signed that token.
Tenant tokens can have different filters for each index accessible by the signing API key. These filters rule per index are described in an indexesPolicy JSON object
Tenant tokens are not stored and thus not retrievable on MeiliSearch.

Motivation
Tenant tokens are introduced to solve multi-tenant use-cases.
Users today need to set up workarounds to have multi-tenant indexes. Most of the time, they have to use server code as a frontend to implement the access restriction logic before requesting MeiliSearch. It is difficult to maintain, to implement, and the performance is degraded because the frontend code does not communicate directly with MeiliSearch.

Nice spec! 💪
This should be read by the whole integration team since there is a crucial implementation on their side regarding the user experience 👍

Thanks @curquiza! Ping @meilisearch/integration-team ⚡

Naming
About the naming, I want to make a suggestion to better differ the api keys and the scoped API keys.
Today, the problem I have with this is that when we say api keys I don't know if we talk about an API key that is able to create scoped API keys or if we are talking about a scoped API keys. I don't know if we talk about an apiKey that we can access through /keys or if it is not stored.
So I don t think they should be in the name api key set.
For example, given a set of numbers:

Both floats and integers are part of the number group.
But in the case of the API keys we have the following:

⚠ When I say stored, in the next img, it means specifically stored inside MeiliSearch and accessible through the /keys route.
This shows why they should not be in the same set.
While, if we went for another naming we then can create a parent group that differentiate them clearly:

(permission is just a naming that is completely not the naming I specifically want)
Then why tokens or scoped tokens?
It is a common word that describe a key with limited set of accesses. Typically we might think of jwt.

The tokens are signed either using a private secret or a public/private key.

They are rarely stored in a database, unless in the use-case of enable-list and disable-list. Which is also possible with the scoped API keys of MeiliSearch.
The word is commonly used to describe the very common scheme:
Authorization: Bearer <token>

Conclusion
By naming them differently we can now very easelly what we are mentioning when using the word token or apiKey. I think it could help users but also in general inside MeiliSearch for smoother comprehension.

Good idea; personally, I know nothing about this domain. I've never deployed anything like that but what I can say for sure is that since the first wg on the subject, I've been struggling with the naming.
Multi-tenant and scoped API keys are not the most explicit terms if you're not already familiar with the subject :unamused:.
I don't know what terms are logical or not, but I totally agree with the fact that having two things named key makes the spec (and the doc later) even harder to remember and understand.
I don't know if it's too late, though :see_no_evil:

Naming
About the naming, I want to make a suggestion to better differ the api keys and the scoped API keys.
...
Conclusion
By naming them differently we can now very easelly what we are mentioning when using the word token or apiKey. I think it could help users but also in general inside MeiliSearch for smoother comprehension.

I agree that the term api_key is not very clear maybe because it has no qualifier. I think it's a good idea to change one of the two or scoped api key or api key.

I think we can rename the term Scoped API Keys and refocus it on what it does in the first place and what users expect from it aka Multi-Tenancy. (Index having documents for multiple customers (tenants)). However I remain quite attached to Scoped API Keys for SEO purposes since it seems to be the terms expected by people looking to solve this problem. The term multi-tenant might be more efficient.
In my opinion, the term API Keys can/should remain as it is because it is equivocal.
Some proposals to replace the term Scoped API Keys:

Multi-tenant key
User-defined key
Tenant key

I agree with @bidoubiwa, I'm getting confused with the scoped API key terminology. I like the term token, and I think everybody here will know what I am referin to when I talk about token, so something like auth token, or just token would help me a lot in understanding what we are talking about.
@gmourier, I understand that for SEO reasons you like the term scoped API key, but would that be enough to mention the term when we talk about what we call tokens? Because honnestly we been talking about this for months, and I am still confused :laughing:

I don't think token is the best choice because any API key can be considered as an authorization token in essence. I think it is necessary to be more explicit and give a business term that allows understanding what this token is used for.

Yes, going with token is a good comprise for me.
Even without understanding the complexity of multi-tenancy and its use cases, I can at least know that it is a kind of token and not a stored API key.
All your suggestions with tokens are good for me. I'll give my order of preferences but all are viable choices!

Multi-tenant token 4⃣
User-defined token  2⃣
Scoped token  1⃣
Tenant token  3⃣

If the main problem is that Scoped does not speak to you, we should keep API Key and find another term for Scoped API Key
👍

Hello everybody, this is a very interesting discussion happening over here! I want to contribute my perspective, but I have very little expertise in this area so please take all of my comments with a grain of salt.
I agree with Charlotte that these should not be called keys if they do not function by the same rules as our API keys (storage, retrieval, use etc.). We could also apply this same principle to the master key, but that's a subject for another time 😉
Of all the options presented so far, I prefer "tenant token". Since tenant in everyday English means a person who rents an apartment or resource, it immediately creates a contrast with the "owner". It implies that this is a token created by an owner for a tenant, and has limited privileges. So I like this term a lot on a conceptual level.

However, I remain quite attached to Scoped API Keys for SEO purposes since it seems to be the terms expected by people looking to solve this problem. The term multi-tenant might be more efficient to gain natural traffic...

It makes sense that we should use the terms "scoped" and "multi-tenant" on the docs and landing page to gain traffic even if that isn't our official title for the feature. If we put these terms aside, I wonder if we could come up with a name that's even more specific to MeiliSearch and what this token can do. For example "search token" pops into my mind, meaning a token that can only be used for search requests.

I like the simple and plian tenant token @dichotommy proposes

Feel free to propose or vote for other names 😇. For the moment tenant token seems to get favorable opinions. Next Monday, a final name will be chosen for the first iteration of this feature.

I'm not really against tenant token but it seems to me that the word tenant can't be used alone in computer science. There are single-tenant and multi-tenant, but I don't think I've ever met the word tenant by itself. In our case, these tokens will be used to make multi-tenant, so I would be more in favor of multi-tenant token.

I'm not really against tenant token but it seems to me that the word tenant can't be used alone in computer science. There are single-tenant and multi-tenant, but I don't think I've ever met the word tenant by itself. In our case, these tokens will be used to make multi-tenant, so I would be more in favor of multi-tenant token.

With the @dichotommy explanation, it makes sense etymologically. A tenant token allows having multi-tenant indexes. Now I surely agree that if we use the term Tenant Token to describe that very specific end-user keys, I think we should explain the feature in the guides or link the explanations to the term Multi-Tenant/Multi-Tenancy.

The specification has been updated to use the term Tenant Token. Thanks to all for your suggestions and feedback. 🧱

Hello everyone!
A few design questions, one of which is a major one (the first one) I'd like your opinion on.
1 - Thinking about it, I have the impression that it would be better to use a type of token known by all and easy to integrate for future interoperability purposes. I'm thinking of generating tenant tokens in the form of JWT.
I have a hard time seeing any flaws in using JWT instead of a custom format chosen by us in our SDKs by asking myself "What do we gain by not using JWT to represent a tenant token?"
SDKs do not integrate external libraries, if we choose to use JWT we would certainly need to add a library allowing us to generate them. What is your position on the question @meilisearch/integration-team?
After a discussion with @ManyTheFish, it would be possible to decode a JWT without too many technical complexities on the MeiliSearch side as long as we send the right format.
2 - Regarding the expiresIn expressed in seconds, it seems to me to be the better choice than an expiresAt with a date time. Since a tenant token is not modifiable over time and generally follows the duration of a user session, expiresIn seems to me to be the simplest format for the intrinsic use of a Tenant Token. If we choose expiresIn, the SDK method will have to automatically transform it into a precise date or a timestamp representing the end of validity of the token so that MeiliSearch can verify its validity at the end.
expiresIn seems to be easier and faster to use in the context of the tenant token but I would like to have your opinion on the question before making a choice.

1- I don't like the idea of being dependent on external libraries but anyway we will have to create a token and I think it will be much easier to use a known format with a ready-made library rather than write it, and that should be more acceptable if it is for security reasons.
How it's going to work for users who don't use SDK?
2- For the expiresIn I don't have a clear opinion but I always find it complicated to read for a human compared to date. Also, seconds seem to be very short and generate big numbers quickly, minutes or hours would not be a good choice?
And I maybe miss something but why the SDK should transform this field into a date?

@gmourier, wait... How exactly is expireIn supposed to work? I have the feeling that this is a value that the emitter of the token sets when he creates it, but expire in is a duration, for I am not sure how we are supposed to know when it actually expires if we don't have a referential timestamp. Am I missing something?

Thanks for your answer 😌
@alallema, the tenant token is not expected to be human-readable in most cases. A machine will generate it from code and the end-user will use it transparently from a web app frontend. I thought that expiresIn (expressed in seconds) is easier for the developer to code the tenant token generation instead of thinking about a "strict" date-time.

"How will this work for users who don't use the SDK?"

That's a good question and in my opinion raises another advantage for using a JWT instead of a custom token format. It seems easier to me to explain a token generation in JWT format for the user (if we decide to do it for those who don't use our SDKs) since it is a widely used format but I could be wrong on that. In short, we would only have to explain the information that needs to be sent to the JWT token generation library rather than explaining in detail how we generate them if we use a custom format.
@MarinPostma The SDK will "virtually" transform the expiresIn to an expiresAt using e.g. Now() + expiresIn value into the JWT / token payload.

Hey!
I agree with the use of JWT. It is a very common standard with great documentation.
Question 1: JWT and external libraries
About the libraries, we might have to add in the SDK's. I made some research and I think we do not need any library at all. To explain that, I need to come back on what JWT's contains and how they are created.
Feel free to ignore and just look at the code examples in the different categories. I made them using javascript for both node and browser env.
JWT's
JWTs are composed of three sections: a header, a payload (containing the data), and a signature. The header and payload are JSON objects, which are serialized to UTF-8 bytes, then encoded using base64url encoding.
The JWT's header, payload, and signature are concatenated with periods (.). As a result, a JWT typically takes the following form:
{Base64url encoded header}.{Base64url encoded payload}.{Base64url encoded signature}

Example:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

The header
Conventionally, it contains the type of the token, which is JWT, and the signing algorithm being used, such as HMAC SHA256 or RSA.
Example:
{
  "alg": "SHA256",
  "typ": "JWT"
}

Then the header is encoded in base64 without requiring any external library.
// node
Buffer.from(header).toString('base64')

// browser
btoa(JSON.stringify(header));

( code example is missing serialization in UTF-8 bytes but it does not require any library, it is a simplified example)
Payload

The JWT payload contains information about the JWT, such as the target of the token, the issuer, the time the token was issued, and/or the lifetime of the token. Like the JWT header, the JWT payload is a JSON object and is used in the calculation of the signature.

The payload is encoded in base64 as well (see header for code example)
For example, our tokens will contain expiresIn and indexesPolicy
Google example
A payload example, used by the Google API's
The require 3 fields aud, iatand exp
{
  "aud": "my-project",
  "iat":<PHONE_NUMBER>,
  "exp":<PHONE_NUMBER>
}

iat:  ("Issued At"): The timestamp when the token was created, specified as seconds...
exp:  ("Expiration"): The timestamp when the token stops being valid, specified as seconds...
aud: ("Audience"): This must be a single string containing the cloud project ID where the device is registered

Signature
Although JWTs can be encrypted to also provide secrecy between parties, this example uses signed tokens. Signed tokens can verify the integrity of the claims contained within it, while encrypted tokens hide those claims from other parties. When tokens are signed using public/private key pairs, the signature also certifies that only the party holding the private key is the one that signed it 🔥.
To create the signature part you have to take the encoded header, the encoded payload, a secret, the algorithm specified in the header, and sign that.
For example if you want to use the HMAC SHA256 algorithm, the signature will be created in the following way:
// pseudo code
const signature = HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

In the case of our use case, the secret is the API key that created the token.
// In node `crypto` is a standard library
require('crypto')
  .createHash('sha256')
  .update(header + payoad + apiKey)
  .digest('hex');

// Browser
crypto.subtle.digest('sha256', header + payoad + apiKey)

Combining
Once we have the header the payload and signature, we combine them the following way:
{Base64url encoded header}.{Base64url encoded payload}.{Base64url encoded signature}

What is interesting is that the Header and the payload are not encrypted, we just need to decode them from base64.
But the signature confirms that the JWT was made by the party holding the private key.
for example paste this JWT in the playground here: https://jwt.io/
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOiIxIiwibmFtZSI6IkJJRE9VQklXQSA-OkQifQ.Lzf7SkWASuA1nIamkpR2D-8OMnq1O6KZGuMLHkH7klw

Validate integrity
At the receiving end, you need to validate the token ⚠.
Since the signature is hashed with the payload, the header and the API key, if the content changes, the JWT is not valid anymore.
To check this, you need access to the api key of the issuer of the token. This also raises the usefulness of the name in the APi keys.
For example:
header:
{
...
}

payload:
{
   "indexesPolicy": "*",
   "expiresIn": 10000,
   "issuer": "custom"
}

to check if the JWT token is valid this is how you would do it :

Decode the payload  from base64 and deserialize it
Fetch the issuer
Fetch the API key from the issue in our database
recreate the token to check if it is valid with the stored API key

const apiKey = apiKeyFrom(issuer) // custom

// in case we have no issuer, it will be required to iterate on all API keys to find on that matches
const checkToken = base64(jwt.header) + base64(jwt.payload) + apiKey

if (checkToken !== recievedToken) {
  throw "Token is not signed correctly"
}

Thanks a lot, @bidoubiwa for this excellent detailed answer, it will help us in a crazy way I think.

WG: Tenant Token Format
Date: 2022-01-10T15:00:00 GMT+1
Duration: 45mins
Attendees

@bidoubiwa
@alallema
@ManyTheFish

Goals

Recall some context and explain why we are doing it.
Choose if we use a JWT format or a custom format for the tenant token.
Get knowledge on the required payload scheme for MeiliSearch.
Answer related product / technical questions if any.

Context
Some users would like to have native Multi-Tenant indexes within MeiliSearch. Today they are forced to lose performance and ease of use by going back and forth through a proxy that makes sure to add filters for each user request.
Expectations
Following the release of the API Keys management, we aim to release this feature for v0.26.0 to maximize the user impact following the v0.25.0. Moreover, the context remains fresh in the teams on this particular technical subject.

Use a JWT format or a custom format
What are the Strengths/Weaknesses of using a JWT format?

Strengths

Interoperability (MeiliSearch knows how to parse a JWT format)

Don't re-invent the wheel with another custom format

Easier to explain because it is known by a majority

Weaknesses

MeiliSearch is dependent on a format

What are the Strengths/Weaknesses of using a custom format?

Strengths

The size of the token can be reduced because the header part is not needed

Not dependent on a format

Weaknesses

More difficult to document and explain because it is a custom format

Not interoperable

If we choose a JWT format, what are the Strengths/Weaknesses of using an external library on the SDK side?

Strengths

Less code to maintain

Can be more user-friendly depending on some JWT library (e.g. Transform function expiresIn: 2d to anexp timestamp)

Weaknesses

Adds an external dependency to the SDKs

JWT libraries might not be equivalent and offer the same set of helper functions

Final Decision
We chose to use a JWT format for its massive use and known by developers. This allows us not to reinvent the wheel with another custom format.
We decided not to implement the external library in our SDKs for this first iteration. A function generating a JWT in the desired format as a helper within the javascript SDK at first as it is the most used SDKs will be provided. Others will follow later.

What is the expected payload format on the MeiliSearch side?
Header: Algorithm and token type
At first, MeiliSearch accepts tokens signed with the combination of HMAC + SHA256.
e.g.
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload: Data
MeiliSearch needs information within the token to check its validity and use it to perform requests.
This information can be separated into two parts, on one hand, the information allows to check the validity of the Tenant Token, on the other hand, the business logic information allows to have a token with pre-defined parameters for the end user's search.
Validity related

Fields
Description
Comments

iss (Issuer claim)
Must contain the first 8 characters of the parent MeiliSearch API key used to generate the JWT (Tenant Token)
Is this the most appropriate field? We could decide to generate a custom one since nothing prohibits adding one and claims are optional according to the JWT RFC-7519.

exp (Expiration Time claim)
A JSON numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds.
This value is optional. However, the SDKs function that generates a JWT specifically expects null for the parameter generating exp to ensure that the token is explicitly intended without an expiration date.

Business logic related

Fields
Description
Comments

indexesPolicy
This field contains descriptions of the rules/limits applied for search queries performed with the JWT on all or only some of the indexes of the parent API key used to generate the JWT.
The final accepted format for this field will be defined within the specification. The name needs to be reviewed before finalization.

Payload example
Given a MeiliSearch API Key used to generate the JWT from the user backend code. Here is a valid payload data for a JWT.
e.g MeiliSearch API key: rkDxFUHd02193e120218f72cc51a9db62729fdb4003e271f960d1631b54f3426fa8b2595
{
    "iss": "rkDxFUHd",
    "exp":<PHONE_NUMBER>,
    "indexesPolicy": {
        "*": {
            "filter": "user_id = 1"
        }
    }
}

In this example, indexesPolicy allows to specify that no matter which index is searched (among all those accessible by the parent API key that generated the tenant token), this filter will be applied on all search requests.

Overall JWT generation sample code

header = {
  "alg": "HS256",
  "typ": "JWT"
}

base64Header = base64Encode(header)

payload = {
    "iss": "rkDxFUHd",
    "exp":<PHONE_NUMBER>,
    "indexesPolicy": {
        "*": {
            "filter": "user_id = 1"
        }
    }
}

base64Payload = base64Encode(payload)

signature = HS256(base64Header + '.' + base64Payload, 'rkDxFUHd02193e120218f72cc51a9db62729fdb4003e271f960d1631b54f3426fa8b2595')

TenantToken = base64Header + '.' + base64Payload + '.' + signature

Additional Q/A
None, we have exceeded the time limit.
TLDR;

MeiliSearch expects Tenant-Token represented as JWT.
MeiliSearch expects JWTs signed by the HS256 method for this first iteration.
The iss claim will be used to contain the first 8 characters of the MeiliSearch API key used to generate this tenant token.
The exp claim will be used to hold the expiration date of a Tenant Token (JWT) if there is one.
The SDKs will not use an external library to generate them.
The Javascript SDK will be the first to provide a helper function to generate JWT to communicate with MeiliSearch.

Hi @meilisearch/docs-team 👋
During our ideation phase, we proposed the use of the term indexesPolicy to store the global/specific per index rules to be applied when a search request is issued from a tenant token within it.
The information contained in this indexesPolicy field can also be seen as limits/restrictions. For example, in the future, we could use it to allow users to specify a maximum value for the offset / limit fields at search time.
What do you think of this name? Do you have a better suggestion? Thanks! 😇

About the parameter/key name indexesPolicy, this is really a tricky one 🤔
As I understand it, indexesPolicy alters search results by applying additional parameters to the search request depending on the index that's being searched. If it's empty, that means no additional parameters are added regardless of index.
Based on that definition, I see arguments for and against including the term index. On the one hand, it's not affecting indexes directly; on the other, the first level of the object expects index uids as keys. After a bit of brainstorming, here are some two-word favorites:

searchModifiers
searchTransform
searchRules

I think you could add index to the front or byIndex to the back of any of these. None of them strike me as perfect, though 😕

From @dichotommy's suggestions, I think searchModifiers is the best option but am not sure whether I prefer it over indexesPolicy.
searchModifiers is very explicit about what's going to happen, at least according to the current spec. That's great, but could it be limiting in the future? Is it all possible we might want to allow users to do something more with Tenant Tokens besides modifying searches?
indexesPolicy is less explicit and is harder to understand without consulting documentation. Like, I know that a searchModifier will modify a search, but I don't know what a policy will do to an index.
There's also a question of what we want to emphasise here. If indexesPolicy is only going to be used in the context of Tenant Tokens, perhaps we could make that connection more explicit? For instance:

tenantPolicies
tenantRestrictions
tenantSearchModifiers

Not sure any of these make more sense than what we already have.

@guimachiavelli and @dichotommy Thanks for your help!
Let's keep in mind the use-case requested by our users until today which is to propose a practical way to have multi-tenant indexes at search.
I think the searchModifiers or searchRules proposals are the best from my point of view. I have a preference for searchRules because in the future we could add limits on some of the search parameters per index, for example, max_offet or max_limit. The term rule seems more appropriate than modifier in this context from my POV. What do you think about it?
At the JWT root level, we could also have other restrictions related parameters in the future like a rate-limiting or even something like restrictSources to ensure that a tenant is only valid if the request is issued from an IP or range of IPs. This is why I am more in favor of something like searchRules over tenantRestrictions/tenantPolicies since this field is specifically related to enforced search parameters/restrictions.

The use of the JWT claim iss has been replaced by a custom claim apiKeyPrefix in order not to collide with Auth Providers like Okta/Auth0 which use this field to define the identity of the JWT generator. In their case, this field is used to specify the provider url.

Hey @gmourier to replace the indexesPolicyname I would suggest:

searchScope (we precise in which index we can search and with a filter or not)
searchRight

I like searchRules too. I think we shouldn't choose something like searchRestriction because the current implementation is more an optin than an optout.

@meilisearch/docs-team, the specification is near to being in a final version except for corner-cases that could be seen during the tests of the integration team but our first tests with @alallema are rather satisfactory.
Decided in comittee @bidoubiwa, @alallema and @ManyTheFish today:

indexesPolicy is renamed searchRules, thanks to all your feedback !
MeiliSearch accepts JWT signed with the following algorithms: HS256, HS384, HS512, RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384.

Light reorganization of the specification and fix of some typos.
I removed the pseudo-JS code because it doesn't bring much to the specification. SDKs and documentation are much better for this since they are presenting working code and I want to avoid managing 2 base codes.
I need 2 approval reviews to merge this specification. If one person from the @meilisearch/integration-team and one person from the @meilisearch/docs-team can take a look at it, it will be really appreciated 🙏


How to use in license server that package?

Hi!
I have a windows service that I want to license on the remote server. For example, I will give my client license key for 2 servers. Cannot install on 3rd server. Can I perform this editing with this package? Why?

see my comment in https://github.com/junian/Standard.Licensing/issues/8#issuecomment-527931051

Hi @lastlink ,
Can you share sample code

You'd have to as part of your license verification check against a device id. standard licensing just validates that the license works and pulls out attributes. To lock to a machine you'll have to write your own logic to compare against a device id.

Ok. Thank you so much.


Binary mode segfaults on macOS / x86

K Version
K version:    5.3.98
Build date:   Sat Jul 02 02:12:27 MSK 2022

Description
In the lesson 1.20 there is the following exercise: "Try running the program 0 in this K definition on the Haskell Backend". It fails with segmentation fault.
Input Files
module LESSON-20
  imports INT

  rule I => I +Int 1
    requires I <Int 100
endmodule

Reproduction Steps
What to run:
kompile lesson-20.k --backend haskell
krun -cPGM=0

Resulting output:
/usr/local/bin/../lib/kframework/k-util.sh: line 74: 15602 Segmentation fault: 11  "$@"
[Error] krun: Backend crashed during rewriting with exit code 139

Environment
macOS Monterey 12.4 (intel)

@ana-pantilie I've transferred this issue over so you guys can triage it as appropriate - I don't know what the current state of the compact issue is.

Clean and rebuild with --no-haskell-binary indeed helps!

Duplicate of #3077


WASM decoder

Could we use a decoder written in C++ or Rust and deploy it as webassembly? Could this give performance benefits?

Yes, this is one of my goals to write a Rust decoder and compile it to WebAssembly. Only with WASM we can use SIMD instructions in the browser and take full advantage of the encodings of the format


some doubt on particular sentence

And I had  doubt  on this  sentence " Once files are password protected using Office 2016, will not remove the passwords "
If I create a protected word document with password using office 2016  , then others can be able to unlock the password in their computer with using Docrecrypt rool  and with having same certificate ?
Thanking you sir

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 28b7982b-5e7c-0678-8919-10d4147f3525
Version Independent ID: 16bd8605-ed8a-234d-0ed7-cac3c1745b35
Content: Remove or reset file passwords in Office 2016
Content Source: DeployOffice/security/remove-or-reset-file-passwords-in-office.md
Service: o365-proplus-itpro
GitHub Login: @DHB-MSFT
Microsoft Alias: danbrown

Definitely a word or words missing from that sentence. But can't quite figure out what the missing words are. Might just have to remove that sentence. Thanks for bringing that to our attention.


Fix a false negative for RSpec/DescribedClass when class with constant

Fix: https://github.com/rubocop/rubocop-rspec/issues/1741

Before submitting the PR make sure the following are checked:

[x] Feature branch is up-to-date with master (if not - rebase it).
[x] Squashed related commits together.
[x] Added tests.
[-] Updated documentation.
[x] Added an entry to the CHANGELOG.md if the new code introduces user-observable changes.
[x] The build (bundle exec rake) passes (be sure to run this locally, since it may produce updated documentation that you will need to commit).

Should we add autocorrect expectations too?

Should we add autocorrection expectations too?

That's true. Thank you! Added autocorrect expectations.


(dos) Only the first line of REM highlited

Describe the issue
The comment lines of code block that marked as language-cmd is not highlighted correctly. Only the first line begin with REM is highlighted, others are not.
Which language seems to have the issue?
Batch file (DOS) version 11.7.0
Are you using highlight or highlightAuto?
No, I use hljs.highlightAll()
...
Sample Code to Reproduce

REM get lists of cudatoolkit version
conda search cudatoolkit

REM get lists of cudnn version
conda search cudnn

REM get lists of tensorflow-gpu
conda search tensorflow-gpu

Expected behavior
All lines that start with REM should be highlighted as comments
Additional context
:: is also a comment line in windows batch file, but it is not supported in this version.

#3733

Can't reproduce on latest master in our dev tool... works as expected.

OK, it seems something broken my environment.

So, what about to support :: as comments ?
Should I raise another feature request?

I do some research and testing on the cmd file.
And finally know what's wrong with the regex of the COMMENT:

The problem it won't work with the line-number plugin comes from the \s.
It's short for [ \t\n] but this case it should be [ \t].
the REM can be in middle of a command line leading with a & (and operatior)

So, with adding the support of :: as comments also, finnally the regrex goes to
/^[ \t]*@?(rem\b|\:\:)|(?<=\&[ \t]*)(rem\b|\:\:)/
and rem can be removed from the built_in.

It's short for [ \t\n] but this case it should be [ \t].

Technically, but it's too wide a match, not too narrow - so how does that cause the issue again?
You can't use look behind - not supported by ALL modern browsers yet.  You might need to try a multi-matcher:
https://highlightjs.readthedocs.io/en/latest/mode-reference.html#beginscope
{
match: [
  /&\s+/,
  /rem\b.*$/
],
scope: {
  2: "comment"
},
}

Or if you wanted to further maybe we classify & as operator... can't the "either" be moved into the first part of the matcher?

It's working now in Release 161 of Safari Technology Preview

So it finally has almost landed, but still it'll be some time before we can consider it "safe" to use.

Technically, but it's too wide a match, not too narrow - so how does that cause the issue again?
Use \s makes the 2nd (and followings) COMMENTS contains a \n at 1st character.  That's why line-numbers plugin fail.

You can't use look behind - not supported by ALL modern browsers yet.
I check https://caniuse.com/js-regexp-lookbehind it's now only IE(PC) and Opera Mini (Mobile) not support it. Does hljs still support these 2 clients ?

You might need to try a multi-matcher:
I'll try ASAP.

Or if you wanted to further maybe we classify & as operator... can't the "either" be moved into the first part of the matcher?
That will be verry good. Will it take a long time?

Use \s makes the 2nd (and followings) COMMENTS contains a \n at 1st character. T

You mean as part of the match?  Like this?

REM get lists of cudnn version
conda search cudnn

Visually that shouldn't matter...  our policy has slowly grown more lax on these matters (extra space) such that now we often favor simpler regex vs precise matching - as long as the visual output is correct.  There are likely hundreds of places we use \s (for convenience) when [ \t] is likely what is meant.  Just usually it doesn't matter.

Now only IE(PC) and Opera Mini (Mobile) not support it.

The latest release of Safari (16.3) also does not support it.  And even after support is added to Safari we'll have to provide some lag time for people to upgrade to the newer OS, etc... probably not less than a year... so negative look-behinds are still +1 years away at least.

Will it take a long time?

I'm not sure what you mean, I was referring to simplifying your regex.  Now you have:
(A OR B) where A and B are both complex regex
But you should remove the duplication such that you only use an or in the last part of the match.
(prefix)(suffix A or B)

I've modify codes for comments as follow, and test it on PC and iPhone.
Did I do it right?
I feel there's something can be improved about the regex.
Any suggestion?
    const COMMENT = [ {
      beginScope: { 1:'operator', 3:'built_in', 4:'comment'},
      begin: [
        /\&[ \t]*/,
        /@?[ \t]*/,
        /rem\b/,
        /.*$/
      ], relevance:10
    }, {
      beginScope: { 1:'operator', 3:'comment'},
      begin: [
        /\&[ \t]*/,
        /@?[ \t]*/,
        /\:\:.*$/
      ], relevance:10
    }, {
      beginScope: { 1:'operator', 2:'built_in', 3:'comment'},
      begin: [
        /^[ \t]*@?[ \t]*/,
        /rem\b/,
        /.*$/
      ], relevance:10
    }, {
      beginScope: { 1:'operator', 2:'comment'},
      begin: [
        /^[ \t]*@?[ \t]*/,
        /::.*$/
      ], relevance:10
    } ]

^[ \t]*@?[ \t]*/

This is likely a security issue, since if the @ isn't present it can run away and parse a sequence of spaces an infinite number of ways.
You need to handle each case separately:
regex.or(/^[ \t]*/, /^[ \t]*@[ \t]*/ )

Ping.

Closing for inactivity.


FeedbackChallenge : Artificial Intelligence/ML API

FeedbackChallenge : Artificial Intelligence/ML API
In the spirit of Project Catalyst's #FeedbackChallenge we are assessing to what extent the Catalyst Funding Process and it's Proposals are open source as part of the proposal Quality-Assurance-DAO. Your proposal has been selected because "open source" is mentioned in it's text or comments.
We would appreciate it if you could respond to the following questions (in the reply to my comments below) :

Open - Is your Organisation open-source ?

Yes, our company build our product around the idea that the community can help to improve it. With that, we release our source code as open source and labelled our robot as an open-source product. This is evident in all our literature from the very beginning.

Accessible -  Can community contributors issue pull requests or raise issues on your source code ?

Yes, the community can put in request and report issues on our GitLab page. The link as follows: https://gitlab.com/thecorpora/QBO

Transparent - Can community contributors access and propose changes to the source text of your documentation ?

Contributors can access to the latest changes of the code at GitHub. The link as follows:- https://github.com/OpenQbo

To keep the assessment transparent each comment is recorded as a GitHub Issue on Quality-Assurance-DAO's proposal repository (Apache-2.0 License) where a more detailed explanation can be found.
Together we can build a community of open source contributors on the Cardano platform.
Thank You
Stephen Whitenstall, QA-DAO
Detailed explanation
Your Issue reference includes a more detailed explanation of the methodology of this FeedbackChallenge : Open Source. There is also a Open Source Assessment Project Board and a GitHub bot post Issues in my channel #quality-assurance-dao on Project Catalyst's Discord.
We believe this is important because many developers are concerned with the lack of a clear commitment to open source and fear their free contributions will be locked into a proprietary platform.
Open Source Assessment Method

[x] Draft a basic Open Source Assessment Method.
https://github.com/Quality-Assurance-DAO/DAO-Open-Source/tree/main/Documents/Assessments

Basic Open Source Assessment

Open - Is your Organisation open-source ?
Accessible -  Can your users issue pull requests or raise issues on your organisation's source code ?
Transparent -  Can your users access and propose changes to the source of your organisation's documentation ?

Method

[x] Do text search of "open source" on Catalyst Projects.
[x] Post assessment questions in comments of proposal.
[x] Raise Issue for each proposal's assessment.
[x] Record response to assessment.
[ ] Close Issue once proposal submitted and record responses

Report

[ ] Collate and publish report of findings with a Creative Commons License

(to) swhitenstall

Hi Stephen. Our answered to your questions:

1.- Yes, our company build our product around the idea that the community can help to improve it. With that, we release our source code as open source and labelled our robot as an open-source product. This is evident in all our literature from the very beginning.

2.- Yes, the community can put in request and report issues on our GitLab page. The link as follows: https://gitlab.com/thecorpora/QBO

3.- Contributors can access to the latest changes of the code at GitHub. The link as follows:- https://github.com/OpenQbo

Thank you for your response, Javier Paz (javier.paz) Your response has helped a lot.
I have captured your responses at [ https://github.com/Quality-Assurance-DAO/F5-Developer-ecosystem-Proposal/issues/60 ] and moved the status of the Issue to "Done".
Note : The Issue can still be altered and commented upon via GitHub until Fund 5 Proposals are finalized.
As I set out in the "Detailed explanation" section of each Issue : I will collect all data in a report of findings to be published on GitHub with a Creative Commons License after Fund 5 Proposals are finalized.
Good Luck with your proposal.
Stephen Whitenstall QA-DAO


cmp_client_test.c: add tests for OSSL_CMP_CTX_get_status

This is a follow-up of #19205, adding test cases as requested.

Rebased to fix new merge conflict in test/cmp_client_test.c

Please do not forget to remove tests: deferred from #19205 when this is merged.

Please do not forget to remove tests: deferred from #19205 when this is merged.

Will do, though then the PR won't have any label regarding tests any more.
Yet then adding tests:present also seems not appropriate.

Will do, though then the PR won't have any label regarding tests any more.
Yet then adding tests:present also seems not appropriate.

This is correct. PRs without label, merged after the date this policy change went in, are supposed to have tests present in another merged PR.

@paulidale could you please re-approve.

Why do I keep constantly getting
Vanessa Cataldo
On Monday, November 28, 2022, 8:35 PM, Pauli @.***> wrote:
@paulidale approved this pull request.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: @.***>

24 hours has passed since 'approval: done' was set, but as this PR has been updated in that time the label 'approval: ready to merge' is not being automatically set.  Please review the updates and set the label manually.

Merged to master, 3.0, and 3.1
Thanks @t8m and @paulidale

Please do not forget to remove tests: deferred from #19205 when this is merged.

Done

Please do not forget to remove tests: deferred from #19205 when this is merged.

Done


cli makes troubles with APCu

Hi,
using cli throws an error:
vagrant@typo3-devbox:/var/www/html/master.local.typo3.org$ /opt/php/7.0.5/bin/php ./typo3/cli_dispatch.phpsh extbase help
Oops, an error occurred: The APCu backend cannot be used because apcu is disabled on CLI.

anything I am doing wrong?

This is a TYPO3 configuration problem. Easiest solution is the following snippet in AdditionalConfiguration.php:
if (PHP_SAPI === 'cli') {
    // cache config for CLI here
    $GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['extbase_object']['backend'] = \TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend::class;
}


docs(design-land): add documentation for sizeable buttons

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/graycoreio/daffodil/blob/master/CONTRIBUTING.md#commit
[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[x] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?
No documentation for sizeable buttons.
Fixes: N/A
What is the new behavior?
Written documentation for sizeable buttons.
Does this PR introduce a breaking change?
[ ] Yes
[x] No

Other information

The app isn't working for me. Does it work for you?

@lderrickable I have no problem viewing it. Try building design and dgeni-tools?

Oh, yea I guess I had to build dgeni tools maybe. The docs look really good


Avoid accessing java service interfaces in backbox tests

This is in preparation to running test Stargate nodes in forked JVMs

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 1

Clones added
============
- testing/src/test/java/io/stargate/it/http/RestApiTest.java  1
- testing/src/test/java/io/stargate/it/http/GraphqlTest.java  1

See the complete overview on Codacy

CI fails beucase of timeouts :( I guess I have to increase them... :hourglass:

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 1

Clones added
============
- testing/src/test/java/io/stargate/it/http/RestApiTest.java  1
- testing/src/test/java/io/stargate/it/http/GraphqlTest.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 1

Clones added
============
- testing/src/test/java/io/stargate/it/http/RestApiTest.java  1
- testing/src/test/java/io/stargate/it/http/GraphqlTest.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 1

Clones added
============
- testing/src/test/java/io/stargate/it/http/RestApiTest.java  1
- testing/src/test/java/io/stargate/it/http/GraphqlTest.java  1

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 2
- Added 1

Clones added
============
- testing/src/test/java/io/stargate/it/http/RestApiTest.java  1
- testing/src/test/java/io/stargate/it/http/GraphqlTest.java  1

See the complete overview on Codacy


Test unsupported features

Sits on top of https://github.com/adsharma/py2many/pull/186 and https://github.com/adsharma/py2many/pull/185
TODO:

Remove extra ';' added to nim

The output of the unsupported skips is often quite ugly.  This can be fixed quite easily by detecting and raising NotImplementedError, or by fixing them of course.

Do you know if the regression in CI runtimes is caused by something in this diff stack or something happening on github backends? 25 mins for mac/windows seems high.

11 mins for invocation of tox on Ubuntu.

Also number of tests increases from 207 -> 389.  Coverage increases 2%, with non-branch missings going from 930 to 820; py2many/declaration_extractor.py coverage goes from 66% to 82%

Ah I see. Gives us an incentive to fix all those cases so the tests will be faster :)


[Impeller] Batch TextFrames for multi-line text

Right now if you write multiple lines of text with the same font, they end up as 2 different draw calls.  It would be more efficient to draw those line in one draw call.

Is batching actually going to improve GPU performance? Vulkan/Metal should easily be able to handle 1000s of commands. And even in complex cases we seem to top out in hundreds.

Is this going to help CPU time? If so, is this due to extra time we're spending constructing command objects or allocating that could be made more efficient instead?

Yes, it should improve GPU performance.  How much is hard to say.  When making a game a big part of gpu performance is trying to get as many batched draw calls as possible.
I'm not sure if we are making a glyph atlas per frame or per TextFrame.  If are currently doing an atlas per TextFrame, it will be more efficient having a TextFrame for the whole batch since letters that appear in multiple lines wont' be represented more than once.  More efficient packing leads to better performance too.
CPU time, I would expect it to be roughly the same amount of work.

I measured this by rendering the text "Lorem ipsum dolor" horizontally (one TextFrame) and vertically (17 TextFrames) and profiling the frame capture.  The one TextFrame performed about 17x faster as expected.
horizontal

vertical

Here is a frame rendered of the Flutter gallery too.  Notice that we are spending about 5x time on the GPU versus the CPU so optimizing the GPU work makes sense even if it takes a couple of more CPU cycles.

Every call to render a TextFrame also is binding a new descriptor set.  The vertex buffers will bet different between them, but the texture (the glyph atlas) will be the same.  It may be faster to use vkUpdateDescriptorSets to bind the new vertex data instead of binding a whole new descriptor set?  The PassBindingsCache is able to cache many things but descriptor sets is one thing it doesn't do.

I tried to expand the PassBindingsCache to encompass the descriptor sets too so we could avoid rebinding them between calls of TextFrame like we do for other bindings.  The problem is that between multi lines of text the Binding::vertex_binding's BufferViews are not the same.  They are pointing to the same Buffer, but their ranges are different and ranges are incorporated in the descriptor set, so it can't reuse the previous binding.
It will take some reworking to make PassBindingCache work with this.  I'm not sure that effort would be better spent batching the TextFrames at the higher level instead of the PassBindingsCache level.  I suspect it is.  PassBindingsCache would only make sense to pursue if it was an easy fix.

If we are drawing with the same buffer each time we could also look into dynamic uniform buffers (https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdBindDescriptorSets.html).  Since rendering with the same descriptor set modulo the offset is somewhat extraordinary, I think that refactor would probably not be worth the effort.

From what I've read, it's recommended that the resources used by your shaders are actually split into multiple descriptor sets based on usage. For example, in the first descriptor set place resources used by all shaders. Then in the second, more common resources, and finally shader specific resources.
I don't think this pattern is easily adoptable for our rendering setup given that most bindings are unique. We could cheat a little bit with the glyph atlas and bind it to its own descriptor set, I'm not sure how much that would actually buy us though.
If it's easier to batch text frames, and the logic to do isn't too cumbersome, that seems like it would be a better approach?

If it's easier to batch text frames, and the logic to do isn't too cumbersome, that seems like it would be a better approach?

Yea, that's what I'm thinking too.  I was just hoping maybe there was something we could do at the PassBindingsCache layer to get 90% of the benefit for 10% the effort.

I have a draft that is starting to do the batching: https://github.com/flutter/engine/pull/44656
The approach I'm taking is to have the Canvas store a pointer to the last TextContents it added to the RenderPass.  If when adding a new TextFrame if it's being painted with the same color, just add it to the existing TextContents.
I didn't have a chance to finish the job since I was running into some weird behavior with TextContents::SetOffset where it seemed to work fine for small numbers, but not large numbers.
I was able to verify that Gallery will hit and benefit from this.
One choice we had to make was to do the batching in the Display List Dispatcher or in the Canvas.  I opted for the Canvas since that was what we did for the clear color optimization too and it's easier to test at that level.

The text color is already stored per vertex I think, so we could actually combine multiple contents with different colors as long as we adjusted the Text contents API. That said, you'll need to avoid combining text contents that sample from a different atlas (full color like emoji vs alpha bitmap)

We don't actually need a new descriptor set per command - we can split each cmd up into multiple descriptor sets like a described. There is support for a "dyamic offsets", so all uniform buffer bindings can be the same.

I've implemented the batching but I couldn't get it to show positive results in our benchmarks.  The batching had little to no effect in https://github.com/flutter/engine/pull/44814.
I'm guessing the cpu work offset gpu savings.


Cleanup: Add reference to form in HTTP API Boosters

@heiko-braun @cescoffier @ALRubinger mind taking a look and giving a +1?

Merged: https://github.com/openshiftio/appdev-documentation/commit/8249fef256dda9c603c0b1f9ddb0b16feb02a4ed


Added Cyber Threat Hunting

Hi,
Stjepan from Manning here. I thought this title might be a good match for your list. Thank you for considering it.
Best,

Thank you.
Best,
On Thu, Sep 29, 2022 at 2:09 PM Daniel Romero @.***>
wrote:

Merged #63 https://github.com/infoslack/awesome-web-hacking/pull/63
into master.
—
Reply to this email directly, view it on GitHub
https://github.com/infoslack/awesome-web-hacking/pull/63#event-7486136187,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANDIEMPMKUQG6PTBOZQUA53WAWBHJANCNFSM6AAAAAAQYQVJ6U
.
You are receiving this because you authored the thread.Message ID:
@.***>

--
Stjepan Jureković
Manning Publications - Marketing
@.***


[DRAFT] Use Ginkgo Ordered tests to avoid repeated test setups

This is a WIP PR to test out the approach & allow for discussion. It isn't intended to be merged as-is.
If we were to adopt the approach, we would likely want to move the
spaceDev and spaceMgr client setup into the BeforeSuite and move the
role setup into the createOrg and createSpace setup calls so that we
don't have to do it in individual tests.
Applying these changes reduced the overall run time for the 5
affected tests from 3m34s to 1m12s, since we only create one org, one space, one app.
In other test scenarios where we are creating or modifying objects, we would need to be more careful about teardown, since we're using the same space across tests.

@georgethebeatle @matt-royal @kieron-dev @gcapizzi
[#705]

Overall looks good, but we are a bit concerned about the Ordered constraint that comes with BeforeAll. If we assume this strategy then the --randomize-all flag that we pass to ginkgo will be meaningless. By not running tests in random order we might introduce undesired order dependencies due to shared state.
Currently we are trying to write tests in relative isolation (each It gets a new namespace). After this change all Its in the Describe would run in the same namespace which might lead to pollution/flakes. On the upside though they will run faster.
Maybe we can experiment with this and see if it causes problems and adopt it more widely if it doesn't... Wdyt?

I'm going to close this PR, since I think we don't want to take this approach unless we absolutely have to, as it will make our tests brittle.
Speeding up org and space creation in the product itself seems like a much better way to may the e2e tests less painful.


Closes spinscale/dropwizard-jobs/#18

A few things:

build/plugins should be build/pluginManagement/plugins.
removing unnecessary UTF-8 config in compiler plugin declaration
keeping target on 1.7 (compatibility) but source on 1.8

Thanks.


Line numbers, or some kind of pinpointing info when getting errors

Hello,
Whenever we have some kind of error using RX, it is very hard to pinpoint the problematic line, or observable. In large scale apps, with tens of observables this is a lot harder.
This is a very simple example, but imagine having an error like that somewhere in a very nested observable hierarchy:
const timerOne = Rx.Observable
                .interval(1000)
                .map(x => x + 1)

const timerTwo = Rx.Observable
                .interval(1000)
                .map(console.log)

const timers = Rx.Observable.merge(timerOne, timerTwo)

timers.subscribe(::console.log, ::console.log)

Looking at the error have no clue where it is coming from:

@omerts in the example given, you can see that the error occurred in the MapSubscriber. That's the workhorse for the map() operator. The specific scenario you used to cause the error would be particularly problematic to provide "pinpointing" as you've requested because you're passing console.log unbound straight in as the projection function to map(). If you were to pass a named function in that threw the error, it would be easier to read the call stack, and the error would occur in your code.
const log = console.log;
someObservable.map(function logData(x) { log(x) };

In this case, you'd say logData at the top of your call stack, most likely.
As for the call stack you're showing, it reads very cleanly compared to prior art, but it's something you need to learn to digest:

A Scheduler scheduled a FutureAction, so that means something that's happening at a later time, (perhaps delay, timer or interval?). If you want information about what happened before that, you'll need to check the async checkbox in chrome debugger.
That action invoked a mapping operation (MapSubscriber.next) and I didn't hit user code, but there was an "illegal invocation" so I can bet that someone handed map a projection function that got detached from it's parent native object and lost context.
99% of the time "illegal invocation" comes from misuse of console.log without binding it (console.log.bind(console)), but sometimes it comes from other native calls.

... so I'm probably looking for a call like map(console.log).

@omerts do you have any specific ideas or suggestions on how you'd improve the error information? Ideally, this issue would have something actionable to it that we can work on to close the issue.

@blesh, thanks for the detailed answer.
It seems like we have to take heuristic measures to debug, which could be quite simple for the above scenario, but for scenarios where we have nested observables (with combinLatest), and one of them down the line is throwing an empty error, it is much harder to make an educated guess where it might be coming from, or why even we are having an empty error.
I have no clue how this library is implemented, and I presume getting line numbers, and a better stack trace is impossible, but some way of knowing which observable is the problematic one would be great. Maybe even, make the rx api get an observableId as a last argument, and this id would be used when throwing exceptions.

One idea is to dynamically add some instrumentation and provide some sort of tooling to visualize what's going on in the observable. There are some projects in the pipeline at Netflix, but I couldn't begin to estimate a delivery date.

closing as inactive.

@benlesh I'm still pretty interested in this. Is it possible to have console.log or whatever appear in the stack trace, or somehow artificially insert an entry for the call site?


update dependencies

Description
Updated dependencies for stm32f4xx-hal and smoltcp

I've also approved CI runs for this PR, and as you can see there are a few failures. Please review them, though I'm fairly certain most will be resolved when the dev-dependencies version of smoltcp is also updated correctly.

Huh, weird... Seems like re-exporting ETHERNET_PTP without the PTP feature is giving some troubles now. I will fix that in #93.

Merged #93, which should fix the remaining CI failures. Please rebase :)

Thank you for your contribution. Released in v0.6.0


Fix for issue #3

Let's try to change sqla. default column size (permission) to 255.
Same size already specified in ext.pony (line 104).

peewee extension does not have this problem by default size = 255


feat(form): add support for ChoiceType

Description
Hi everyone 👋🏻
Is there any roadmap for a support of "search" in a form type?
What I mean by that is being able to create a custom form type that display a ChoiceType (or even in the SearchType) which use the Engine to display choices?
Thanks again for the feedback 🙂
Basic example
Small example outside of this bundle: https://github.com/Guikingone/MeiliSearchBundle/blob/master/src/Form/Type/MeiliSearchChoiceType.php

Hello @Guikingone!
Nothing is planned for the moment, so every suggestion is appreciated 🙂
I'm not a Symfony user, and no one is at Meili for the moment, so can you describe how the usage would change compared to the current one we have (cf our wiki)? Or is it just a feature addition?
How can we use it? 🙂

Hi @curquiza 👋🏻

so can you describe how the usage would change compared to the current one we have (cf our wiki)? Or is it just a feature addition?

It's a feature addition
Advantages:

Use indexes and documents inside a form to display choices and speed search experience (when using SearchType)
Being able to create form that use MS without pain as a default type handle the configuration and results.
Allow to create a complete "search experience" without pain and a "deep" Symfony integration

Disadvantages:

Inject the SearchService into a type (which lead to a relation between the search experience and the Symfony architecture)
The error handling must be done in the type, so if MS fails, the form will too.

There might be some edge issues that I don't have in mind but IMHO, the feature could be interesting 🙂

As I'm not a Symfony user I cannot tell if it's worth it to add it, I mean if the pros neutralize the cons! 🙂
Maybe @codedge you have an opinion on it? 😇
Also, if someone around here is from the PHP/Symfony community and read this issue, feel free to comment and give your opinion.

Hi, I recently began to use meilisearch (for now directly with the php lib) and for POC/basic usage
I plan to integrate it inside a symfony project and thus checked this lib
I think this symfony lib could indeed leverage this kind of code but not activated by default, and let ppl activate it if needed
Also, It could be great to have some others symfony components like messenger for async update, data collector to see the underlying MS requests, and maybe some views (twig/ux) logic to ease the frontend integration
Those are just ideas on the go :)
Cheers!

@94noni I fully agree for both Messenger support and DataCollector support 🚀

@Guikingone Anything that speaks against using your custom form type https://github.com/Guikingone/MeiliSearchBundle/blob/master/src/Form/Type/MeiliSearchChoiceType.php from being used here? I mean could you create a PR?

Hi @codedge 👋🏻
For now, I prefer to talk about this idea and see if the bundle can benefit from it, If there's a consensus about the feature, I could easily create the PR to see if it fit technically 🙂

If you, as symfony users, think think it's a good idea, let's start this! :)


crypto.constants are missing

According to https://nodejs.org/dist/latest-v6.x/docs/api/crypto.html#crypto_crypto_constants I should be able to use crypto.constants.RSA_PKCS1_OAEP_PADDING with privateDecrypt.
Instead of using the constant I used it's value (4) instead and it works fine.
For now this includes only the constants of Other OpenSSL Constants

sigh the tests are failing but it's not your fault will look into, either today or tommorow