Malware found inside of the 1-click installer?

I just paid the $5 for the 1-click Windows installer, but Windows Defender is detecting the trojan win32/detplock. Is this is a false positive?

Hi, thank you for your support, sorry for the late reply.  The Lama Cleaner 1-click installer depends on mainstream Python packages, and I haven't received any other reports about this situation.
To be honest, I'm not sure why Windows Defender would alert you. If you have any concerns and want a refund, I'd be happy to help. You can contact me for a refund through my email (cwq1913@gmail.com).

hey guys my hitmanpro scan (Sophos antivirus that got renamed to HitmanPro) shows this, what does the npps64 do, which library is it part of? could be a false alarm?

here's more detailed info:

for now deleting it, and will reinstall later when I need it again (this is an old installation from about a year ago, I have bitdefender and it never complained about it, but Sophos does), a bit strange, but I suggest you scan the builds you create - because if one of the libs you included gets compromised and you don't know about it, you might actually upload a malware without knowing at all, so please throw the binaries into VirusTotal online scanner once, before releasing, for extra safety :P


My Issue , fix it.

Issue/Feature Description:
Why this issue to fixed / feature is needed(give scenarios or use cases):
How to reproduce, in case of a bug:
Other Notes /  Environment Information: (Please give the env information, log link or any useful information for this issue)

100%

thanks man

close your issue


EXCEPTION_ACCESS_VIOLATION

Question

Context
Java version:

Your operating system and platform:

Log -

A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ffd5d50c817, pid=908, tid=14444

JRE version: OpenJDK Runtime Environment Temurin-17.0.4+8 (17.0.4+8) (build 17.0.4+8)
Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.4+8 (17.0.4+8, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
Problematic frame:
C  [lwjgl_opengl.dll+0xc817]

No core dump will be written. Minidumps are not enabled by default on client versions of Windows

If you would like to submit a bug report, please visit:
https://github.com/adoptium/adoptium-support/issues
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

---------------  S U M M A R Y ------------
Command Line: -XX:+ShowCodeDetailsInExceptionMessages main.Main
Host: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz, 4 cores, 7G,  Windows 11 , 64 bit Build 22000 (10.0.22000.2538)
Issue Files (resources, libraries and source along with the log file)  -
Issue.zip

@AsherJoju Please update to 17.0.9 and report back here if the problem still persists.

hi i am new to all of this but I am having the same issue.
A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007fffe82259f0, pid=6092, tid=22588

JRE version: OpenJDK Runtime Environment Temurin-21.0.1+12 (21.0.1+12) (build 21.0.1+12-LTS)
Java VM: OpenJDK 64-Bit Server VM Temurin-21.0.1+12 (21.0.1+12-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64)
Problematic frame:
C  [atio6axx.dll+0x1759f0]

No core dump will be written. Minidumps are not enabled by default on client versions of Windows

If you would like to submit a bug report, please visit:
https://github.com/adoptium/adoptium-support/issues
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
any help maybe with solving this problem would be awesome!

@Armazone1 I've moved your comment to a new issue (its different)


Revert

There should be a revert button

There should be a revert button

Reverting isn't as simple as just a button. Unfortunately windows does not have a boolean state system. This means we'd have to store both the desired state and its previous state each time before running. This would become incredibly problematic to manage, especially accounting for users who may run the script multiple times. So unfortunately we don't see a "revert" button as a feasible option both now and in the future.
The script does capture a restore point prior to running however.
Please refer to Microsoft's documentation on the matter if you're unaware how to perform a system restore
https://support.microsoft.com/en-us/windows/use-system-restore-a5ae3ed9-07c4-fd56-45ee-096777ecd14e
If you're having any specific issues however, we'd be glad to discuss and help you fix them. Please just update us here.

@flairlysea
Any updates?
If not, we're going to mark the ticket as closed. Please respond.

A revert does not necessarily need to be a toggle. You can have both options. A revert could be just to apply values that are the default.
You could still get each value from the changed ones, as to revert only them to default value, but still, it's a choice. I suppose having a place like a json with changed value and default value or whatever, could be another option.

It make sense, regardless, it was a choice to do or not.


Fail on startup for Http/2 HTTPS on Windows 7

Following up on https://github.com/aspnet/AspNetCore/issues/11061. We should also fail fast on Windows 7 where there is no ALPN support.
As a further consideration, is the platform the only way to determine ALPN support. How would this work on Linux?

cc @shirhatti

We'll talk about this in triage, rather than assigning it to me :).


Double index lookup in tasklet breaks under simplification

The following small graph with a indirection (double index lookup) in a tasklet breaks under simplify passes:
import dace

sdfg = dace.SDFG('test_')
state = sdfg.add_state()

sdfg.add_array('A', shape=(10,), dtype=dace.float64)
sdfg.add_array('table', shape=(10, 2), dtype=dace.int64)
sdfg.add_array('B', shape=(10,), dtype=dace.float64)
sdfg.add_scalar('idx', dace.int64, transient=True)
idx_node = state.add_access('idx')
set_tlet = state.add_tasklet('set_idx', code="_idx=0", inputs={}, outputs={"_idx"})
state.add_mapped_tasklet('map', map_ranges={'i':"0:10"}, inputs={'inp': dace.Memlet("A[0:10]"),'_idx': dace.Memlet('idx[0]'), 'indices': dace.Memlet('table[0:10, 0:2]')},code="out = inp[indices[i,_idx]]", outputs={'out': dace.Memlet("B[i]")},  external_edges=True,
                         input_nodes={'idx':idx_node})

state.add_edge(set_tlet, '_idx', idx_node, None, dace.Memlet('idx[0]'))

Namely, the indirection gets moved to an edge (the subset reading "A[indices(i, 0)]") by simplification which is not a valid subset.

I looked into this issue and I believe this is due to the following behavior:
from dace import symbolic
symbolic.pystr_to_symbolic("a[i]").free_symbols
# gives {i}
symbolic.pystr_to_symbolic("indices[i,_idx]").free_symbols
# gives {_idx, i}

With the given tasklet code:
out = inp[indices[i,_idx]]

This means, that DaCe thinks the expression indices[i,_idx] is independent of indices. Because i and _idx are given earlier, DaCe pushes the expression indices[i,_idx] (incorrectly) into the memlet.
I think we want a behavior such that:
symbolic.pystr_to_symbolic("a[i]").free_symbols
# gives {i, a}

I am currently looking into how to best implement this. There is a risk that changing this could break other parts of the codebase...

Since the issue only happens during simplification, and the only pass that creates such memlets is ScalarToSymbolPromotion, shouldn’t it be there? Specifically TaskletIndirectionPromoter should avoid promoting expressions that will make invalid symbolic expressions, e.g., containing an ast.Subscript in this case (but there may be other invalid cases?).

What is considered a valid symbolic expression? And what is considered a valid expression for a memlet?
I guess for memlets the expressions are constrained to dace.properties.SubsetProperty?
For symbolic expressions, it's determined by dace.symbolic.pystr_to_symbolic?
Because both seem to allow the double index currently. Or at least neither give a validation error for a double index expression.

A symbolic expression is a combination of symbols and operations on those symbols. The operations are arithmetic or logical unary/binary/ternary operators on those symbols, or a set of predefined math functions in SymPy (i.e., ones that have a set of identities that can be used to simplify them) on those symbolic expressions. Array accesses and attribute queries are not considered symbolic expressions (as arrays/data containers are not symbols).
A memlet must have a single data container it's accessing and one or two subsets (which are symbolic expressions as per the above definition).
Inter-state edges extend this definition lightly (because they can access data containers), and they can also involve array accesses (defined as the array name becoming a function call, e.g., A(i, 8*j+2)) as well as attributes (Attr(A, 'x')). The reason we did that was to allow us to simplify expressions in the inter-state edges. I am not entirely sure this is necessary at all.

For the last point, if validation doesn't fail on bad expressions, it should.

I am currently testing this solution: #1406

Properly fixing this issue requires changes/improvements for querying symbols in symbolic expressions. However, that is currently not working well and would likely require substantial work (see #1417).
Additionally, validation is missing a check for this bug. I am tracking this here: #1418
Splitting these tasks allows us to focus on a practical work-around for now (likely #1406).


Is This Usable Yet?

Hi I stumbled across this project while searching for a calendar bot for my discord server. It sounds just like what i need. Is this usable yet? and if so are there any instructions you have for setting it up?

@Teutonic84 Unfortunately, I've really just started working on this.  If you are still interested I can publish what I have.  My beta ETA is Early April.


Fix some spelling errors

thanks for making sense of my ramblings :)

No problem!  Super readable and interesting :)
Are you interested in a few minor wording / clarification ideas as well?


Pass RouteSettings into all callers of showGeneralDialog.

Description
NOTE: this is a recreation of @hpoul's #38631, as I wasn't able to push changes to that branch and the author appears to have moved on.
Original description:
Right now there is no way to customize the RouteSettings when using the showDialog functions. I can't think of a good reason to omit this, since it's pretty useful for e.g. analytics to track page names.
Related Issues

#31261

Tests
I added the following tests:

added test for showDialog to demonstrate how it is passed to the NavigatorObserver

Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
[x] I signed the [CLA].
[x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
[x] I updated/added relevant documentation (doc comments with ///).
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze --flutter-repo) does not report any problems on my PR.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require Flutter developers to manually update their apps to accommodate your change?

[x] No, this is not a breaking change.

Looks like you need to git rebase -i master or something, and squash your commits before the CLA bot will be happy.

Looks like you need to git rebase -i master or something, and squash your commits before the CLA bot will be happy.

Yup, I just rebased everything and it should be good now.


⚠ Bofrost.at has degraded performance

In b1937f4, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1412 ms

Resolved: Bofrost.at performance has improved in 5d755c6 after 18 minutes.


[Bug]: Inconsistent Card Design

Describe the bug
The content of one card does not align with the content of the other cards. As you can see in the below screenshot, the Take Me buttons in the cards are positioned inconsistently and they are not in a straight line, which affects the UI impression.
Steps to reproduce the behavior

Go to https://amazing-python-scripts.pages.dev/scripts
See the bug

Expected behavior
The content in the cards should be aligned properly and they need to be in a straight line. This way, the UI will look much nicer.
Screenshots

Device?
Desktop
Which OS are affected?
Windows
Enter the version of your web browser
114
Which browsers are affected?
Chrome
Additional context
It will look like this or even better:

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

Go Ahead @Sriparno08

Closed in commit 9eb5956


Update CO2 cycle

revised CO2 cycle in line with the latest multi-model assessment of the atmospheric CO2 response function

This is done in PR #24 .


Normalize response

Hi Guys,
I like the decent simplicity of this module but I wonder if it's possible to get a normalized dataset between the providers like
first_name
last_name
etc..
Instead of all different outputs per provider.
Thanks for the effort so far!

Do people not care about simplified and normalized output like HybridAuth does ?

OAuth 2 doesn't specify any user data returned from the providers at all. It doesn't define an API or user resources. It only defines authorization, and it's only a framework and not a hard specification, at that.
league/oauth2-client focuses only on RFC 6749 and not the data various providers return. We aren't able to do any normalization of data. Sorry.


Sending logs securely to Logit.io

Made editorial changes to this manual including organisation, headings. Please review and comment.

Amended as per @philandstuff @samuelhwilliams comments.


CIP-???? | Constitution specification

This proposal aims to describe a standardized technical form for the Cardano constitution.
Hoping to enhance the accessibility and safety of the document.

📄 Rendered proposal

Maybe we can have the number 1215 to represent the date of the Magna Carta was signed 🥺

add note on no emojis / UTF8

When I created a mock document I didn't realise that the 80 char per line limit was inclusive of spaces.

When I reach the 80 character limit for a line, and the next character is punctuation, should I put the punctuation and whatever follows on a new line, or should I also include the word proceeding it in the newline also?
e.g.
This is a long sentence and I have valid reasons for it being so long, super big
, as being an example of a long sentence.

or
This is a long sentence and I have valid reasons for it being so long, super
big, as being an example of a long sentence.

@Thomas-Upfield

When I reach the 80 character limit for a line, and the next character is punctuation, should I put the punctuation and whatever follows on a new line, or should I also include the word proceeding it in the newline also?

a maximum of 80 characters per line
so it should be on the following line

yes @Ryun1 @Thomas-Upfield and I think it goes without saying that the text must be grammatically correct in the target language: which it isn't (in English & in general) if the punctuation after a word is orphaned from that word.

@Thomas-Upfield

When I reach the 80 character limit for a line, and the next character is punctuation, should I put the punctuation and whatever follows on a new line, or should I also include the word proceeding it in the newline also?

a maximum of 80 characters per line so it should be on the following line

ok cool, that's the common sense approach,  just making sure.

My 2 lovelace.
80 characters is a limit, but you don't have to try and always hit it right at 80.
Legibility should also be in one's mind.  So from your example, I would have written it like so:
This is a long sentence and I have valid reasons for it being so long,
super big, as being an example of a long sentence.

I.e., step back from 80 to the cleanest break (in this case the preceding comma) and break there.
It should also be considered that the 80-character limit also helps one find run-on sentences.
If your sentence is much longer than 80, it might need breaking down.
And you should never want to see a sentence that's over two lines long in normal text.
One sentence max per line and character limits also help to make it easier to identify revisions in the document.
The theory here being, breaking on the earlier comma is likely to be breaking on an "idea".
So it's less likely a future edit needs to spill into the next line.
You have also left a little space in case you need to add something to the statement later.

With 5c2143f I have included your suggestions @Thomas-Upfield @stevenj 💪

@rphair
I have tided up all loose ends/comments, and added some fun test vectors.
I have forwarded this proposal to a few stakeholders for a final review.

Just popping in to suggest the entire document could (and should be) stored onChain as well.
If the text gets longer than 16kb as an array, just continue it on another token and link from the asset to the subsequent one.
For example, here is an onChain reading of the Ergo Manifesto, whose full text is preserved on the network
https://pool.pm/asset13wmugsz896ah40r7kmsr8r8d9e8z0yzfj0pw9y
Will be fun to make this for the Constitution. And I assume some fun book-io versions as well 🥳

@getnood
This is super cool, I didn't know about this.
is this method of chaining all the metadata together through multiple tokens, standardised at all?
I would fear that this could add a decent chunk of complexity in reading and writing the constitution, as well as doing a correctness check.
Although I do agree keeping it onchain is a really nice thing, to be able to do.

Sweet! Yeah it's super fun to make tokens connected to other tokens. There's no set standard for how to compose those connections, and I would assume a different approach from different creators depending on what they're doing. But here's some more examples:
This is a "collection token" that references all of the NFTs from a single collection (policy ID): https://pool.pm/asset1vdg65fezc5crtyhvt47n0gwvul94u2r74dhasa
Here's another fun example where a fungible token is made like a link tree to a bunch of different NFTs, and each of those NFTs are an index of other NFTs inside of a wallet: https://pool.pm/asset1xzw2algyy50t8x7f4mpg20tem33xemvm6rystq
( I still need to finish all the links/contents on the second example, but you can get the idea)
I think there's lots of creative ways to use connected networks of native assets on Cardano like this. Using CIP68 approaches also further expand the creative possibilities for what an individual, project, or organization might do

@getnood
Id love to collaborate on a competing proposal to CIP-120, which focuses on chaining metadata across tokens (may or may not have to be constitution specific).
How such documents can be written and read from chain would be super useful.

Heck yea can't wait to hear those ideas! Have been making tokens that reference tokens for like 3 years, and with exception to CIP69, is the first time the topic got interest. Stoked!

Although this standard is already being followed by the interim constitution
I dont see a rush to merge
Id like to keep it open, pending the constitutional workshops happening over the coming months
If new ideas arise with big changes I will merge this version as a V1 and work on a V2
Otherwise Im happy to add small tweaks to the current version

📣 Call for final comments
With the drafting of the delegated endorsed constitution document at the Constitutional Convention now complete.
I think it would be a good time to close this proposal out for now, as it is unlikely we will see any significant changes beyond this point.


Sorry for  trouble you again

I apologize for the trouble I may cause you. But if I want to execute some commands, such as create the directory it  return "HTTP ERROR 500" even if  I can get the list of available libraries successfully .

Hello cjforzero, it's no trouble at all... if you could provide some more information such as

Which call are you making?
Do you have permissions to create a new directory?
Do you have permissions to read the directory?
Does the Seafile server work OK otherwise?
Did you obtain an API token from the server and has it been stored correctly?
Which branch or tag of the Seafile-PHP-SDK are you using?
Which PHP version are you using?
What is the version of the Seafile server you are using?
Is OS you are using Seafile-PHP-SDK on 32 bits or 64 bits?

Regards
Rene


human orthologs

Whats the status of human ortholog  name source...I forget where we are.
So,
http://pombase2.bioinformatics.nz/gene/SPAC1F7.14c
has
/controlled_curation="term=human DMAC1 ortholog; db_xref=Pfam:PF15055; date=20161031"
which was fine until recently I think?
Now in the logs as
mRNA SPAC1F7.14c.1: can't find feature for: DMAC1
mRNA SPAC1F7.14c.1: can't find feature for: DMAC1
but
http://www.genenames.org/cgi-bin/gene_symbol_report?hgnc_id=HGNC:30536
(If we don't get from HGNC yet ignore for now)

(If we don't get from HGNC yet ignore for now)

I haven't changed things to use the HGNC directly yet.

ok will ignore this for now. I'm aligning with HGNC. Oddly the ensembl source seems to change somewhat independently of hgnc and newly added or existing names so I often get a bit confused.

see
https://github.com/pombase/pombase-chado/issues/598


Set up regular jobs for parquet export on GCP

We need to set up the parquet export job on GCP properly. This includes a cron job to run it every night. The set up can be similar to our Sourcify Cloud Run job.
We can already start to run the staging export regularly. Production is not ready yet.

Cloud Run jobs and Scheduler jobs have been set up. When #6 is done, I can start exporting staging regularly.

Just created the R2 buckets and updated the jobs. Staging is now exported every day to https://export.test.verifieralliance.org/

https://export.test.verifieralliance.org/manifest.json gives me a 404

This is because the job is still running and didn't complete a full upload yet


Allow the toc macro to be used to position the toc

When the doctype is book, the toc starts on a dedicated page following the title page. When the doctype is not book (e.g., article), the toc is placed in between the doctitle and the body (no new page).
There are cases, however, when the author wants to place the toc in a different location, such as after colophon sections. Asciidoctor PDF should honor the toc macro for this purpose.
As a general rule, the toc still starts on a new page when the doctype is book. But otherwise, it should start at the location of the toc macro when the toc attribute is set to macro.

Hello,
Do you have any news about this feature ?
I'm really interested in it.

You can find my latest comment here: https://github.com/asciidoctor/asciidoctor-pdf/pull/278#issuecomment-521918324

I believe I've figured this one out with PR #1317. I'm sure there will still be some edge cases we're not thinking about, but I should satisfy the typical usage.

Is there support for a "floating" TOC using :toc: left or right, which will be present on every page of the PDF? I'm thinking of something like the Hannover Beamer theme:

This converter will never support a sidebar TOC. If that's a feature you require, you should be starting to evaluate Asciidoctor Web PDF, which supports arbitrary layouts. See https://github.com/Mogztter/asciidoctor-web-pdf

@mojavelinux Thanks! That looks like exactly what I need.

@mojavelinux Actually it looks like Asciidoctor web pdf isn't quite what I'm looking for either -- it isn't quite as feature rich as Asciidoctor (non-web) pdf. If possible, I'd be interested in implementing a sidebar TOC for Asciidoctor pdf myself.

What would be best is to extend the converter and add that customization in your own codebase. I'm not looking to add a lot of layout enhancements to Asciidoctor PDF since it's incredibly complex to implement, support, and maintain in a general way. In other words, it's out of scope. (Asciidoctor PDF is designed for exactly the kind of document it creates now, which is a top-to-bottom print layout).
Here's how you can make your own converter:
class MyPDFConverter < (Asciidoctor::Converter.for 'pdf')
  register_for :pdf

  # override methods you want to replace or modify. for example:
  # def convert_document doc
  #   puts 'called'
  #   super
  # end
end

If Asciidoctor Web PDF is lacking in functionality that Asciidoctor PDF provides, please provide your feedback to that project. We are aiming for it to be a replacement.

Is it possible to use the same book-styled main.adoc to generate:

an html: with a left TOC, and
a pdf: with the TOC after a "preface", i.e., not automatically as page 2?

Or do I have to use two different main.adoc-files to achieve both 1 and 2?
So far I only manage to get either 1 (with :toc: left) or 2 (with :toc: macro), not both.

Please direct usage questions to the community chat at https://asciidoctor.zulipchat.com. It's generally considered a poor practice to comment on closed issues unless there's a specific problem with the fix itself.


Corrected sysl endpoint param type path

Please attach WIP tag when this PR is still work in progress.
Please attach breaking-change tag if this PR potentially causes other components to fail or changes previous sysl executable's behaviour.

Fixes #1040
Changes proposed in this pull request:
"param": [
      {
       "name": "input",
       "type": {
        "typeRef": {
         "ref": {
          "appname": {
           "part": [
            "depserver"
           ]
          },
          "path": [
           "HelloRequest"
          ]
         }
        }
       }
      }
     ]

The appname field represents a reference to the app that contains the referenced type. The path field represents the type itself. This PR corrected code to follow this rule.
Checklist:

[x] Added related tests
[x] Made corresponding changes to the documentation

@andrewemeryanz
Looks like changes on pkg/parse/tests/petshop.sysl.golden.textpb and pkg/parse/tests/transform.sysl.golden.textpb are not correct, can you help confirm?

The petshop case looks weird:
PetShopApiToModel [package="io.sysl.demo.petshop.views"]:
    !view apiToModel(petshop <: PetShopApi.PetShop):
        petshop -> <PetShopModel>(:

PetShopModel is an application, not a type; it shouldn't be legal in that context IIUC? Perhaps the behaviour is undefined?

I tested sysl-go by make test with Sysl binary file has these changes, all tests passed.


guesses should transfer to yesterday

If one starts guessing on today then tomorrow switch to yesterday's to complete it, it should not be starting from scratch

fixed


HARP-5657: TechniqueProcessor Definition.

The ideas and concept in this PR will be taken into account into a future reworking of the current techniques/material system.


first pass at an admin UI for projects

A really dumb first pass at an admin screen for Projects.
This will at least give admins quick access to Maintainers for a project, releases, and journal entries.

need to get test coverage in place, but ready for a review.

@dstufft only remaining question i have is how to keep the new routes from giving 404s instead of 403s for non existent packages.
For instance, a non logged in user calling:
GET http://localhost/admin/projects/requests/ gets a 403
GET http://localhost/admin/projects/doesnotexist/ gets a 404
Seems to be something with the way the ProjectFactory works, but again my lack of Pyramid chops is showing.

Yea, it's because the layer that finds the object (and raises a 404) occurs at a different layer then the one that checks permissions. Personally I don't think it's a big deal for our use case here. The primary purpose for wanting routes like these to give 403 instead of 404 is to avoid leaking information about what objects exist (but that you don't have permission for).
If we think we need/want 403s in all cases instead of 404's, then for the admin UI, this is going to be better solved generically by registering a new handler for 404 exceptions that only works for the admin URLs. I did that at https://github.com/pypa/warehouse/blob/c6055f056faa6170706bc54c691be231b26c17eb/warehouse/admin/views/core.py#L18-L20 for turning 403s into a redirect to the admin login page. So it would be something similar to that.
I don't think it really matters here though, and if it did I think it'd make sense to make that it's own PR.

works for me @dstufft.


Keras Examples without Magic Numbers

Hello,
Looking at the CIFAR10 example:
https://github.com/fchollet/keras/blob/master/examples/cifar10_cnn.py
(3-layered 32x32 images)
I tried to run the model on the LFW (Faces in the Wild) dataset
http://vis-www.cs.umass.edu/lfw/
(3-layered 250x250 images)
I have reshaped the data to the same shape as the CIFAR10 data, but I get other errors:
ValueError: matrices are not aligned
Apply node that caused the error: dot(Reshape{2}.0, HostFromGpu.0)
Inputs types: [TensorType(float32, matrix), TensorType(float32, matrix)]
Inputs shapes: [(3, 246016), (4096, 512)]
Inputs strides: [(984064, 4), (2048, 4)]
Inputs values: ['not shown', 'not shown']

If I understand correctly, this happens because I use the CIFAR10 model as-is, but its parameters - magic numbers such as 32 (which is also the image dimensions of the CIFAR10 dataset are all around the model definition:
model = Sequential()

model.add(Convolution2D(32, 3, 3, 3, border_mode='full'))
model.add(Activation('relu'))
model.add(Convolution2D(32, 32, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Dropout(0.25))

model.add(Convolution2D(64, 32, 3, 3, border_mode='full'))
model.add(Activation('relu'))
model.add(Convolution2D(64, 64, 3, 3))
model.add(Activation('relu'))
model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(64*8*8, 512))
model.add(Activation('relu'))
model.add(Dropout(0.5))

model.add(Dense(512, nb_classes))
model.add(Activation('softmax'))

It would be great for newbies such as myself is instead of magic numbers, the way to calculate them would be stored in an variable and then those variable would be used in building the model. Even for those variables which are selected arbitrarily and on which no other variables are dependent would be better marked. Take for instance batch sizes - of course they affect the training, but on the other hand we can toy around with them and the code would still run (which is my main goal right now).
I know that this is partially because I'm not well-versed in ANNs and in ConvNets, but believe me that understanding things first via code, then by reading is the best method for me. Let's be Pythonic about it and make keras friendly to newbies.
Thanks!

Here is what I meant: I finally broke down the CIFAR10 demo and replaced the magic numbers with variables. Now I can separate between what variables are my choice (kernel size, number of kernels) and what isn't (things that derive from each other).
Of course my degree of freedom is not unlimited - I can't choose too big (or too small) a kernel size (etc.), but a code like this gave me much more understanding regarding how convolution layers work.
# Initial arguments
nr_kernels1 = 32 # arbitrary choice
kernel_size = 3  # arbitrary choice
nr_channels = X_train.shape[1]  # RGB inputs => 3 channels

#1
# model.add(Convolution2D(32, 3, 3, 3, border_mode='full'))

model.add(Convolution2D(nr_kernels1,
                        nr_channels,
                        kernel_size,
                        kernel_size,
                        border_mode='full'))

model.add(Activation('relu'))
# (b x 3 x 32 x 32) -> (b x 32 x 32 x 32)

nr_kernels2 = 32 #arbitrary choice
model.add(Convolution2D(
        nr_kernels2,  # I chose it
        nr_kernels1,  # derived from output of previous layer
        kernel_size,  # I chose it
        kernel_size)) # I chose it

model.add(Activation('relu'))

#3
model.add(MaxPooling2D(poolsize=(2, 2))) # arbitrary choice
model.add(Dropout(0.25))
# (b x 32 x 32 x 32) -> (b x 32 x 16 x 16)

#4
nr_kernels3=64
model.add(Convolution2D(nr_kernels3, # I chose it
                        nr_kernels2,
                        kernel_size,
                        kernel_size,
                        border_mode='full'))
model.add(Activation('relu'))
# (b x 32 x 16 x 16) -> (b x 64 x 16 x 16)

#5
nr_kernels4=64
model.add(Convolution2D(nr_kernels4,
                        nr_kernels3,
                        kernel_size,
                        kernel_size))
model.add(Activation('relu'))
# (b x 64 x 16 x 16) -> (b x 64 x 16 x 16)

#6
model.add(MaxPooling2D(poolsize=(2, 2))) # arbitrary
model.add(Dropout(0.25))
# (b x 64 x 16 x 16) -> (b x 64 x 8 x 8)

#7
model.add(Flatten())

#8
# The dimensions of each image is (N = (X_train.shape[2]) ** 2),
# We had two downsampling layers of 2x2 maxpooling, so we divide each dimension twice by 2 (/2 /2).
# The input to this layer is the 64 "channels" that the previous layer outputs. Thus we have a layer of
# nr_kernels * (N / 2 / 2) * (N / 2 / 2)

flat_layer_size = nr_kernels4 * (X_train.shape[2] / 2 / 2) ** 2
final_layer_size=512 # I chose it
model.add(Dense(flat_layer_size, final_layer_size))
model.add(Activation('relu'))
model.add(Dropout(0.5))

#9
model.add(Dense(final_layer_size, nb_classes))
model.add(Activation('softmax'))

If you're willing to give it more formalism (comments and variable names), you could submit a pull request with this.

Sure thing. Thanks for keras!

@guy4261 I agree with you. Such comments and style makes it more readable for newbies. I would like to see you make comments in other examples in keras(./keras/examples.py) especially for those RNN example codes.

It's a little confusing but if you read some of the other issue posts and read up on the network type, you should be able to fill in the holes. But if you can't just holla ;)

@guy4261 - a little late to the party but: I have an an example of using LFW with Keras that has fewer magic numbers. Since 250x250x3x2 is huge, I crop and scale the image pairs in a paramaterized way, and adjust the network accordingly.
Also - if you use that that lfw_fuel repo itself as a dependency, you'll have LFW data in any of of three formats (regular, funneled, deepfunneled) with the official test/train splits ready to use with Keras. My example runs but doesn't perform well, so suggestions getting the accuracy up (and the magic numbers down) also appreciated!


Cannot close Keybase desktop because I haven't got enough friends

Keybase GUI Version: 5.1.1-20191211174240+15bbb94c23
The following is an anonymized screenshot of Keybase desktop on my Windows machine:

The task bar starts right at the bottom of the screenshot: I can just barely reach the help entry. I think that the bottom entry of that menu is the option to terminate the application, but since I have so few friends, Keybase just won't let me reach it.

It's not a proper solution, but you can try using Alt-Spacebar on the messages/activity popup to open the window menu, then use the Move option in that menu and the arrow keys to nudge the entire thing around.  You should be able to get to the "Quit Keybase" option in the hamburger menu then.


Audio Mute

https://github.com/norihiro/obs-mute-filter

Branch is ready for submitting as a pull request:

https://github.com/flexiondotorg/nixpkgs/tree/obs-mute-filter

 result
├──  lib
│  └──  obs-plugins
│     └──  obs-mute-filter.so
└──  share
   └──  obs
      └──  obs-plugins
         └──  obs-mute-filter
            └──  locale
               └──  en-US.ini

Result of `nixpkgs-review` run on x86_64-linux [1](https://github.com/Mic92/nixpkgs-review)

  1 package built:

obs-studio-plugins.obs-mute-filter

https://github.com/NixOS/nixpkgs/pull/228409


Ensure etcd file permissions are correct when using vault

ci check this

Pls check linting problems

/lgtm
/approve


CloudFormation parameter for incoming port to allow to external access to the service on the VM

Would it be possible to add parameter to CloudFormation Templates to open "selected" ports for incoming traffic?
For example - if I would like to install HTTP server on the VM and host there some files...
Thank you for considering it.

Thanks for the suggestion! I have previously explored implementing the option for user to specify additional ports in security group inbound rules. CloudFormation however does not seem to offer a built-in capability to dynamically add ports to security group.
Instead of allowing users to specify, I may consider adding option in CloudFormation to open HTTP/HTTPS ports as web hosting is a common use case.
For now, you can go to CloudFormation console, Resources section, click securityGroup ID,  and modify inbound rules directly.

Thank you.
Opening the HTTP/HTTPS in CloudFormation would be really handy.
Currently I'm using these two commands to identify the proper security group and add port 443 to it:
AWS_EC2_SECURITY_GROUP_ID=$(
  aws ec2 describe-security-groups --output text \
    --filters "Name=tag:Solution,Values=${SOLUTION}" \
    --query 'SecurityGroups[?IpPermissions[?ToPort==`8443` && contains(IpRanges[].CidrIp, `<IP_ADDRESS>/0`)]].GroupId'
)

aws ec2 authorize-security-group-ingress --group-id "${AWS_EC2_SECURITY_GROUP_ID}" \
  --protocol tcp --port 443 --cidr <IP_ADDRESS>/0

Obviously this is not very nice, because this needs to be done after the CloudFormation and it brings the configuration drift.
Having HTTP/HTTPS port opened using CloudFormation template make much more sense...
Thanks

Thank you for sharing your work flow.
I have added parameter allowWebServerPorts  as option to open HTTP and/or HTTPS ports. And added security group using AWS-managed prefix list for Amazon CloudFront as source for use cases where CloudFront is used.
Also use CloudFormation Exports for SG, IAM role and Instance ID.   Example
% aws cloudformation list-exports
{
    "Exports": [
        {
            "ExportingStackId": "arn:aws:cloudformation:ap-southeast-1:12345678:stack/StackName/1234567890",
            "Name": "StackName-SecurityGroup",
            "Value": "sg-03d1794701b4a55da"
        },
        {
        ......
        }
    ]
}

That allows us to easily retrieve the ID values for further customization

Awesome - works great :-)
Thank you...


Text data type displaying as number

I've got some codes with leading zeros which I have set as text in the Query Editor.
= Table.TransformColumnTypes(#"Expanded MASTER Template Dupes",{{"Matl Grp Pack. Matls", type text}, {"Transportation Group", type text}})
The column view confirms that the data type is Text and there is no sigma against the Field name however the R Data Table view is presenting data in these two columns as numbers.
Any ideas what might be happening?

The API for R visuals does not expose data type and formatting like we can get with regular custom visuals. If it looks like a number, R treats it as a number.


[Bug] nvim treesitter get node text has been deprecated

It seems that in a recent nvim-treesitter update the ts_utils.get_node_text helper function has been deprecated in favour of using the now builting vim.treesitter.get_node_text this causes users on 0.7.0 using this plugin to see errors on startup.
Reference: https://github.com/nvim-treesitter/nvim-treesitter/commit/c3848e713a8272e524a7eabe9eb0897cf2d6932e

Hmm.. does this mean I will have to drop support for the older versions of neovim?


Setup The Tailwind CSS at Project.

I see your project is based on Ruby on Rails framework. So, following this https://tailwindcss.com/docs/guides/ruby-on-rails should be enough to set up Tailwind for your ROR project.


feat: add brotli support

[ ] test the functionality

Hi!
Brotli and http/2 require SSL certificates, which is something I've intentionally skipped implementing in Vessel.


Enhancement

Add more recipe to the json file🙌

can i work on this
can u please assign me this

@codeboyfriend I created a PR for this

PR #4

@Premjeet1804
You can work on it, Thanks for the contribution

Yess i try my best

Hello, I'd love to work on this. Kindly assign this to me. Thanks.

@RuthChisom
You can work on it nd don't forget to follow the contribution guidelines


Where will a footer be in the new design?

In the old design, you could report a bug, join the discord, and change your language via the footer. Where will the footer be in the new design or will there be a new page where you can do this stuff.
Re #1432


Separate frontends from the service core

In order to have maximum flexibility for customization, the UI should be separate from the service. The service should provide only data endpoints

[ ] info endpoint - provides the available issuers
[ ] User endpoint - provides the user info
[ ] Admin/issuer - provide admin details about the issuers
[ ] Admin/sessions - provide admin details about the current sessions (user+issuer)
[ ] Admin/users - configure the user scopes and origins
[ ] Admin/paths - allows checker to run against all URLs and use internal configs rather then server configs.
[ ] Internal and server configs must word side by side
[ ] The admin/* endpoints are checker protected.
[ ] The UI is checker protected
[ ] The UI has a separate repo/deployment
[ ] The ui uses the service endpoints to configure itself.

This separation gives more flexibility to integrate auth functions into a more complex application. An application can ask the endpoints to receive or update certain functions of the UI.

Related to #18


Document Reviewer - Comment or Reply Being Cut Off

Describe the bug in current situation
The document reviewer cuts off words in the 'Comment' pane depending on the size of the pane, and contents of the comment or reply. Instead of wrapping the text to the next line, words are being cut in half and displayed on the next line.
Link bug to the User Story
Impact of this bug
Describe the impact, i.e. what the impact is, and number of users impacted.
Low
Chance of Occurring (high/medium/low/very low)
High
Pre Conditions: which Env, any pre-requesites or assumptions to execute steps?
TEST
Steps to Reproduce
Steps to reproduce the behavior:

Go to a request in the redaction app
Add a redaction or annotation
Add a comment or reply to a redaction or annotation in the 'Comments' pane that spans two lines
See the error with the text not wrapping to next lime, and instead being cut mid-word and being continued on a new line. See image below for example.

Actual/ observed behaviour/ results
Words at the end of a line may be cut mid-word and continued to the next line, rather than wrapping the full word t the next line.
Expected behaviour
GIVEN a user has entered a comment or reply in the 'Comments' pane that exceeds one line (in the element's content box)
WHEN the last word in a line can not fit in the allotted line space in the content box
THEN content box will wrap the text, displaying the full word on the subsequent line
Screenshots/ Visual Reference/ Source
If applicable, add screenshots to help explain your problem. You an use screengrab.

Could be completed/resolved with #4095, as they both involve Comment pane functionality

Closing, as this appears to have been resolved through other work.


isolates memory not being auto freed

Describe the bug
when running opencv tasks inside isolates example https://github.com/abdelaziz-mahdy/face_grouping/blob/ac18fed722f7ec773632acc7ca613c91ff4afb08/lib/image_service.dart the memory will not be auto freed by finalizer i think this issue is related
https://github.com/dart-lang/sdk/issues/55062
https://github.com/rainyl/opencv_dart/issues/64#issuecomment-2163960631 is the same problem
i think for my case i will need to dispose before finishing the tasks inside isolate , so i will keep this for tracking
edit: even force dispose doesnt free memory https://github.com/abdelaziz-mahdy/face_grouping/commit/0e757770a773f31bd76f25e452d8fc5aa882e8be i dont think there is any missing dispose
actions to redo the memory leak, proccesss dir multiple times

Well, it seems the free of smart pointer is wrong, I will fix it soon.

@abdelaziz-mahdy Please update to v1.0.9 and test whether it is better, leave more messages if the problem still exists.

i think having async support built in will be awesome but i dont know if native threads or isolates is better

Yes, but it's not easy, there are much works todo, for dart isolates, the most difficult one is that native resources can't be passed, BUT as you mentioned, they are trying to implement pragma('vm:shared') and I do see that jni has implemented the sharable JObject, but I have no time to explore more.
As for native ways, we need to refactor all APIs to add callbacks, it's crazy and I do not want to refactor them again...
So maybe with "sendable native resources" supported it will be easier, but I do not think it's easy to implement, because native resources created in main isolate will needs to be copied to helper isolate.
If you have better solutions please tell me or try to implement it, I do think we should support async so I have added it to TODO in readme, but it just not easy...

I think we can take https://pub.dev/packages/image as a reference since he used a different approach, if that doesn't work for our case then I guess people will need to implement their own background handlers same as I did then
Also if you want to add my app to your readme as examples I don't mind,
I am going to test tflite but will try to keep code as modular as I can Incase people want to use it

You mean the commands? Yes it's another way to implement async, but adding every API to command is laborious and not efficient because many memory copies will be needed, maybe with GAPI implemented this way will be the best option for now.

You mean the commands? Yes it's another way to implement async, but adding every API to command is laborious and not efficient because many memory copies will be needed, maybe with GAPI implemented this way will be the best option for now.

Also if you want to add my app to your readme as examples I don't mind,

Thanks~ It will be helpful for other developers. I will update the readme to link to your repo.

I am going to test tflite but will try to keep code as modular as I can Incase people want to use it

I remember that opencv 4.9.0 just support a few TFLite operators, I tried many tflite models but opencv can't even load them, that's why I removed TFLite, but in opencv 4.10.0 it seems the support of TFLite is much better, so you can try it now, thanks for your efforts in advance~

For async tasks, if I found an easy workaround will let you know
My point of trying tflite to make use of apple chip GPU, since from what I am seeing the detection of faces is slow so it may not being fully utilizing GPU power, detection of 60 images using 5 isolates finishes in 10 sec so I don't think it's using gpu

Maybe you can try to use OPENCL, but it's also slow on my AMD chip but it does use GPU, and shows some warnings, maybe some extra configurations needed.
final faceDetector = cv.FaceDetectorYN.fromBuffer(
      "onnx",
      buf,
      Uint8List(0),
      (320, 320),
      backendId: cv.DNN_BACKEND_OPENCV,
      targetId: cv.DNN_TARGET_OPENCL,
    );

@abdelaziz-mahdy maybe we should close this issue now?


scripts update for accession step - ififuncs.py, makepbcore.py, check_ffprobe.py

This update includes three items changed.
1. add object metadata readability analysis
Added script: legancy_scripts/check_ffprobe.py
This scripts is to check the metadata readability of all the media files in a batch of AIPs/objects/ by ffprobe.
This is a checking tool only. It will show a list the path of problematic AIPs.
This is located in the legancy_scripts as it is an infrequent script and can be replaceable by the fix.
2. fixed script abortion and data loss by metadata corrupted
Changed scripts: scripts/makepbcore.py scripts/ififuncs.py
batchaccession.py would aborted because of the corrupted metadata in a file.
This is because it will call makepbcore.py to generate the pbcore for AIPs after every AIP is generated.
And makepbcore.py will call ififuncs.py to run the specific command lines of ffprobe.
ffprobe will return error , which will cause ififuncs.py cannot get the excepted value. So do makepbcore.py and batchaccession.py.
The try/except structure has now been added in the ififuncs.py to prevent abortion by the error.
It will print the error instead (for dev).
Also it will print a message to describe the problem (for users), and will replace the field with missing_metadata*.
***** C:\Users\hyz29\test\aaa5843\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4
        Cannot recognise this file type is [video] or [audio].
        Value is replaced by 'missing_metadata*'.
        Check after script finishes.

3. add error list displayed at the end of the script
Changed scripts: scripts/makepbcore.py
According to 2., makepbcore.py will check whenever the value is missing_metadata*.
If so, it will collect the path to the media files (ie. C:\Users\hyz29\test\aaa5843\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4), and display at the end of the scripts data:
***** [missing_metadata*] Some metadata cannot be recognised by the script.
        The source path(s) shows below.
        Repeated locations means multiple missing matadata.
C:\Users\hyz29\test\aaa5843\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4
C:\Users\hyz29\test\aaa5843\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4

Hi Yazhou - seeing as ye are revising how the scripts are being worked on, could you consider mirroring the earlier git commit styles that I used: https://github.com/kieranjol/IFIscripts/commits/master?after=4a94789d6884774d3a0cee5e6a5032e59b401727+34&branch=master&qualified_name=refs%2Fheads%2Fmaster
This is usually 'name of script - summary of change'.
It's not clear from your commit messages which script has been altered. For example, "fix typo of" and "Phrasing for missing_metadata_list" would require that someone click deeper into the commit to know which script they're referring to. Sometimes if there's more of a global change, then the scriptname isn't required. This info should go into a contributing doc as part of the project as well.
Also when it comes to that typo fix, ideally you'd 'squash' that commit, or just revert the initial commit and reapply it with the fixed typo.

Also, regarding the placing of check_ffprobe in legacy_scripts - is it rendered obsolete by the changes here to makepbcore? If so, why is it being added at all? if there's any chance of it being used, even infrequently, it should be added to the main scripts.

mirroring the earlier git commit styles that I used
This is usually 'name of script - summary of change'.
Thanks Kieran! Will do that the next time.

Also when it comes to that typo fix, ideally you'd 'squash' that commit
I search on the squash. Do you mean doing that on GitHub Desktop? I noticed that will push a new version.
revert the initial commit and reapply it with the fixed typo.
The previous typo fixed is happened after the rephrasing is pushed. I guess no matter what to do, there will be a new commits come out?

check_ffprobe in legacy_scripts
I should use obsolete in this situation as the updated makepbcore will replace what it is doing to some extent.

it looks like you sorted it out?
What is your current git workflow? I only used got on the command line so I’m less familiar with GitHub desktop. It’s a lot easier to revert commits locally before they are pushed, same with squashing commits.

Also can you elaborate on what you mean about the obsolete script? If it’s obsolete should it be included at all? If it’s going to be used even rarely as part of a workflow, it should remain part of the core scripts, added to the documentation and it should be maintained.

I just (fearfully) did a force push from GitHub Client and seems it works to squash the commits but glad that works.
So first drag the one you want to be squashed and move to the one you want to squash to. Then force push. All drag&drop and click jobs so pretty handy.

Leaving this request change here for the removal of check_ffprope.

Before I remove this file from repo and push the commit, I have to ask is this the best way to remove it? Or I can do some commit directly from GitHub like that "commit that suggestion"?

I am not sure to be honest. You included the creation of check_ffprobe in that initial commit with the makepbcore changes. This means you can’t just revert that commit as you will lose the makepbcore changes. This is a good example of a commit doing too many things at once. So at this stage you’ll probably have to just add a commit that deletes the file.

Thanks! I guess this could be a better way to let history know what is happening.
Will post this in the work group first and remove after response.

Can this be closed if the utf8 commits that you merged resolve the issue?

It's a different issue caused by MediaInfo failed ingested metadata from corrupted files. Here I suggested adding a mark and an error summary at the end. Also will be working on the log for a better report. Will probably make a text report instead.

Leaving this request change here for the removal of check_ffprope.

Requested change has been done - chech_ffprobe.py has been removed.

Merci and LGTM :)

The updated layout in the terminal:
......
***** [missing_metadata*] The source path(s) shown below contain corrupted metadata.
        Repeated locations mean the absence of metadata in multiple fields.
        Check the details above or in the pbcore_corrupted_metadata_2023_06_01T13_17_21.txt in Desktop/ifiscripts_log folder.
E:\test\oe12345\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4
E:\test\oe12345\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4

The exported text file:
Text created time: 2023-06-01 13:17:21
Script User: yazhou.he
[missing_metadata*] The source path(s) shown below contain corrupted metadata.
Repeated locations mean the absence of metadata in multiple fields.
E:\test\oe12345\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4
E:\test\oe12345\c76a5d42-532f-4001-9016-39146f3b6214\objects\DJI_0002.MP4


broker runtimeInfo add mmapFiles details

add mmapFiles details to query
What is the purpose of the change
broker runtimeInfo add mmapFiles details
Brief changelog
runtimeInfo.put("totalMappedFiles", String.valueOf(MappedFile.getTotalMappedFiles()));
runtimeInfo.put("totalMappedVirtualMemory", String.valueOf(MappedFile.getTotalMappedVirtualMemory()));
Verifying this change
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Coverage decreased (-9.0e-05%) to 51.475% when pulling 7b76d71ff74d80e0bb21db8e851fb89266ec3b3e on davidpdw:patch-1 into 3be7033a16dba17153dd3c58fec7f43ae04c25e0 on apache:develop.

Codecov Report

Merging #2364 into develop will increase coverage by 0.04%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             develop    #2364      +/-   ##
=============================================
+ Coverage      45.65%   45.69%   +0.04%
- Complexity      4288     4293       +5
=============================================
  Files            547      547
  Lines          35979    35981       +2
  Branches        4773     4773
=============================================
+ Hits           16425    16441      +16
+ Misses         17484    17473      -11
+ Partials        2070     2067       -3

Impacted Files
Coverage Δ
Complexity Δ

...ocketmq/broker/processor/AdminBrokerProcessor.java
7.96% <0.00%> (-0.02%)
13.00 <0.00> (ø)

...nt/impl/consumer/ConsumeMessageOrderlyService.java
38.98% <0.00%> (-3.98%)
16.00% <0.00%> (-3.00%)

...ava/org/apache/rocketmq/filter/util/BitsArray.java
58.11% <0.00%> (-1.71%)
29.00% <0.00%> (-1.00%)

...che/rocketmq/namesrv/kvconfig/KVConfigManager.java
59.18% <0.00%> (-1.03%)
11.00% <0.00%> (-1.00%)

.../rocketmq/client/impl/consumer/PullAPIWrapper.java
50.42% <0.00%> (-0.86%)
12.00% <0.00%> (-1.00%)

...he/rocketmq/client/trace/AsyncTraceDispatcher.java
73.60% <0.00%> (-0.51%)
17.00% <0.00%> (ø%)

.../apache/rocketmq/logging/inner/LoggingBuilder.java
63.60% <0.00%> (-0.32%)
3.00% <0.00%> (ø%)

...main/java/org/apache/rocketmq/store/CommitLog.java
67.39% <0.00%> (-0.11%)
80.00% <0.00%> (ø%)

...etmq/client/latency/LatencyFaultToleranceImpl.java
50.00% <0.00%> (ø)
8.00% <0.00%> (ø%)

...he/rocketmq/client/impl/consumer/ProcessQueue.java
58.13% <0.00%> (+0.46%)
32.00% <0.00%> (+1.00%)

... and 10 more

Continue to review full report at Codecov.

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


Fix stack overflow bug caused by array allocation

Calling Chartist.times with a length larger than the maximum call stack size would cause the following error:
chartist.js:163 Uncaught RangeError: Maximum call stack size exceeded

This is due to the way the array is being allocated.
As discussed in the elm-dev Slack team (quote reproduced below), the fastest way to allocate an array with arbitrary (null) values is as per this PR, using Array.from.
Justification
richard feldman: I was chatting with David Nolen once about implementing persistent data structures in JS, and he said the ClojureScript folks benchmarked a ton of approaches, and the most surprising takeaway was that allocating an array of 32 nulls (as in the JS literal [null, null, null null, … - writing out all 32 of them by hand in a single literal, which was apparently very important) blew all other initial allocation approaches they tried out of the water, like 3x faster than the second-fastest.
archive link

(fixing tests)


Change the way of bringing the API back to its original state

I have discovered that the replaceWithAnotherScormAPI method is flawed. When an SCO keeps a pointer to the original API, after using this method a few times, something goes wrong. Hard to say what exactly, but it has to do with pointers not changing correctly. The SCO then starts writing to an old API that doesn't exist anymore, still triggers events, but then if you read from window.API, you get an empty dataset.
I have changed the approach completely. No more messing about with pointers. Instead, I go for a simple resetting of the default values, and replace the CMI object with a new one.
It's now a lot simpler to reset the API (one method to call instead of 3), and all the pointers follow correctly even if the SCO keeps a pointer to the initial API.
With this change, I suggest labelling the release as version 2.0.0, since there are breaking changes here. I also added a changelog, to start documenting the changes in the API.

I recommend waiting before merging this Pull Request. While I have tested the code locally (and it works like a charm!), it hasn't gone through QA and has not yet been validated to be viable in a production environment.
I will update when that has been done. It should be a few weeks at most.


Should SSL be activated when using behind a NGINX ssl proxy.

This is my nginx SSL vhost :
server {
  listen 443 ssl http2;

  server_name npm.example.com;
  server_tokens off;
  root /dev/null;

  ## Increase this if you want to upload large attachments
  ## Or if you want to accept large git objects over http
  client_max_body_size 20m;

  add_header Strict-Transport-Security max-age=63072000;
  # add_header X-Frame-Options DENY;
  # add_header X-Content-Type-Options nosniff;

  ## include domain ssl config
  include /etc/nginx/ssl-conf/wildcard.example.com.ssl.conf;

  ## Redirect all request
  location / {
    proxy_pass http://<IP_ADDRESS>:31138;
    proxy_set_header Host            $host:$server_port;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
  }

  access_log  /var/log/nginx/example/verdaccio_access.log;
  error_log   /var/log/nginx/example/verdaccio_error.log;

}

The background verdaccio service is configured with:
storage: ./storage

auth:
  htpasswd:
    file: ./htpasswd
#   # Maximum amount of users allowed to register, defaults to "+inf".
#   # You can set this to -1 to disable registration.
#   # currently used only for deployment accounts
    max_users: 2

# a list of other known repositories we can talk to

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@my-org/*':
    # scoped packages
    access: $authenticated
    publish: RedactedADGroup

  '@*/*':
    # scoped packages
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    # allow all users (including non-authenticated users) to read and
    # publish all packages
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow all known users to publish packages
    # (anyone can register by default, remember?)
    publish: $authenticated

    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

# log settings
logs:
  - {type: stdout, format: pretty, level: http}
web:
  enable: true
  title: Redacted

I am using
VERDACCION_VERSION=2.7.4
VERDACCION_LDAP_VERSION=1.3.0

The DOC say right after the reverse nginx proxy configuration to configure SSL:
https://www.verdaccio.org/docs/en/ssl.html
I believe this should only be done to have it without nginx in SSL instead of http, am I correct ?
Or should I configure my certificate in order to work with the npm registry.

I have configured my backend service in http without ssl and the front end proxy with ssl and it work perfectly.


Adding and Submitting data from multi select box

I am using this simple code to show multiselect searchbox
$('#storename').selectivity({
items: stores,
multiple: true,
placeholder: 'Type to search a store',
query: queryFunction,
});

I have couple of additions to make.
Firstly, i want to get a list of all items selected separated by commas. when i click submit for a form. How can i do that? I have an INPUT Tag hidden, i can put items selected but how can i put selected items in it?
Secondly, if i have a comma separated tags, how can i place it in search box

Hi there! To get a comma-separated list of selected item IDs you can try this: $('#storename').selectivity('value').join(','). You can use regular jQuery commands for storing that in a hidden input tag or a search box. Cheers!


ImageNet pre-trained weights link

could you give the ImageNet pre-trained weights link, thanks.

[https://github.com/qjadud1994/Text_Detector/blob/master/Pytorch/weights/readme.md](click here)

@qjadud1994 is tensorflow version also available? thx


Right-aligned header overlaps with sign

I'd like to align the content of columns containing numbers to the right, as it's easier to read if you format the numbers with the same number of decimals. I do this by adding "text-align: right" to the 's and  the .
And that's where it goes wrong: the header then overlaps with the sorting sign. CSS is not my specialty, is this easily fixable?

sorry, I somehow missed this issue.
you can do it easily, just change in the style for sign class right: 5px; to left: 5px
if you are using other then the arrow sign, edit the style for table.sortable th:after in the same way

Thanks for your help! Would it also be possible to still have the sign at
the right hand side, and the header text a little bit to the left of that,
right aligned?
On 18 March 2016 at 19:16, Matúš Brliť<EMAIL_ADDRESS>wrote:

Closed #84 https://github.com/drvic10k/bootstrap-sortable/issues/84.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/drvic10k/bootstrap-sortable/issues/84#event-595281400

If you are like me and use Bootstrap's text-right class, the following bit of CSS might help you to automatically move the arrow to the left side:
table.sortable th.text-right:after {
    left: 5px !important;
}
table.sortable th.text-right span.sign {
    left: 5px !important;
}


Ability to retry a failed operation

At times the deployment fails with a 'retryable error' - or because of some other transient issue. In these instances, the user should be able to issue a /retry command against the operation for it to be re-issued and attempted again.
TBD whether this would:

Update the existing operation and re-issue the service bus message, OR
Append a history item to the operation so there's a trace of updates, OR
Create a new operation item and return that from the retry endpoint

Agree, this would be useful.


reduce usage of commons-lang to a minimum in order to minimize jar size

sadly the shade plugin still includes a lot of classes

does not help at all, StringUtils has transitive dependencies on half of commons-lang classes


Rancher Monitoring with Prometheus Should Be a Blackbox / Use Non-Defaults to Not Conflict

Version: 2.2.0-alpha3
Deploying Prometheus monitoring for Rancher 2 causes conflicts when wanting to deploy Prometheus from a catalog.
Specifically the node exporter exposes itself on the Host Port of 9100, this should be a cluster only port I think or a non-default port.

@ekristen,

using non-default ports

from the suggestion of node_exporter, for now, we cannot deploy node_exporter without hostNetwork mode if we need to see the actual network stats for the container network. There are still namespacing issues with running the node_exporter in a container, mostly around filesystem mount spaces. So there is still create a port on host whatever 9100 or something else.
In order to avoid forcibly occupying certain ports, we will provide parameter configuration to allow the user to disable hostNetwork: "exporter-node.enabledHostNetwork" . The result is that you may count incorrect network status.
But if you certainly know the exposed ports on your host, you can use: "exporter-node.ports.metrics.port" to choose an unoccupied one.

not using io.prometheus.scrape labels (I didn't see any but putting here for good measure)

We should support prometheus.io.scrape, actually, we use it to discover some metrics which don't point out with the scrap_config or ServiceMonitor explicitly on cluster-level, for example: what we do for the nginx-ingress-controller
For now, we don't support this on project-level. We hope the users can use the Custom Metrics which we provide in UI to config the metrics source explicitly. This part, I think, it's as you expected.
cc @loganhz

I understand keeping network mode as host.
Are you going to change the default port @thxCode on the system chart?

@ekristen , we will change its default on UI (maybe 9101 or something else) and allow users to replace it.
Replacing a port is secondary. It is important that node_exporter currently useshostNetwork to collect real network status. Therefore, no matter what port you change, if you want to play the real function of node_exporter, you need to solve the port conflict problem yourself.
The solution we provide is to adjust the configuration parameters when enabling/editing Monitoring:

If you don't want node_exporter, you can disable it.
If you want metrics but not network from node_exporter, you can disable hostNetwork for it.
If you want everything from node_exporter, you must know what port your host is exposed to.
If you want to enabling Rancher Monitoring on the public cloud, you can use the network security group to protect the node_exporter.
Protecting the node_exporter only can be scraped by cluster-level Prometheus, we will fix on https://github.com/rancher/rancher/issues/17957

@deniseschannon @loganhz I think at this point this issue can be closed for the most part. Outside of node exporter everything else deploys blackbox pretty well.


Updated instructions and gifs from c9 + Heroku to Glitch.com

Pre-Submission Checklist

[ ] Your pull request targets the staging branch of freeCodeCamp.
[x] Branch starts with either fix/, feature/, or translate/ (e.g. fix/signin-issue)
[x] You have only one commit (if not, squash them into one commit).
[x] All new and existing tests pass the command npm test. Use git commit --amend to amend any fixes.

Type of Change

[x] Small bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would change existing functionality)
[ ] Add new translation (feature adding new translations)

Checklist:

[x] Tested changes locally.
[x] Closes currently open issue (replace XXXX with an issue no): Closes #15044

Description

I think it is right that this PR should be against the backup/master branch since is a change to that branch as per issue #15044 ??
I have updated the gifs and instructions on the backend challenges to change the recommendation from c9 + Heroku to Glitch.
This should help campers be able to sign up and set up projects in Glitch. Also added some info about mLab for the projects that require MongoDB.

Note: The learn you mongo and how to npm waypoints still point to c9.io, I didn't change these (within this pull request) to Glitch as I wan't able to install mongo on Glitch so mongo shell wouldn't work for learn-you-mongo, and while I was able to access the console on Glitch, new files created in the terminal were not showing up in the file directory on the project even when committed to git. Console access seems to be a new feature in Glitch, so may just be a glitch. 🤣

@QuincyLarson this is good to go! :shipit:


Update docker image to include pciutils

I recently tried to reset a board via tt-smi and got the following errors:
/home/software/syseng/gs/tt-smi -tr all
Traceback (most recent call last):
  File "tt_tools/common/api.py", line 413, in __init__
  File "tt_tools/common/api.py", line 443, in detect_chips
  File "subprocess.py", line 512, in run
subprocess.CalledProcessError: Command 'lspci -d 1e52: -n' returned non-zero exit status 127.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "tt_smi.py", line 418, in <module>
  File "tt_smi.py", line 290, in main
  File "tt_tools/common/api.py", line 436, in __init__
tenstorrent.tenstorrent.TTError: Failed to initialize TTHost.
[2149502] Failed to execute script 'tt_smi' due to unhandled exception!

The fix was to install pciutils:
sudo apt-get update
sudo apt install pciutils

That package should be included in the docker image.
At least
ghcr.io/tenstorrent/tt-metal/tt-metalium/ubuntu-20.04-amd64:latest
cc @ttmchiou @TT-billteng

One note is that we currently have to use 20.04 not 22.04 on IRD


Sending 0 bytes messages when receiving data

I want to integrate the example of receiving a message on my code (https://github.com/adafruit/Adafruit_CircuitPython_RockBlock/blob/master/examples/rockblock_recv_data.py)
When I tried the example, I sent an hex message from the rockblock operations page, and I received it correctly, but when I went to the messages manager on the rockblock operations I got this:

My question is, those no-payload messages that I have theoretically sent (I only tried the code for the Reception) will be always there because of something on the manner that the AT commands check for the messages ? Have I done something wrong when sending the message?
Thank you in advance

@caternuson any ideas?

The receive data example code in the library is somewhat specific to the transmit data example code. Did you alter it in anyway to work with your specific payload?

I only deleted some lines related with the part of the struct.unpack()... I think that it should not affect to anything, right?
This is the script that I run

That should be OK. Is the behavior repeatable?
The call to satellite_transfer() will both send (MO) and receive (MT) messages if any messages are in the respective queues. So if you had done something prior to running the above script that had placed something in the MO buffer, then it would have been sent.

That's weird that it sends a blank MO message, and cost you credits, to simply check the mailbox. We didn't see that behavior while developing this library. If the MO buffer is empty, the SBDIX command should not send anything.

It is weird (and expensive, from my point of view). I connected my pc with rockblock via Serial using Putty, and then sent the AT commands without executing any script of mine that could interfer (sending or receiving messages)

As you can see, I only looked for satellite connection, if it can get one, with the SBDIX command, without any previous SBDWT or anything. The response that I got is [0,71,0,0,0,0] where the 71 is indicating the Mobile Originated Message Sequence Number (MOMSN), and no messages to download.
As you can see here, what I got on the Rockblock Operations page is a 0 bytes message for 1 credit.

As I said, when you are sending your own payload, it includes a "free check" and it will only cost the length of your payload. But when you try to receive a message without sending anything before, it costs you 1 credit.

Try clicking the "View" button and see if you can see anything related to getting the red ! for Status.

The red ! is because I put the adress to send the message to a server that I have not activated yet (I should delete it, but I think it has nothing to do with this), I also have my email adress in the delivery adresses and it is green status.

@ladyada OK to reactivate this for a month to investigate?

of course!

I've recreated this issue. Even with issuing a clear buffer command:
AT+CSQ
+CSQ:5

OK
AT+SBDD2
0

OK
AT+SBDIX
+SBDIX: 0, 13, 0, 0, 0, 0

I get hit for 1 credit :(
I've sent an email to Rock7 tech support to see if they can explain.

The response from Rock7 is that this is expected behavior. Here's the important bit of detail:

any connection to the satellite will incur a fee. Whether that be a blank Mailbox Check or an MO from your modem with an actual payload.

We only tested a few simple message xfers, which is maybe why we didn't run into this behavior. Of course, this does have a significant impact on how you will design your code. I see this as meaning you can't perform a simple "check for messages" for free. It will cost you at least 1 credit.
Hope that info helps.


Blacklist certain resources from being returned in the resource inspector

lwrp_base and unresolved_subscribes shouldn't be there as well as all the subclassed resources from user
Signed-off-by: Tim Smith<EMAIL_ADDRESS>

Closing out to add a blacklist directly to the resources


Incompatible with mod: mighty_mail-fabric-1.20.1-1.0.14

Fabric 0.16.0
crash provided:
-The game crashed whilst exception in server tick loop
~Error: java.lang.ClassCastException: class com.mrcrayfish.mightymail.mail.DeliveryService cannot be cast to class com.mrcrayfish.furniture.refurbished.mail.DeliveryService (com.mrcrayfish.mightymail.mail.DeliveryService and com.mrcrayfish.furniture.refurbished.mail.DeliveryService are in unnamed module of loader net.fabricmc.loader.impl.launch.knot.KnotClassLoader @57d5872c)
version of mod:
mighty_mail-fabric-1.20.1-1.0.14

Incase this is actually not the issue, here is my modlist file:
modlist.html.pdf
if it is still showing mighty_mail, it is disabled however, with it enabled it causes the crash shown above.

Im gonna close this now that I realized you made mighty mail >.< I didnt know le sorry~~

Im gonna close this now that I realized you made mighty mail >.< I didnt know le sorry~~


preload fix for issue 105

I wonder if it's better to implement streaming, or at least make this optional, or only when seeking otherwise fails (similar to how firefox handles it). Do you know how difficult these other alternatives would be?
One of the assumptions on BeaverDam workflow is that a worker will start from the beginning of the video, and by the time they get to later parts of the video, it should be loaded. This avoids them loading the entire video file to start, which may slow them down.

It seems like most web servers support byte serving by default already but its not something django runserver itself supports. Haven't tried it but its most likely not a problem in production mode/setting.

Alternatively you could also just install whitenoise's middleware to serve media when testing in non production mode to solve the problem.

Perhaps we should make it so that if the webserver doesn't support it, we'll pre-load, but default to assuming the webserver supports it since otherwise the user will have to wait a long time before starting


Export isl_id

Exporting isl_id is non-trivial as it takes a void* user pointer. I wonder if there are better ways to export this function than just exposing the userpointer?
@nicolasvasilache : Your private branch has a managed_isl branch and I can see some templated version of isl_id which you developed. Any idea who wrote the code, if this is automated and if this is something we could upstream.
This currently blocks me from exposing most of the list stuff.

@tobig I wrote it.
The problem with the userpointer is that isl may need to destroy it internally after the C++ id object goes out of scope.  For example, an isl::id is created manually and used as a tuple id in a space.  The space is used to construct the domain union_set, for which we compute the schedule.  The C isl_id object survives throughout the process while the C++ isl::id may be long gone.  So we want to store the user data in the C isl_id.  The rest of the wrapper is necessary for two reasons:

allow capturing lambdas to be passed as deleters, which are expected to be pointers to C functions;
provide some amount of type-safety, in particular make sure the user-provided deleter takes an instance of the class stored in user pointer rather than void*, so we can safely pass a wrapped destructor.

My understanding that isl_id is essentially shared_ptr over the pair userpointer+name.  It provides reference counting and supports a custom deleter exactly like shared_ptr, so I would expect it to behave similarly.
We considered an alternative encoding where user data is stored in a hashmap (isl::id)->(std::string, isl::data_wrapper_class) in the context to which the id belongs, but it (1) introduces more global-like state than I would like and (2) maintains user data alive longer then potentially necessary.  It could be possible to put a dummy user object to the C isl_id and trigger the deletion of the user object from the C++ hash map, but this boils down to a more involved version of the implemented solution.

The managed_isl is experimental and was not even tested with out stuff.  I expect to make a local PR soon, and if it goes in, replicate it here.

Interesting, I came up with the following "approach" for type safety:
template <typename T>
class managed_id : public isl::id {
        const char *type_address;
        static const char type_token;
        T payload;

public:
        managed_id(isl::ctx ctx, std::string name, T payload)
                : isl::id(ctx, name, this), payload(payload) {
                type_address = &type_token;
        }

        T get_payload() {
                managed_id *user = (managed_id *) get_user();
                ISLPP_ASSERT(user->type_address == type_address,
                             "Unexpected type identifier");
                return user->payload;
        }
};

template<typename T>
const char managed_id<T>::type_token = '\0';

which is used as follows:
        isl::ctx ctx = isl_ctx_alloc();
        managed_id<int> ID(ctx, "aa", S);

        std::string S2 = "hallo";
        managed_id<std::string> ID2(ctx, "aa", S2);

        printf("%d\n", ID.get_payload());
        printf("%s\n", ID2.get_payload().c_str());

The idea is that we can use the address of a type specific static global to uniquely identify the type of the content and verify if the isl::id used to read the type is indeed of the same type as the isl::id used to store the type.
The above snippets are still broken as the isl pointer still references the isl id object, instead of an object that can be freed when the isl_id is destroyed. But the idea itself might be useful.

@ftynse : Yes, it would be good to have a pull request to comment on.

@tobig cool trick. I think it can be combined rather easily with what we have.
I did not want to have a class template for the id type itself because it could prevent me from having an (stl-style) list of ids, which expects instances of the same class.  Particularly, the size of managed_id depends on the size of its template argument.  List of pointers + inheritance would solve the problem, but it seemed inconsistent with the no-pointer-and-use-copy-everywhere semantics of the other parts.  Also, isl_id being essentially a shared_ptr, taking a pointer to a shared pointer looks weird.
We can hide this under the template function get<T>, and additionally introduce try_get<T> / get_or_null<T> and isa<T> for probing.

Sounds great. Yes, I think the two ideas are quite complementary and can easily be combined. I like your non-templated class as this also avoids the need to return an isl_id in get_id() functions and later cast it to something else.
How did you generate this class. Do you have patches to the isl C++ generator?

So far it is hand written in isl.h.top.  Not sure whether we want to patch the generator instead.  My understanding is that we don't necessarily want the generator to have a large block of code it just prints instead of having the code directly.

I was mostly interested how you did it. I think starting off from a class that is defined in isl.h.top is a good idea. We can then still see if we want to automate some of the generation. It might indeed not be needed.

More discussion:
calls to isl_id_alloc with the same arguments give you same (pointer-comparable) ids.  If we want to preserve the same behavior in C++ with an additional wrapper, we will have to maintain a map "user pointer -> wrapped user pointer" on the C++ side ourselves.  This is tricky in a header-only interface...

I don't understand. Do you want that the pointer addresses of two isl::ids compare equal if their underlying isl_ids compare equal. Or do you want them to compare equal for std::set and Co. I think in this case, we should overload std::less or operator<, no?

isl_ctx *ctx = isl_ctx_alloc();
int i = 42;
isl_id *id1 = isl_id_alloc(ctx, "name", &i);
isl_id *id2 = isl_id_alloc(ctx, "name", &i);
assert(id1 == id2); // this holds!

it would make sense to have the same behavior in C++
isl::ctx ctx(isl_ctx_alloc());
int i = 42;
isl::id id1(ctx, "name", &i);
isl::id id2(ctx, "name", &i);
assert(id1 == id2); // expect to hold
assert(id1.get() == id2.get()); // isl should also know that these ids are the same.

I see. In this case, I don't think we can reasonably piggy-pack anything to the user pointer. I also don't believe that keeping a separate map in the C++ interface is the right solution. Instead, I would likely add an additional field to isl's isl_id struct and add an interface that allows the C++ bindings to officially store the data it needs.

I don't see how an extra pointer would help.  My user pointer-packing magic is intended to accept std::function as a deleter instead of a C function pointer.  We cannot decay an std::function to a function pointer, so we store it instead and provide a deleter function that recovers the std::function and calls it.
An alternative would be keep C function pointer as a deleter in C++ interface.

You could do your very same packing and pass the pointer you pass today in the extra pointer and the original pointer as key in today's pointer field, could you?

Regarding the alternative. I think it might make sense to start with the most simple solution that matches the C interface as closely as possible. Could we just export isl_id with __isl_export and then add the missing functionality to the generator to generate code for it as it is (or write the code that would be generated by hand). In the end we want the C and C++ interface to be reasonably similar.

Well, the easiest solution would be to force the deleter in the C++ interface to be a C function pointer.

Otherwise, having two user pointers in the C isl_id seems weird...
However, we can try to get around that by arguing that usr1 is included in the identity of isl_id and usr2 is not.  So isl_ids with equal usr2 pointers are not guaranteed to be equal.

But I still don't see how that would help.  It would either break pointer-comparability of ids in C, or require the second pointers to be the same to get you the same id object, which brings us back to the original problem: maintain a mapping between actual user pointers aka usr1 and extra data created for that pointer aka usr2 in order to create identical pointers.

@tobig @nicolasvasilache
So here are my two propositions https://github.com/nicolasvasilache/isl/pull/17 https://github.com/nicolasvasilache/isl/pull/18.
We may want to keep https://github.com/nicolasvasilache/isl/pull/18 and propose https://github.com/nicolasvasilache/isl/pull/17 in a documentation as a way for the user of islpp library to have arbitrarily-typed deleters and preserve the isl_id pointer-comparability.

As discussed face-to-face, I am largely in favor of the lightweight version.
As long as we let lifetime management happen in C I do not see why we'd
want to allow the deleter to capture.
On Fri, Aug 4, 2017 at 12:37 PM, ftynse<EMAIL_ADDRESS>wrote:

@tobig https://github.com/tobig @nicolasvasilache
https://github.com/nicolasvasilache
So here are my two propositions nicolasvasilache/isl#17
https://github.com/nicolasvasilache/isl/pull/17 nicolasvasilache/isl#18
https://github.com/nicolasvasilache/isl/pull/18.
We may want to keep nicolasvasilache/isl#18
https://github.com/nicolasvasilache/isl/pull/18 and propose
nicolasvasilache/isl#17 https://github.com/nicolasvasilache/isl/pull/17
in a documentation as a way for the user of islpp library to have
arbitrarily-typed deleters and preserve the isl_id pointer-comparability.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/PollyLabs/isl/issues/8#issuecomment-320217132, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJradGq-OD_rOJrSjrOuj5vbeh-ACiY8ks5sUvRggaJpZM4OqEOI
.

@ftynse , I also believe the lightweight version is preferable for now. Would you be interested in preparing a patch that is upstreamable? It seems the code is very close already.
I would suggest to auto-generate the code, as this will make the patch a lot smaller and would raise less concerns during a patch review.
You can likely just:

export isl_id
teach the types about void_ptr
Fix the printing of the callback setter

I would probably start without additional comparison operators or constructors and would for now also not move the deleter into the constructor. I would possibly even not template the code for now.
While this removes some of the features we (mostly you) came up with, it is likely a very good start and very uncontroversial.

For #11 having isl_id exported would be useful.


Contributing to/opening up pure Python comparison engine

Hello! This seems like a great tool, and I would love to help contribute + expand on its capabilities, especially since I need to set up redlining in Python for my use case. I'm also very interested in the pure Python engine, since I'd like to make some modifications to document XML that don't appear to be supported by WmlComparer. Is there any chance the pure Python comparison engine will be surfaced soon? Would love to see if I can help out if more contributors would help the cause!

Glad you like the project @cam-pressw. I've done some experimentation with xmldiff, and it appears to be a workable solution. You need to do some work to make sure you're wrapping your diff fragments in the right xml tags, but it can generate xml diffs and create a patch as well. I haven't had time to try to build something production-grade. If you're up to taking a shot at it, I'd be happy to collaborate. I should have enough time to help review.

Sounds great! Re: wrapping your diff fragments in the right XML tags, I think you mention in the readme that this can get pretty complex. How are you figuring out what tags to use in what situations (comparing outputs from WmlComparer? referencing what XML documentation Microsoft does have?). If going through your current process is easier on an email chain or call, feel free to reach out at<EMAIL_ADDRESS>


Virtual pagination links don't work in demos

When I clone the project and run it locally, the demos/paging.html has links in the bottom-right and they update as I scroll, but clicking the links doesn't change / jump the scroll position.  Is this by design?  The same is true of the codepen demo, http://codepen.io/marjan-georgiev/pen/vOebGw, with the following additional problems:

Sometimes the data doesn't load
Sometimes pagination doesn't trigger on scroll

My main concern is getting virtual pagination working, let me know if this is a code change.  Debugging the project locally, I see

            17

putting a debug statement in PagerController.js at line 60 (selectPage function) it doesn't appeared to be called when I click it.

It should jump to the scroll position.  This was working, not sure what happened!
I haven't seen the issue w/ the data not loading ( likely because I mainly run local and its a race case ).  I was able to reproduce on the pen sometimes though.
I have no idea why that wouldn't fire; there is nothing indicating it shouldn't!  Thats pretty straight forward code there.

noticed this... http://take.ms/P7WNG
when i scroll down, the data shows up.

Should be resolved now.