clean up the logic of reading guage metrics

With org.apache.pinot.plugin.metrics.yammer.YammerSettableGauge and org.apache.pinot.plugin.metrics.dropwizard.DropwizardSettableGauge, gauge value stored in the metric registry can be updated. Therefore, it is now possible to remove _gaugeValues defined in org.apache.pinot.common.metrics.AbstractMetrics, which is a walkaround to make gauge value changeble.
This PR removes the methods of reading guage metrics from _gaugeValues defined in org.apache.pinot.common.metrics.AbstractMetrics (and replace them with logic to read metrics from the metric registry directly), so that we can remove _gaugeValues in a future PR. Notice that it's safe to delete those  methods because they are only used in unit tests and integration tests.
Even without the above considerations, we still should not read gauge metrics values from an intermedia cache, which may not be the same as the one kept in the metric registry. Actually, I noticed discrepancies between them in some tests cases. And that's reason for adding a cleanup() method into PinotMetricUtils, which can clean up the existing metric registry.

Codecov Report

Merging #10106 (e5a29eb) into master (8022c79) will decrease coverage by 45.74%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             master   #10106       +/-   ##
=============================================
- Coverage     70.41%   24.66%   -45.75%
+ Complexity     5745       44     -5701
=============================================
  Files          1992     1980       -12
  Lines        107981   107623      -358
  Branches      16415    16374       -41
=============================================
- Hits          76031    26545    -49486
- Misses        26630    78306    +51676
+ Partials       5320     2772     -2548

Flag
Coverage Δ

integration1
24.66% <0.00%> (+0.01%)
:arrow_up:

integration2
?

unittests1
?

unittests2
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...g/apache/pinot/common/metrics/AbstractMetrics.java
78.53% <ø> (-2.78%)
:arrow_down:

...org/apache/pinot/spi/metrics/PinotMetricUtils.java
0.00% <0.00%> (-90.13%)
:arrow_down:

...ain/java/org/apache/pinot/spi/utils/LoopUtils.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...in/java/org/apache/pinot/spi/utils/BytesUtils.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...java/org/apache/pinot/spi/trace/BaseRecording.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...java/org/apache/pinot/spi/trace/NoOpRecording.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ava/org/apache/pinot/spi/config/table/FSTType.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ava/org/apache/pinot/spi/config/user/RoleType.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ava/org/apache/pinot/spi/data/MetricFieldSpec.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...ava/org/apache/pinot/spi/stream/StreamMessage.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 1472 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Also can we test at least one metric in each category to make sure they are emitted properly on a live system?

Not sure if I understand you comment. There is no metric emission logic change in this PR, but only metric reading logic used in unit tests. Therefore, I think we don't need to test on a live system. What do you think?


Beyond the fire by Don Diablo

Song Name
Beyond the fire
Artist Name
Don Diablo
Source
Direct file download
Youtube Link
vztXfR2oBg3t7F2F
Direct File Link
https://youtu.be/wyQQzaMzo_8?si=vztXfR2oBg3t7F2F
Song ID
889238
Start Offset [ms]
0
Extra
Created from Auto Nong.
Created for level: 57974846

reject
change source to youtube, as other sources are not supported


feat: restore network redirects

I found out my changes from Network Redirects were omitted and never found.
I re-added them here, but still investigating it this is the correct approach.

Test seem to fail for correct reason, redirects to update HTTP to HTTPS are triggered for headful. Will think of how to fix for both versions

All tests are finally passing!

Is this ready for merge?


Support -Zno-link

Describe the problem you are trying to solve
Compilation pipelining can currently compile dependent crates as soon as the crate metadata is written in most cases. This improves cpu utilization for from-scratch builds. It is however not possible to apply pipelining on crates that need to be linked like executables and dylibs as all object files need to be available to link something.
Describe the solution you'd like
Using the -Zno-link option of rustc it is possible to separate the compilation and linking step. This makes it possible to pipeline the compilation and only wait for all crates to be fully compiled once we want to link the final executable. This option was introduced in https://github.com/rust-lang/rust/pull/68487 and fixed in https://github.com/rust-lang/rust/pull/80187 (now with a test to prevent regressions).
Notes
cc https://github.com/rust-lang/rust/issues/64191
To implement this rustc will first need to be invoked with -Zno-link as argument. This will produce all object files and a .rlink file. Once all dependencies are compiled you need to invoke rustc a second time with -Zlink-only as argument and the .rlink file instead of the source file.

I am interested in this issue and plan to implement it. Just some questions need to make sure I didn't get it wrong.
Below is my understanding of a possible flow. @bjorn3, could you help me check its correctness?

The first rustc invocation is for all dependencies with -Zno-link.
And the next one is also for all dependencies with -Zlink-only.
Then compile and link the Target (crate root).
If there is any dependency attempting to produce a staticlib/dylib/proc-macro which requires upstream objects, the compilation pipeline must invoke rustc with -Zlink-only for all its upstream dependencies before proceeding.

@alexcrichton, since you are the person who implemented pipeline compilation and opened https://github.com/rust-lang/rust/issues/64191, it would be very helpful if you can provide some advice and  tips for prototyping. Thanks 😄

I am interested in this issue and plan to implement it. Just some questions need to make sure I didn't get it wrong.
Below is my understanding of a possible flow. @bjorn3, could you help me check its correctness?

The first rustc invocation is for all dependencies with -Zno-link.
And the next one is also for all dependencies with -Zlink-only.
Then compile and link the Target (crate root).
If there is any dependency attempting to produce a staticlib/dylib/proc-macro which requires upstream objects, the compilation pipeline must invoke rustc with -Zlink-only for all its upstream dependencies before proceeding.

@alexcrichton, since you are the person who implemented pipeline compilation and opened https://github.com/rust-lang/rust/issues/64191, it would be very helpful if you can provide some advice and  tips for prototyping. Thanks 😄

The first step is to compile all crates, with the crates that need to be linked getting an extra -Zno-link argument. Non-linked crates must not get -Zno-link as argument. This step can be fully pipelined, so once the metadata file of a dependency is written, all dependent crates can immediately be compiled without having to wait on codegen. This pipelining is unchanged from master except for also pipelining crates that need to be linked. The second step is after all crates are done compiling completely, only running rustc on the crates that need to be linked with -Zlink-only and with the .rmeta file from -Zno-link instead of the source file. If I am right, all crate types except for rlib need to be linked.

The first step is to compile all crates, with the crates that need to be linked getting an extra -Zno-link argument. Non-linked crates must not get -Zno-link as argument. This step can be fully pipelined, so once the metadata file of a dependency is written, all dependent crates can immediately be compiled without having to wait on codegen. This pipelining is unchanged from master except for also pipelining crates that need to be linked. The second step is after all crates are done compiling completely, only running rustc on the crates that need to be linked with -Zlink-only and with the .rmeta file from -Zno-link instead of the source file. If I am right, all crate types except for rlib need to be linked.

This is likely to be a somewhat nontrivial change in Cargo. My best guess for the way to implement this would be to introduce a Unit for -Zno-link and a second unit for -Zlink-only for compilations that today are a single Unit which invoke the linker (e.g. everything other than an rlib basically). Cargo's unit of execution of a process is a Unit, and today there's a Unit-per-rustc-invocation basically. A Unit also tracks things like execution of a build script.
Pipelining with rlib dependencies is different since we don't invoke rustc twice. Instead we invoke rustc once and only once we've received the message that the rmeta is available do we start executing other units. There's special-casing that handles this (see JobQueue::enqueue and Artifact::Metadata), but if we're executing rustc twice then that probably doesn't need to happen.
I suspect functions like requires_upstream_objects and only_requires_rmeta may not need to be refactored, but you'll want to eye them carefully in case new support here impacts them.

This is likely to be a somewhat nontrivial change in Cargo. My best guess for the way to implement this would be to introduce a Unit for -Zno-link and a second unit for -Zlink-only for compilations that today are a single Unit which invoke the linker (e.g. everything other than an rlib basically). Cargo's unit of execution of a process is a Unit, and today there's a Unit-per-rustc-invocation basically. A Unit also tracks things like execution of a build script.
Pipelining with rlib dependencies is different since we don't invoke rustc twice. Instead we invoke rustc once and only once we've received the message that the rmeta is available do we start executing other units. There's special-casing that handles this (see JobQueue::enqueue and Artifact::Metadata), but if we're executing rustc twice then that probably doesn't need to happen.
I suspect functions like requires_upstream_objects and only_requires_rmeta may not need to be refactored, but you'll want to eye them carefully in case new support here impacts them.


Incorrect derivative for sparse matrix sum

on current #main:
using Enzyme
using EnzymeCore
using LinearAlgebra
using SparseArrays

function foo(A)
    return sum(A)
end

A = sprand(10, 10, 0.1)
dA = similar(A)
autodiff(Reverse, foo, Duplicated(A, dA))

returns
julia> dA
10×10 SparseMatrixCSC{Float64, Int64} with 10 stored entries:
  ⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
 1.0   ⋅    ⋅    ⋅   1.0   ⋅    ⋅      ⋅           ⋅            ⋅
  ⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅          1.77459e248   ⋅
  ⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
  ⋅   1.0   ⋅    ⋅    ⋅    ⋅   1.0     ⋅           ⋅            ⋅
  ⋅    ⋅    ⋅    ⋅    ⋅    ⋅   1.0  NaN            ⋅            ⋅
  ⋅    ⋅    ⋅    ⋅    ⋅   1.0   ⋅      ⋅           ⋅            ⋅
  ⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
  ⋅   1.0   ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
  ⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅     1.3336e241   ⋅            ⋅

You need to pass on a zero's shadow not a similar (this is because reverse
mode +='s). See the sparse section in caveats on the website for an example
On Sat, Feb 3, 2024, 12:43 PM Xiu-zhe (Roger) Luo @.***>
wrote:

on current #main:
using Enzymeusing EnzymeCoreusing LinearAlgebrausing SparseArrays
function foo(A)
return sum(A)end
A = sprand(10, 10, 0.1)
dA = similar(A)autodiff(Reverse, foo, Duplicated(A, dA))
returns
julia> dA
10×10 SparseMatrixCSC{Float64, Int64} with 10 stored entries:
⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
1.0   ⋅    ⋅    ⋅   1.0   ⋅    ⋅      ⋅           ⋅            ⋅
⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅          1.77459e248   ⋅
⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
⋅   1.0   ⋅    ⋅    ⋅    ⋅   1.0     ⋅           ⋅            ⋅
⋅    ⋅    ⋅    ⋅    ⋅    ⋅   1.0  NaN            ⋅            ⋅
⋅    ⋅    ⋅    ⋅    ⋅   1.0   ⋅      ⋅           ⋅            ⋅
⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
⋅   1.0   ⋅    ⋅    ⋅    ⋅    ⋅      ⋅           ⋅            ⋅
⋅    ⋅    ⋅    ⋅    ⋅    ⋅    ⋅     1.3336e241   ⋅            ⋅
—
Reply to this email directly, view it on GitHub
https://github.com/EnzymeAD/Enzyme.jl/issues/1267, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJTUXAJD6AIY6OA2MHLLETYRYPGTAVCNFSM6AAAAABCX7AR3WVHI2DSMVQWIX3LMV43ASLTON2WKOZSGEYTMNBUG4ZDQNY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Closing, please reopen if it gives the wrong answer after providing a correct input. (Similar can give undefined memory so +='ing into it can create the nan and 1e248 values, if all of those were one that would be the expected result


Gorm V2.0 (v1.20.10) unit test : intermittent rows return with gorm.Create()

Your Question
Is there a way to override returning row of gorm.Create() return result ?
I found a problem while making insert data unit test with gorm.Create() and sqlmock. It returns intermittent row's position of "updated_at", "created_at", "id" which caused failure sometimes due converting date time type into int64 type. However, if I run the test for several times it can be successful.
struct model :
// MasterData model
type MasterData struct {
	ID         int64  `gorm:"primaryKey;column:id;type:SERIAL"`
	Name       string `gorm:"column:name;type:VARCHAR(50)"`
	RecordProperty
}

// RecordProperty model
type RecordProperty struct {
	CreatedBy int64     `gorm:"column:created_by"`
	CreatedAt time.Time `gorm:"type:TIMESTAMP;default:current_timestamp"`
	UpdatedBy int64     `gorm:"column:updated_by"`
	UpdatedAt time.Time `gorm:"type:TIMESTAMP;default:current_timestamp"`
}

insert function :
func InsertMasterData(db *gorm.DB, datamodel *model.MasterData) error {
	return db.Create(model).Error
}

test function :
func Test_InsertMasterData(t *testing.T) {
	t.Run("Success_InsertMasterData", func(t *testing.T) {
		db, dbMock, _ := sqlmock.New()
		gormDB, _ := gorm.Open(postgres.New(postgres.Config{
			Conn: db,
		}), &gorm.Config{})
		now := time.Now()
		dbMock.ExpectBegin()
		dbMock.ExpectQuery(`INSERT INTO "master_data" (.+) RETURNING`).
			WillReturnRows(sqlmock.NewRows([]string{"created_at", "updated_at", "id"}).AddRow(now, now, int64(1)))
		dbMock.ExpectCommit()
		datamodel := model.MasterData{
			ID:       1,
			Name:     "master_1",
			RecordProperty : model.RecordProperty{
				CreatedAt: now,
				CreatedBy: int64(1),
				UpdatedAt: now,
				UpdatedBy: int64(1),
			}
		}
		err := InsertMasterData(gormDB, &datamodel)
		assert.NoError(t, err)
		if err := dbMock.ExpectationsWereMet(); err != nil {
			t.Errorf("there were unfulfilled expectations on insert master data : %s", err)
		}
	})
}

log result :
[4.048ms] [rows:0] INSERT INTO "master_data" ("name","created_by","updated_by","updated_at") VALUES ('testing_new_address_type',1,0,0,'2021-01-09 00:16:18.738') RETURNING "id","created_at","updated_at"
--- FAIL: Test_InsertMasterData (0.01s)
    --- FAIL: Test_InsertMasterData/Success_InsertMasterData (0.00s)
        repository_master_data_test.go:204:
                Error Trace:    repository_master_data_test.go:204
                Error:          Received unexpected error:
                                sql: Scan error on column index 1, name "updated_at": converting driver.Value type time.Time ("2021-01-09 00:16:18.738443 +0700 WIB m=+0.101097980") to a int64: invalid syntax; call to Rollback transaction, was not expected, next expectation is: ExpectedCommit => expecting transaction Commit
                Test:           Test_InsertMasterData/Success_InsertMasterData
        repository_master_data_test.go:206: there were unfulfilled expectations on insert master data : there is a remaining expectation which was not matched: ExpectedCommit => expecting transaction Commit

The document you expected this should be explained

Expected answer

Could you please create a reproducible playground PR?

Could you please create a reproducible playground PR?


Improve ID integrity mechanism

This is huge performance issue for large texts, as the current implementation scan through the entire document every time you press a key. We should be more clever.

There is one solution in other PR, closing this.


It's working with EA and Lol but steam do not cache :-)

cool was tested with lol, ea, steam the caches ea and lol but steam does not work

I think the zone *.steamcontent.com is missing since the last PR.
Look at the bind config before the merge https://github.com/steamcache/steamcache-dns/blob/6e643ddbe4c8f80630c385ee462a4f38df8f675b/overlay/etc/bind/steamcache.conf
And After: https://github.com/steamcache/steamcache-dns/blob/de807f1a1b5f42ccfeaaf4389535b074cfe9a736/overlay/etc/bind/cache.conf

Commit cf19450 should fix this - I'm unable to fully test the DNS image right now due to lack fixed line internet. Let me know if there are any issues with it.

Having tested with steam and origin and it's working great


How to avoid slipping

Hi, I'm working on a character and I need to completely stop its speed when i release the button "run right". I've tried by setting his friction to 1 (maximum value) but without solving. It 'a test project that I am developing for my engine that uses the physics of Matter. Am i doing something wrong?
Eventually here you can find here the whole engine including the test (folder test -> gamestate.js -> player class) https://github.com/Civile/Duedo.js
Another problem that i found is: the camera translation (canvas translation) destabilizes all the body. Example, when the camera follows a sprite, everything (physics bodies) begins to slips.
Thank you

About the first problem i solved setting the body position to its current position everytime i need it. This completely stops the body. But still don't know how to fix the second issue

Upgrading to the latest master build seems to resolve this - can you try it? (I think the cause was fixed in #76).
Also just a heads up: when you need to precisely control a body like that it's often better to use Body.setVelocity on key down for every step, then after key up friction should slow the body down naturally as expected.

Another problem that i found is: the camera translation (canvas translation) destabilizes all the body.

Rendering shouldn't have any effect on the physics, do you have a jsfiddle for this?

Ok, thank you very much, i'll try it and certainly let you know. In the meanwhile i will investigate that strange problem that seems to occur  during the translation of the canvas. It should be something else.


Request for Python version of connected_components and Performance Comparison Inquiry

Hi @ronghanghu
In the previous issues, many people mentioned the installation problems with _C, such as #53 #59 #22 , and I have encountered similar issues:
UserWarning: cannot import name '_C' from 'sam2'

Skipping the post-processing step due to the error above.
You can still use SAM 2 and it's OK to ignore the error above,
although some post-processing functionality may be limited
(which doesn't affect the results in most cases; see
https://github.com/facebookresearch/segment-anything-2/blob/main/INSTALL.md).

By observing the files in csrc, it was found that there is a function similar to the union-find algorithm called connected_components.
Could you provide a pure Python version of this function? This would be more installation-friendly, especially for people who are not convenient to update the CUDA driver : ).
Or is there a significant difference in time consumption between the CUDA-based implementation and the Python-based implementation? How much exactly is it? In which scenarios would there be a larger difference?
Looking forward to your reply, thank you very much.

Hi @Spark001, thanks for your interest in SAM 2.
In most scenarios, this post-processing step doesn't make a notable difference. It is intended to cover the (relatively rare) case of removing (filling) some small holes in the output masks.

Could you provide a pure Python version of this function?
For a pure Python version, it's mostly similar to cv2.connectedComponentsWithStats in OpenCV (see https://www.geeksforgeeks.org/python-opencv-connected-component-labeling-and-analysis/) or skimage.measure.label in Scikit-Image (see https://scikit-image.org/docs/stable/api/skimage.measure.html#skimage.measure.label). For the latter, there is a community implementation of it in https://github.com/facebookresearch/segment-anything-2/pull/216 that you may have a try with :)

Or is there a significant difference in time consumption between the CUDA-based implementation and the Python-based implementation? How much exactly is it? In which scenarios would there be a larger difference?
Yes, running this post-processing step is usually much slower on CPUs than using the CUDA-based implementation (and it could be a major overhead in video applications, so it's recommended to compile the CUDA kernel above for connected components or to just skip it, instead of running a CPU version of this op.

@ronghanghu  Thanks for your quick reply 👍
I will try to find a way to compile it.


pleases add "my changes"to article.

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)

Closes #XXXXX

This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. Please read through our contributing docs to learn what submissions we are looking for. 👍


Backpack Contents Gone after Creeper Explosion.

Playing on the RLCraft modpack, Placed backpack down to store loot in it and started exploring, Returned to backpack to pick up and leave and the backpack was blown up by a creeper before being able to pick it up in a panic I tried crouching to pick up the items but I was unable to pick them up via crouching even upon right clicking them they would not enter my inventory, during the course of this action another creeper blew me up. Upon returning within a minuet the items from inside the backpack were gone however my items that I had in my inventory did not. Is this intended?

Was your inventory (mostly) full at that time? Both the backpack exploding and items getting destroyed by creeper explosions are intentional, the latter being a Vanilla mechanic. However, if you were indeed completely unable to pick up the items dropped from an exploded backpack, that is a bug we'll have to investigate.

I opened my inventory mid panic and saw that I only had 1 and a half rows of inventory at the time however I didn't get a chance to try picking them up again after confirming that was the case due to the second creeper blowing me up.
Thank you for the speedy response.


Removed unnecessary revalidations from swr fetch

📃 Description
With this PR I have reduced unnecessary revalidations in SWR which was causing all the components to refetch the data. and added user info card in blog page.
Fixes #263
What type of PR is this? (check all applicable)

[ ] 💡 Feature
[x] 🐛 Bug Fix
[ ] 📃 Documentation Update
[x] 🎨 Style Changes
[x] 💻 Code Refactor
[ ] 🔥 Performance Improvements
[ ] ✅ Test

🔰 Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

❓ How Has This Been Tested?
NIL
🔰 Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] Any dependent changes have been merged and published in downstream modules

Please separate the actual fix and the minor improvements. It becomes harder to review the code and moreover harder to revert the feature


add Terraform implementation

using local variables from variables.tf file

@Deodatuss Please sign the Contributor License Agreement!
Click here to manually synchronize the status of this Pull Request.
See the FAQ for frequently asked questions.


Feature Request: Add in options/flags to omit remotes

Description
As a user with a large shared repository, the origin/* branches are crowding my list without any way to filter them right now.
Would you consider adding in an option to delete local repository branches only and/or specify if we want to include remote branches of the same name on a specified remote?

Thanks for the feature request @jwu910, I'm currently working on building out more CLI-like functionality and will look first at being able to pass in an --omit-remotes like flag to tackle this issue.

I think that sounds great, either omit by default or include by default, but allowing users to set an option that persists could cover many use cases


v1.1.2 (v1.2.0 >= won't be archived)

Bug Fixes

Dependency issue from jekyll < 4.0
Overlapped nav contents
Category name is not shown properly

The rollback may cause serious impacts for the later versions. Very unwelcome situation though, you were lucky to remove the problematic versions.
I found that uploading same version twice is blocked. It means, the next version tag should begin with 1.2.5 (since v1.2.0~1.2.4 are yanked).

We must reorganize the build test processes to prevent this mess from happening again.

I truly agree with that we should not have been to hasty.
Here is my checklist for the basic features:

Features
Build by git fork
Build by gem package

Theme change
○
○

Search
○
○

Nav
○
○

Pagination
○
○

Visitor counter
○
○

Giscus
○
○

Categorization
○
○

Tag
○
○

Toc
○
○

Top button
○
○

Related Posts
○
○

Anything I have missed?

I still get a failure.
/usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:84:in `rescue in gemspec': The jekyll-theme-satellite theme could not be found. (Jekyll::Errors::MissingDependencyException)
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:81:in `gemspec'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:19:in `root'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:12:in `initialize'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:4[39](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7778933142/job/21209315221#step:4:40):in `new'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:439:in `configure_theme'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:55:in `config='
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:23:in `initialize'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/commands/build.rb:30:in `new'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/commands/build.rb:30:in `process'
	from /usr/local/bundle/gems/github-pages-228/bin/github-pages:70:in `block (3 levels) in <top (required)>'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/program.rb:[42](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7778933142/job/21209315221#step:4:43):in `go'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
	from /usr/local/bundle/gems/github-pages-228/bin/github-pages:6:in `<top (required)>'
	from /usr/local/bundle/bin/github-pages:23:in `load'
	from /usr/local/bundle/bin/github-pages:23:in `<main>'
/usr/local/lib/ruby/2.7.0/rubygems/dependency.rb:311:in `to_specs': Could not find 'jekyll-theme-satellite' (>= 0) among 151 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/github/home/.gem/ruby/2.7.0:/usr/local/lib/ruby/gems/2.7.0:/usr/local/bundle', execute `gem env` for more information
	from /usr/local/lib/ruby/2.7.0/rubygems/dependency.rb:323:in `to_spec'
	from /usr/local/lib/ruby/2.7.0/rubygems/specification.rb:986:in `find_by_name'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:82:in `gemspec'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:19:in `root'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/theme.rb:12:in `initialize'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:[43](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7778933142/job/21209315221#step:4:44)9:in `new'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:439:in `configure_theme'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:[55](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7778933142/job/21209315221#step:4:56):in `config='
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:23:in `initialize'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/commands/build.rb:30:in `new'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/commands/build.rb:30:in `process'
	from /usr/local/bundle/gems/github-pages-228/bin/github-pages:[70](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7778933142/job/21209315221#step:4:71):in `block (3 levels) in <top (required)>'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `block in execute'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `each'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
	from /usr/local/bundle/gems/github-pages-228/bin/github-pages:6:in `<top (required)>'
	from /usr/local/bundle/bin/github-pages:23:in `load'
	from /usr/local/bundle/bin/github-pages:23:in `<main>'
Error:  Logging at level: debug Configuration file: /github/workspace/./_config.yml Theme: jekyll-theme-satellite github-pages 228 | Error: The jekyll-theme-satellite theme could not be found.

@mgarrixx
Try this:
# in _config.yml

remote_theme: byanko55/jekyll-theme-satellite # theme: jekyll-theme-satellite

I found inserting below lines makes build process complete.
plugins:
  - jekyll-theme-satellite

But, the problem is: it is NOT the layout we have developed.

So, here are the cases:

Build Git page by Fork/Source.zip -> OK
Build locally by Fork/Source.zip -> OK
Build Git page based on Gem package -> NOPE
Build locally based on Gem package -> OK

Only the option that deploys the site on Git page with Gem package caused trouble, didn't it?

@mgarrixx
Try this:
# in _config.yml

remote_theme: byanko55/jekyll-theme-satellite # theme: jekyll-theme-satellite

That gives me another error log!  ( ┛△┗ )
Liquid Exception: Liquid syntax error (/tmp/jekyll-remote-theme-20240205-8-1jz4xe6/_includes/sidebar.html line 2): Expected end_of_string but found id included in /_layouts/page.html
/usr/local/bundle/gems/liquid-4.0.4/lib/liquid/parser.rb:[16](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:17):in `consume': Liquid syntax error (/tmp/jekyll-remote-theme-20240205-8-1jz4xe6/_includes/sidebar.html line 2): Expected end_of_string but found id included  (Liquid::SyntaxError)
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/filters.rb:369:in `parse_condition'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/filters.rb:200:in `where_exp'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/strainer.rb:56:in `invoke'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/context.rb:86:in `invoke'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/variable.rb:84:in `block in render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/variable.rb:82:in `each'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/variable.rb:82:in `inject'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/variable.rb:82:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/tags/assign.rb:26:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/block_body.rb:103:in `render_node_to_output'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/block_body.rb:91:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:206:in `block in render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:240:in `with_profiling'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:205:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:2[18](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:19):in `render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:30:in `block (2 levels) in render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:42:in `measure_bytes'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:29:in `block in render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:28:in `render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/tags/include.rb:140:in `block in render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/context.rb:123:in `stack'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/tags/include.rb:137:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/block_body.rb:103:in `render_node_to_output'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/block_body.rb:91:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:206:in `block in render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:240:in `with_profiling'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:205:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:218:in `render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:30:in `block (2 levels) in render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:42:in `measure_bytes'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:29:in `block in render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:28:in `render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/tags/include.rb:140:in `block in render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/context.rb:123:in `stack'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/tags/include.rb:137:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/block_body.rb:103:in `render_node_to_output'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/block_body.rb:91:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:206:in `block in render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:240:in `with_profiling'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:205:in `render'
	from /usr/local/bundle/gems/liquid-4.0.4/lib/liquid/template.rb:218:in `render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:30:in `block (2 levels) in render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:42:in `measure_bytes'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:29:in `block in render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:49:in `measure_time'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/liquid_renderer/file.rb:28:in `render!'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/renderer.rb:126:in `render_liquid'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/renderer.rb:[19](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:20)5:in `render_layout'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/renderer.rb:158:in `place_in_layouts'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/renderer.rb:88:in `render_document'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/renderer.rb:62:in `run'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:479:in `render_regenerated'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:464:in `block (2 levels) in render_docs'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:463:in `each'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:463:in `block in render_docs'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:462:in `each_value'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:462:in `render_docs'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:191:in `render'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/site.rb:71:in `process'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/command.rb:28:in `process_site'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/commands/build.rb:65:in `build'
	from /usr/local/bundle/gems/jekyll-3.9.3/lib/jekyll/commands/build.rb:36:in `process'
	from /usr/local/bundle/gems/github-pages-228/bin/github-pages:70:in `block (3 levels) in <top (required)>'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:2[20](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:21):in `block in execute'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:[22](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:23)0:in `each'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/command.rb:220:in `execute'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary/program.rb:42:in `go'
	from /usr/local/bundle/gems/mercenary-0.3.6/lib/mercenary.rb:19:in `program'
	from /usr/local/bundle/gems/github-pages-228/bin/github-pages:6:in `<top (required)>'
	from /usr/local/bundle/bin/github-pages:[23](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:24):in `load'
	from /usr/local/bundle/bin/github-pages:23:in `<main>'
Error:  Logging at level: debug Configuration file: /github/workspace/./_config.yml GitHub Pages: github-pages v228 GitHub Pages: jekyll v3.9.3 Theme: jekyll-theme-primer Theme source: /usr/local/bundle/gems/jekyll-theme-primer-0.6.0 Requiring: jekyll-github-metadata Requiring: jekyll-seo-tag Requiring: jekyll-coffeescript Requiring: jekyll-commonmark-ghpages Requiring: jekyll-gist Requiring: jekyll-github-metadata Requiring: jekyll-paginate Requiring: jekyll-relative-links Requiring: jekyll-optional-front-matter Requiring: jekyll-readme-index Requiring: jekyll-default-layout Requiring: jekyll-titles-from-headings Requiring: jekyll-remote-theme GitHub Metadata: Initializing... Source: /github/workspace/. Destination: /github/workspace/./_site Incremental build: disabled. Enable with --incremental Generating... Theme: byanko55/jekyll-theme-satellite Theme source: /tmp/jekyll-remote-theme-20[24](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:25)0205-8-1jz4xe6 Remote Theme: Using theme byanko55/jekyll-theme-satellite Remote Theme: Downloading https://codeload.github.com/byanko55/jekyll-theme-satellite/zip/HEAD to /tmp/jekyll-remote-theme-20240205-8-qgfgay.zip Remote Theme: Unzipping /tmp/jekyll-remote-theme-20240205-8-qgfgay.zip to /tmp/jekyll-remote-theme-20240205-8-1jz4xe6 Requiring: jekyll-feed Requiring: jekyll-sitemap Requiring: jekyll-seo-tag Reading: _pages/Category B/Subcategory b/Subsubcategory 2/post-05.md Reading: _pages/Category B/Subcategory b/Subsubcategory 2/index.md Reading: _pages/Category B/Subcategory b/post-03.md Reading: _pages/Category B/Subcategory b/index.md Reading: _pages/Category B/Subcategory b/Subsubcategory 1/post-04.md Reading: _pages/Category B/Subcategory b/Subsubcategory 1/index.md Reading: _pages/Category B/Subcategory c/index.md Reading: _pages/Category B/index.md Reading: _pages/posting guide.md Reading: _pages/markdown guide.md Reading: _pages/visitor counter.md Reading: _pages/comment system.md Reading: _pages/Category A/Subcategory a/post-02.md Reading: _pages/Category A/Subcategory a/post-01.md Reading: _pages/Category A/Subcategory a/index.md Reading: _pages/Category A/index.md Reading: _pages/index.md Generating: JekyllOptionalFrontMatter::Generator finished in 5.5324e-05 seconds. Generating: JekyllReadmeIndex::Generator finished in 5.7949e-05 seconds. Generating: Jekyll::Paginate::Pagination finished in 5.861e-06 seconds. Generating: JekyllRelativeLinks::Generator finished in 1.9907e-05 seconds. Generating: JekyllDefaultLayout::Generator finished in 1.3976e-05 seconds. Generating: JekyllTitlesFromHeadings::Generator finished in 1.3365e-05 seconds. Rendering: _pages/Category A/Subcategory a/index.md Pre-Render Hooks: _pages/Category A/Subcategory a/index.md Rendering Markup: _pages/Category A/Subcategory a/index.md Requiring: kramdown-parser-gfm Rendering Layout: _pages/Category A/Subcategory a/index.md Layout source: theme Rendering: _pages/Category A/Subcategory a/index.md/#excerpt Pre-Render Hooks: _pages/Category A/Subcategory a/index.md/#excerpt Rendering Markup: _pages/Category A/Subcategory a/index.md/#excerpt GitHub Metadata: Generating for mgarrixx/mgarrixx.github.io GitHub Metadata: Calling @client.pages("mgarrixx/mgarrixx.github.io", {}) github-pages 2[28](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:29) | Error: Liquid syntax error (/tmp/jekyll-remote-theme-202[40](https://github.com/mgarrixx/mgarrixx.github.io/actions/runs/7779812400/job/21211550987#step:4:41)205-8-1jz4xe6/_includes/sidebar.html line 2): Expected end_of_string but found id included Remote Theme: Cleaning up /tmp/jekyll-remote-theme-20240205-8-1jz4xe6

That exception is what I fixed in this patch (See 06c36b4).
After I close this PR, could you try it once again?
 My opinion is, nothing could be better options than 'fork' for Git page.

Anyway... as long as both options can be carried out in their own way.

I found a post about 'remote_theme' in Jekyll Forum. Give it a try.
https://talk.jekyllrb.com/t/help-installing-jekyll-theme-on-github-pages/5164


ngf-capture="camera" won't open up camera application (opens photo gallery instead) in Cordova app

I am trying to use the ngf-camera attribute to enable access to the camera, I have added the relevent info to the Android Manifest xml file for permissions.
In the view I have the following code and for some reason it will always open up the Phone Gallery rather than open the camera application, can anyone suggest what I am doing wrong?
<input type="file" ngf-select="onCameraSelect(file)" ngf-fix-orientation="true" ngf-capture="'camera'" ng-model="file" accept="image/*">
I want this to enable me to take a photo directly from the camera - is there any obvious reason why it won't open the camera application? I am using the latest version of ng-file-upload, my mobile application is running Cordova/AngularJS
Cordova 6.5.0
NPM 5.3.0
Node 6.10.3
Running code on multiple Android devices 6.0 & 7.1.1
ng-file-upload 12.2.13
AngularJS 1.3.0

@gkimpson have you found a solution to this problem? I have the same. I suspect it might have something to do with permissions.

@Arxi I believe we got around this using ngf-camera="other" instead
also make sure the permissions are set - add the cordova camera plugin as this will add the permissions.
Hope that helps 👍

@gkimpson thanks for your reply! I tried ngf-camera="other", but nothing changes. I also have the cordova camera plugin installed, but it doesn't seem to add the necessary permissions to AndroidManifest or ask about the right permissions for camera in Android 7, so I added the permissions manually and also asked for them. Still, the problem persists.
Would you be so kind as to share a bit of your HTML or JS to see how you hande this? Or maybe your Content Security Policy from index.html, or allow-intent tags from config.xml? I don't know if these might affect this behaviour. Thank you!
The strange part is, that when I try the demo page in Chrome 60.0.3112.107 (in Android), it shows the app chooser correctly (Camera, Camcorder, File). When trying the same code in the app (Android 7.1.1, WebView 60.0.3112.107 - the same as Chrome, Cordova 7.0.1, cordova android 6.2.3), it goes straight to file chooser, no camera/camcorder option available.

@Arxi I just remember how I got around this was to install CrossWalk - due to the issue with the webview in Android. This worked however it seemed to cause some issues with the app crashing on old devices (seemed fine on my newer OnePlus 3 device)
https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview
Hope that helps :)

@gkimpson ah yes, now I remember using crosswalk on another app. Unfortunately, crosswalk adds significant overhead in terms of app size. But I don't see any other option, except for maybe implementing the ability to take a photo via cordova-plugin-camera myself.
Thank you again!

I have exactly the same problem. Had someone solve it without crosswalk?

@gine I stopped using ng-file-upload for taking pictures and now use it only for selecting pictures from disk. For taking pictures, I use cordova-plugin-camera. So unfortunately I always have to show two buttons to the user: "Select photo" using ng-file-upload and "Take photo" using cordova-plugin-camera.
I use Cordova 6.4.0.


Rename ActionGroupButtonComponent

Proper naming is key for the maintainability of a project - lets rename ActionGroupButtonComponent to a more suitable name, some examples are StylingOptions, TextStyleOptions, StylePreferences, etc...
Files, components and stories should all be renamed.

Changes made and branch has been merged, closing issue #3


Add a --check flag

For continuous integration, it would be helpful to have a --check flag that returns a non-zero status code without changing the source files.

Or just return non-zero if any files were changed, I guess.

Point taken, will add --check!

Added, thanks for your report!


Added benyaming's projects

Added some of my pet projects :)

@benyaming The telegram bot looks like a really cool idea!


Input control  kwashie

Added nes module

LGTM 👍

Module looks good, I won't merge into main yet because the info.yaml and test makefile need to be changed to reflect the addition of a new source file or the module will not be synthesized.

Right, I'll do that and push as soon as possible. Thanks for pointing it out

I updated the timings to work with a 50MHz clk.


Get fish species options from Realm Object

The list of fish species should come from the MenuData Realm Object rather than being hard coded.

Fixed in scope #154


Domains required to whitelist for SSO

Our app is authenticating using Azure AD, we had below domains which had been whitelisted:

aadcdn.msauth.net (Authentication purposes)
aadcdn.msauthimages.net (Authentication purposes)
login.live.com (Authentication purposes)
autologon.microsoftazuread-sso.com (Authentication purposes)

For some of the new user we can see it is failing while trying to resolve aadcdn.msftauth.net. Also while looking at azure-portal documentation  we can see some more domains are listed wot be whitelisted.
Kindly confirm if the below list of domains the complete which needs to be whitelisted for authenticating using Azure AD:
login.microsoftonline.com
*.aadcdn.msftauth.net
*.aadcdn.msftauthimages.net
*.aadcdn.msauthimages.net
*.logincdn.msftauth.net
login.live.com
*.msauth.net
*.aadcdn.microsoftonline-p.com
*.microsoftonline-p.com

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

ID: d8336877-da93-ecd6-829a-0cc068caaf29
Version Independent ID: 1e70f094-f220-92c6-7e5b-cfaf071101d5
Content: Allow the Azure portal URLs on your firewall or proxy server - Azure portal
Content Source: articles/azure-portal/azure-portal-safelist-urls.md
Service: azure-portal
GitHub Login: @JnHs
Microsoft Alias: jenhayes

@ektapatil-08
Thanks for your feedback! We will investigate and update as appropriate.

@ektapatil-08 - Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can review and update accordingly.

Hi @ektapatil-08 - thanks for your patience as we looked into this. We've updated this topic with a note indicating that for endpoints with wildcards, we also advise you to add the URL without the wildcard. The current list shown for Azure portal authentication is the complete set, but for those with wildcards listed, you'll also want to add the URL without its wildcard. (For example, allow both *.aadcdn.msftauth.net and aadcdn.msftauth.net.)
I believe this addresses your question, so I'll close this issue now, but please let us know if you have additional feedback. Thank you for taking the time to submit this issue and help us make sure our documentation is providing the needed details.
#please-close


feat: remove file ignore

Codecov Report

Merging #30 (245f698) into main (2d6c811) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #30   +/-   ##
=======================================
  Coverage   93.66%   93.66%
=======================================
  Files          31       31
  Lines         679      679
=======================================
  Hits          636      636
  Misses         43       43

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 2d6c811...245f698. Read the comment docs.


"Unexpected error: error" when resolving alerts

v1.4.0, es5x release.
This is a new install and all seems fine aside from this error.
Occurs when resolving single or multiple alerts. Alerts remain on the screen but are deleted, and disappear on refreshing the page.
Error log:
[Fri Nov 17 14:03:24.108615 2017] [:error] [pid 3610] [client <IP_ADDRESS>:40236] except [NONE] Errno 2: "array_key_exists(): The first argument should be either a string or an integer" at [/var/www/411/phplib/Util.php:36] 0:[array_key_exists() called at [/var/www/411/phplib/Util.php:36]] 1:[FOO\\Util::exists() called at [/var/www/411/phplib/Enricher.php:21]] 2:[FOO\\Enricher::getEnricher() called at [/var/www/411/phplib/Notification.php:288]] 3:[FOO\\Notification::groupAlerts() called at [/var/www/411/phplib/Notification.php:66]] 4:[FOO\\Notification::sendAlertActionEmail() called at [/var/www/411/phplib/REST/Alerts.php:352]] 5:[FOO\\Alerts_REST->setAlertFields() called at [/var/www/411/phplib/REST/Alerts.php:269]] 6:[FOO\\Alerts_REST->setAlertState() called at [/var/www/411/phplib/REST/Alerts.php:110]] 7:[FOO\\Alerts_REST->PUT() called at [/var/www/411/phplib/REST.php:109]] 8:[FOO\\REST->route() called at [/var/www/411/htdocs/api/alerts.php:6]], referer: https://411.kelp.wgtn.cat-it.co.nz/alerts?query=state:(0+1) [Fri Nov 17 14:03:24.109235 2017] [:error] [pid 3610] [client <IP_ADDRESS>:40236] PHP Fatal error:  Uncaught Error: Class 'null' not found in /var/www/411/phplib/Notification.php:289\nStack trace:\n#0 /var/www/411/phplib/Notification.php(66): FOO\\Notification::groupAlerts(Array, Array)\n#1 /var/www/411/phplib/REST/Alerts.php(352): FOO\\Notification::sendAlertActionEmail(Array, Object(FOO\\AlertLog), Array, Array)\n#2 /var/www/411/phplib/REST/Alerts.php(269): FOO\\Alerts_REST->setAlertFields(Array, Array, 6, 6, 2, 0)\n#3 /var/www/411/phplib/REST/Alerts.php(110): FOO\\Alerts_REST->setAlertState(Array)\n#4 /var/www/411/phplib/REST.php(109): FOO\\Alerts_REST->PUT(Array, Array)\n#5 /var/www/411/htdocs/api/alerts.php(6): FOO\\REST->route()\n#6 {main}\n  thrown in /var/www/411/phplib/Notification.php on line 289, referer: https://411.kelp.wgtn.cat-it.co.nz/alerts?query=state:(0+1)

Can you check if this is fixed on head? https://github.com/etsy/411/tree/es-5.x

Closed due to inactivity.


'getMap' is not defined in GoogleMaps plugin. - googlemaps-cdv-plugin.js:133

Hi.
I'm gaving issuies with getting this plugin to work properly. As in title, I'm getting error in console:
googlemaps-cdv-plugin.js:133 'getMap' is not defined in GoogleMaps plugin.
BaseClass.self.errorHandler @ googlemaps-cdv-plugin.js:133
callbackFromNative @ cordova.js:295
processMessage @ cordova.js:1081
processMessages @ cordova.js:1104
pollOnce @ cordova.js:973
pollOnceFromOnlineEvent @ cordova.js:960
I was searching for some time now and couldn't figure why. I've checked all API keys, I've updated plugin from GIT, also tried clean install, checked if keys are in config file and manifest, check all simillar issues on one of Your wiki pages and still no luck. I'm using cordova with ionic framework. I'm testing on few devices not emulators. Strangly if I refresh page from Chrome inspect console this error is gone. It occures only on first launch of the applikaction. Can someone help me with this? Current i'm out of ideas.
The part where i initialize the map looks like this:
$APP.controller('LocalizationController', ['MapsService', '$scope', '$ionicPlatform', '$ionicModal',
       function ($MapsService, $scope, $ionicPlatform, $ionicModal) {
        $scope.map, $scope.markers = {}, $scope.service;
        $ionicPlatform.ready(function () {
            $(document).ready(function(){
                $('#map_canvas').height($(document).height() - $('.top').outerHeight() - $('.app-top').outerHeight());
                if (plugin) {
                    plugin.google.maps.Map.isAvailable(function (isAvailable, message) {
                        if (isAvailable) {
                            console.log(document.getElementById("map_canvas"));
                            $scope.map = plugin.google.maps.Map.getMap(document.getElementById("map_canvas"));
                            $scope.map.addEventListener(plugin.google.maps.event.MAP_READY, function () {
                                $scope.map.setOptions({
                                    backgroundColor: 'white',
                                    mapType: plugin.google.maps.MapTypeId.ROADMAP,
                                    controls: {
                                        'compass': false,
                                        'myLocationButton': false,
                                        'indoorPicker': false,
                                        'zoom': false
                                    },
                                    gestures: {
                                        'tilt': false,
                                        'rotate': false
                                    }
                                });
                            });
                        } else {
                        }
                    });
                }
            });
        });
        $scope.$on('$ionicView.enter', function (e) {
        });
    }]);

Hmm, it is difficult to give advice, but try to wrap the getMap() method with setTimeout() statement.
setTimeout(function() {
  $scope.map = plugin.google.maps.Map.getMap(document.getElementById("map_canvas"));
  $scope.map.addEventListener(plugin.google.maps.event.MAP_READY, function () {
      $scope.map.setOptions({
          backgroundColor: 'white',
          mapType: plugin.google.maps.MapTypeId.ROADMAP,
          controls: {
              'compass': false,
              'myLocationButton': false,
              'indoorPicker': false,
              'zoom': false
          },
          gestures: {
              'tilt': false,
              'rotate': false
          }
      });
  });
}, 100);

Unfortunetly this doesn't help eather. I've done some more tests and so i simplified a code to:
var map;
setTimeout(function () {
	$('#map_canvas').height($(document).height() - $('.top').outerHeight() - $('.app-top').outerHeight());
	plugin.google.maps.Map.isAvailable(function (isAvailable, message) {
		if (isAvailable) {
			alert('MAP IS AVAIBLE');
			map = plugin.google.maps.Map.getMap();
		} else {
		alert('MAP IS NOT AVAIBLE');
	}
});
}, 100);

As a result i'll have alert that map is avaible and when getMap is called error still occures. I've also moved to main file and still nothing. While testing the is something weird. When i run app with livepreview (ionic provides this rather nice tool) it all seems to be as it should. Next when i run same app without livepreview and error occures no matter if it is debug or release version.
Is it possible that framework and/or angular is causing this?

I don't know which OS you are talking about, let's explain the map.isAvailable.
The map.isAvailable() is simply checked the Google Maps Android API v2 is able to run on the deivce.
In iOS, just returns true always.

When i run app with livepreview (ionic provides this rather nice tool) it all seems to be as it should. Next when i run same app without livepreview error occures no matter if it is debug or release version.

Regarding of your talk, it seems the Webkit problem.
WebKit is the rendering engine of the WebView(Android) and the UIWebView(iOS).
I noticed that the WebKit of the iOS sometimes does not draw the browser contents as transparent until redraw mandatory.
If you installed this plugin from npm, uninstall it, then reinstall from the git repository.
cordova plugin add https://github.com/mapsplugin/cordova-plugin-googlemaps --variable API_KEY_FOR_ANDROID='...' --variable API_KEY_FOR_IOS=''

If you already installed this plugin from this git repository, reinstall it.
And even the latest code does not work, try like this before the map.getMap()
document.body.style.backgroundColor = "rgba(0,0,0,0)";
document.body.style.display='none';
document.body.offsetHeight;
document.body.style.display='';

If the above advices did not work, please provide a test project that reproduce your issue, including platforms directory.
Put your whole project files on github (or somewhere), then share the url please.
(Don't give me a large zipped file, or similar)
Please save my work and time.

Sorry for my english. It's not my native language.
Further research and new informactions came up. I did a copy of whole my app files and removed most of my code. Then i added files one by one (controllers, services). Trial and error method seemed to be most useful here. Due to testing i also renamed app from "bikeservice" to "bikeservice2" (only in cofing.xml file). After adding all files back to "bikeservice2" and testing each step all was working well (no errors). But when i changed name back from "bieservice2" to "bikeservice" error is present again, change name back to "bikeservice2" and error is gone again.
Changing only version in xml file didn't take any effect.
As the end result i think it is some problem with android itself. It seems that OS cached some way bad code and that is causing this error. Because this app is in use already i need to have some solution in case if some user will get same results.
So my question is it possible that this plugin is cached some way and is there a way to refresh chace or prevent cache entirely?
 I've tested what i have to change in config.xml to get this app running. And all i need to change is "id" parameter in "widget" tag. So i suspect that there is sme connection between app id and plugin on the device, where some corrupted plugin or my app data is still on the device. Also i deleted the app and all its data with app manager in settings in the device. This operation didnt fix my problem with maps plugin.
Any ideas what is going on here and how to fix this issue without changing id of the map?
This app is on google play for some time and few people installed it. Main issue is i can't realy change id of the map.

Great inspecting. However,..
The problem is your id means it is not related technically to this plugin anymore.
This plugin uses the Google Maps Android API v2 in the official way, no hacking at all.
So there is no reason to block this plugin by Google (and other people use this plugin a lot).
The possible solution is that remove current API Key from Google APIs console, and register your finger print and your app ID, then generate your API again.
And try your app with another Android phone (not your phone).
Still occurred, no more help. You need to change your app ID, or contact Google by yourself.

Just to summary this issue if someone will have same problem.
All my tests are leading to google api. Because app is used on android and ios and on ios all works well i assume that google is for some reason bloking app in api for android. I think it is related to my trials and generating couple api keys in this process. Anyway, e-mail is sent to google with this issue and i'm still waiting for replay. If thre will some information i will let You know how it went.

Google simplified the API key today.
You can use the API key for both OS.
Try to recreate your key.
https://googlegeodevelopers.blogspot.com/2016/10/key-improvements-for-your-maps-api.html

And there is the solution. Very ugly approach but works.
Generating new API keys didn't help unfortunetly. Also no matter if i used key for andoir only or ios.
When i was testing issue again i noticed that when i lauch page where map is app returned same error as before. Then i went back to main page and again to page where map is and suprisingly it was warking. So i figured out that maybe some timeout should do the trick and so i did something like below. Where function startMap returns false if function getMap is undefined.
plugin.google.maps.Map.isAvailable(function (isAvailable, message) {
				if (isAvailable) {
					document.body.style.backgroundColor = "rgba(0,0,0,0)";
					document.body.style.display = 'none';
					document.body.offsetHeight;
					document.body.style.display = '';
					if (startMap()) {

					} else {
						setTimeout(function () {
							startMap();
						}, 500);
					}
				} else {
				}
			});

I started having this same error today! no change to app code, I just updated Cordova and my Android SDK. I rolled back Cordova but the error still persisted and map won't load.
I manually rolled back the Google Play services SDK to 38 from 39, no change.
I had a laptop which I hadn't updated the Android SDK, so i proceeded to update each component one by one. I've tracked it down to the newest version of "Google Repository" v44 downgrading it to v42 the issue goes away.

Hi, i have 'getMap' is not defined in GoogleMaps plugin. error after upgrade to "Google Repository" v44
is there any solution without downgrading?
if i need do  downgrade, how exactly it is done?

Same problem as @canadaka and @dennis-b. Also wondering how to downgrade, couldn't find Google Repository v42 anywhere... Thanks in advance!

I fixed it without downgrading (I'm using Ionic 2): I removed the android platform and the cordova plugin, reinstalled both and then inside project.properties, changed the fixed versions of map and locations to +

Hi guys!
I have tried @fxlemire solution, but without success..
I also tried @pawelduszczak solution, but without success too..
I have these dependencies installed:

Does anybody know a real root cause? It was some bug in play-services-maps:9.8.0 or what?

We got it too. Interestingly, we ran into another problem related to project.properties too.
See #1208
The problem is resolved by editng project.properties's map and locations to 10.0.0. But then, we ran into this bug.

Changing the project.properties to the following also solved the getmap issue for me.
cordova.system.library.1=com.google.android.gms:play-services-maps:+
cordova.system.library.2=com.google.android.gms:play-services-location:+


Filled out jenkins-config-rhel template to be able to employ attributes throughout

A primary driver for this PR is that the AJP port was not changed if Jenkins was not running on port 8080. If, for example, I have Tomcat running on 8080 and AJP 8009, running Jenkins on port 8081 still failed because it is hard-coded to listen to port 8009 for AJP. I decided to template out the other config values while I was in there

It's not clear to me that this build has failed due to my PR? I am guessing not.

@isuftin I don't think it failed because of these changes, no.
However, I'm not sure if those values are left out because that template should be modified from a "wrapper" cookbook or not. @opscode-cookbooks/ociv Please review.

As @jtimberman mentioned this template should just be created in a wrapper cookbook.


Login times out whether or not you are actively using the system

The session timer is currently 30 minutes.  The keep active flag is not yet implemented.

No longer relevant.


added chat bot UI

@Premkolte assign me this

What chatbot you gonna use, are you using some library or building from scratch ?

What chatbot you gonna use, are you using some library or building from scratch ?

i was trying with openAi Api but i didn;t work out

Use Gemini API it has free API key which works

Use Gemini API it has free API key which works

okk

Use Gemini API it has free API key which works

okk but there is a problem while merging it

it doesn't pass all the checks

anything i can do??

I had changed the folder structure thats do one thing save that file somewhere and pull the changes then create that page

which file are you talking about??

Oh sorry its in landing page


[GHSA-f865-m6cq-j9vx] ReDOS in Mpmath

Updates

Affected products

Comments
There is a patched version released 1.3.0

This change is consistent with the release notes for 1.3.0. https://github.com/mpmath/mpmath/releases/tag/1.3.0


I have a usage question to consult with

When I execute the frida - U - N your. target. application - l xxx.js command on the terminal, both the terminal and the app are blocked. How should I continue to run them?

I follow the help to execute resume

This is my script file content a.js
function main() {
	if (Java.available) {
		console.log("available");
		try {
			Java.performNow(function () {
				var activity = Java.use("android.app.Activity");
				var builderCls = Java.use("android.app.AlertDialog$Builder");
				var StringCls = Java.use("java.lang.String");
				activity.onCreate.overload("android.os.Bundle").implementation = function (savedInstanceState) {
					var builder = builderCls.$new(this);
					this.onCreate(savedInstanceState);
					builder.setTitle(StringCls.$new("hook tip"));
					builder.setMessage(StringCls.$new("hook!!"));
					builder.create().show();
				}
			});
			console.log("java over hook");
		} catch (e) {
			console.log("[!]Exception:" + +e.message);
		}

	}
}

setImmediate(main)

This works fine for me. With this gadget there is no resume command because it automatically resumes after a frida client connects.
I tested your command frida -U -n Gadget -l a.js with your script on some random app that I have on my phone and it works.
Just some troubleshooting:

does connecting without a script works for you or does the app also stay paused without?
does it work on a different app?
check adb logcat -s ZygiskFrida to see if it repeatedly detects the app after you have connected (this could be the app restarting due to some protections kicking in)
you can try to see if setting a start up delay works with this specific app set start_up_delay_ms to some bigger value like 10000 for 10seconds. Often app don't pause at all if injection time is late in the process and can also sometimes bypass early checks.

This works fine for me. With this gadget there is no resume command because it automatically resumes after a frida client connects.
I tested your command frida -U -n Gadget -l a.js with your script on some random app that I have on my phone and it works.
Just some troubleshooting:

does connecting without a script works for you or does the app also stay paused without?
does it work on a different app?
check adb logcat -s ZygiskFrida to see if it repeatedly detects the app after you have connected (this could be the app restarting due to some protections kicking in)
you can try to see if setting a start up delay works with this specific app set start_up_delay_ms to some bigger value like 10000 for 10seconds. Often app don't pause at all if injection time is late in the process and can also sometimes bypass early checks.

Great, thank you for your reply.


⚠ Bofrost.ch has degraded performance

In d880a02, Bofrost.ch (https://www.bofrost.ch) experienced degraded performance:

HTTP code: 200
Response time: 1404 ms

Resolved: Bofrost.ch performance has improved in 9151b75.


Empty Graphs for v7.11.0 component Web UI main pages

Pelican Version:
v7.11.0
Pelican Service:

[ ] Client
[ ] Plugin
[ ] Registry
[X] Director
[X] Origin
[X] Cache

Describe the bug
Transfer Rate and Storage graphs for the Origin / Cache seem to stay empty.
"Federation Overview" areas also seem like they should content but don't.
To Reproduce
Look at Web UI v7.11.0 components
Expected behavior
Transfer Rate and Storage graphs should show information on how much data is being transferred.
Screenshots

Desktop (please complete the following information):

OS: Windows
Browser: Firefox

Closed by #1289

@CannonLock #1289 has nothing to do with this (it's an issue, not a PR) and hasn't actually been resolved. I'm very confused.

@turetske CP error, I have edited the original tagging.


Idea: Make it easy to plug-in Prism or VS Code/TextMate grammars.

Brilliant idea or terrible idea?  Would this enhance the ecosystem or destroy it?

Check out this addon https://github.com/foo123/highlightjs-grammar which works for all syntx highlighters and enables to define a grammar specification for a language and use it as is in every highlighter of your choice (including highlight.js and prism
)

and enables you to define a grammar specification for a language

I think that is the hard part unless you plan to publish and maintain a huge repository of grammars yourself.  This is why (most) people come to a library I think, for the supported languages. :-)  For most people saying "you just have to write your own grammar" is almost as bad as "you just have to write your own parser". :-)

@yyyc514  of course you have a point in that grammars need to be written themselves, else it would be good if a repository of grammars exists. I dont mind having such a repository (maybe in the future) and the repos themselves have already made grammars for some popular languages (eg php, python, css, javascript, html, etc.) as examples on how to create fully-functional grammars.
But again the point of the grammar addons started through my own use cases where I had to highlight custom languages or dsl's that were not supported by any known language. And it would be a pain in the neck if I had to create parsers all the time, especialy if the parser was tied to a specific highlighter and had to make a new one for another highlighter. So highlighting custom languages was the starting point of the grammar addons.
Of course creating a grammar requires a minimal knowledge (eg BNF specifications) but again it is very minimal knowledge than writing a full parser and having to delve into the internals of a syntax highlight framework. So I think it is a win-win situtation.
Again all these are optional, only for those who benefit from such an approach, the others can use what exists already as before. This is only an addon, it is not necesarily a replacer of existing frameworks or languages.

BNF spec... how deep does that get you?  Are you really just lexing mostly or is it contextual enough to know you're inside a class, that this is a function call, not a variable definition (they can look the same in C, etc), etc?
I'd be curious to see a BNF for JSX or something complicated and see how well it worked compared to say what we currently have.  Probably things we could learn.

The parsers created by the grammar addons are similar to PEGs which are mildly stronger than context-free parsers. But there are other features (like grammar actions) which enable strong context-sensitive parsing (not simply context-free).
Take a look at the xml grammar which not only highlights xml properly but detects errors, duplicate attributes, duplicate ids and so on..
The grammar reference is here
It is highly versatile, and eases the burden  a lot in creating highly functional and feature-free parsers with only minimal knowledge (and in fact knowledge about a language that is needed anyway, eg what is a keyword, an identifier, a comment for that language and so on..).
Of course someone may need a feature not supported by grammar specification or even not possible at all by a grammar specification (and in that case would need to write his own highly detailed parser), but I doubt one will be found.

If it can be modelled in a PEG grammar it can be done by the addon.

@foo123 Have you written a tokenizer/parser yourself for your grammar files?  Or is all you have a bunch of conversation scripts to convert them into various grammar files recognized by other engines?

@yyyc514 My grammar addons have a full-blown PEG-like parser of their own.
In fact they all have the same generic parser and only the interface code changes to adapt to a specific editor/highlighter

My grammar addons have a full-blown PEG-like parser of their own.

If that's true then you don't really need 99% of HLJS.  You could use merely the new TokenTree plus HTMLRender... or perhaps only a slightly modified HTMLRender... that's only 42 lines of code.
First turning your PEG grammars into valid HLJS modes seems like a lot of hard work with very little upside... why not just use a plugin instead that replaces our parser with your own?  You abort the actual parsing with a before callback and then in your after callback you'd have access to the emitter and could use it's simple API paired with your parsers output stream.
I'm not 100% sure all the pieces are in place to support that, but I'd love to see it tried.

@yyyc514 this is exactly what I was doing in the highlightjs-grammar  addn, I tried to bypass default hjs tokenizing and replace with the parse of the addon. But (continouing from the other issue), that was a bit hacky so that is why I asked if a better more modular way exists which is not so hacky.
The grammar addons since they sport a full blown parser and support defining a grammar through BNF specifications are really very modular and transferable from one editor/highlightyer to another. Grammar remains the same only the editor custom stying tags change. It is write grammar once use everywhere kind of addons

that was a bit hacky so that is why I asked if a better more modular way exists which is not so hacky.

And the new way is using plugins. Shouldn’t need to touch the library source at all.

Closing this issue - it never really received a lot of discussion.  The new API callbacks for highlight and highlightBlock should make attempting this sort of thing much simpler in the future - not the mention the beta emitter support (if the existing parser did what you wanted regarding parsing itself but just didn't generate the right output).  If anyone has any questions, feel free to ask.

Hello @foo123, @joshgoebel, @HKalbasi, and @RunDevelopment!
I was reading this conversation and also https://github.com/PrismJS/prism/issues/2848.
I was considering building new third-party languages that are missed in Highligjt.js, @jgm's Pandic and Prism.js (see the table below) because my enterprise's most of the colleagues to use them on their documentation sites
I was also considering using @foo123's highlightjs-grammar and prism-grammar to convert VSCode's third-party JSON syntaxes (converted from other types by @pedro-w's TextMate Languages), as:

.env by @mikestead;
Confluence Markup by @denco;
CSV by @mechatroner;
Fish by @bmalehorn;
FontForge by @stone-zeng;
Hugo by @theNewDynamic and @budparr;
Ignore files by @ldez;
Jekyll by @edheltzel;
Jess language by @ra405;
Linux Desktop file language by @nico-castell;
Mermaid language by @bpruitt-goddard;
MJML by @mjmlio;
RAML by @blzjns;
SSH Config by @mousavian;
Syntax Xcode Project Data by @MarioMatheus;
Txt for the conf, cfg, log, out and tmp by @xshrim;
Xi language by @grigoryvp;

because I was planning to include some of these languages, that most of the enterprise colleague use more, for my VSCode Markdown theme project I am writing (using Highlight.js and Pandoc) and for the developers' Angular and React project (using Prism.js). I was working on changing Highlight.js and Pandoc CSS colours to match the Prism.js colours, based on the developers' ANgular project, for Markdown project.I noticed the missed language in comparison between syntax highlighters. @jgm's Pandoc missed more languages than both Highlight.js and Prism.js, and Highlight.js missed more than Prism.js.
I'd be curious to know if @foo123 just invented this JSON spec from scratch or if it's some type of standard?

@RunDevelopment
Would you have any thoughts on this?  Such as if Prism.js [for example] implemented our own Emitter API as an intermediate layer... then one could ask Prism.js to do the parsing but pass it a HLJS Emitter instance and so the final HTML output would be HLJS style - and all our themes work, etc... any interest in this type of cross-compatibility?  And of course the opposite would work as well, using Highlight.js grammars easily inside of Prism.js - but getting Prism style output/themes, etc...
The rough API:
https://github.com/highlightjs/highlight.js/blob/main/src/lib/token_tree.js#L104

I'd be curious to know if foo123 just invented this JSON spec from scratch or if it's some type of standard?

@joshgoebel  The answer is both.  As explained here the format used BNF+JSON, combines two standards: BNF format for grammar specifiation and JSON format (that includes the BNF format) as a versatile and ubiquitus data format. The details of the JSON format (ie names and the meaning of fields) was made up by me based on conceptual separation of functionalities (ie lex model, syntax model, style model, extra settings), but can be adjusted easily.

any interest in this type of cross-compatibility

Honestly, yes. I've already seen multiple projects having to make multiple grammars for different syntax highlighters. I think it would be a win for the wider ecosystem if the two largest JS syntax highlighter supported the 3 most common grammar formats (TextMate grammars, HighlightJS grammars, PrismJS grammars).
We are currently working on Prism v2 and that includes a new custom tokenization API. This API is very simple. It's essentially just a function (code: string) => TokenStream (simplified), so as long as you can make a wrapper around a parser to convert its foreign AST/tokens into a Prism token stream, it will be supported. It should be possible to make an adapter for TextMate grammars and HighlightJS grammars. So from the token side of things, Prism will be able to support pretty much any parser/grammar format with the right adapter.
Themes are a different beast, though. Both HighlightJS and TextMate use scopes to assign colors. Prism does not. So while it should be possible to approximately map HighlightJS/TextMate scopes to Prism class names, the opposite direction will be harder.
However, it's not impossible. Prism has standard tokens with clearly defined semantics. So just mapping these standard tokens to scopes will do 80% of the job. Now for the remaining 20%. While tokens can have any number of class names, I would map these class names to scopes as follows:

If the class names contain one standard token, use the mapped scope of that standard token.

If the class names contain multiple standard tokens (very rare, but might happen), pick the first one.
If the class names contain any non-standard tokens, pick the first one and add it as a subscope.

If the class names do not contain any standard tokens, output the scope for plain text.

Not a perfect approach, but it should be a good start.

This API is very simple. It's essentially just a function (code: string) => TokenStream (simplified)

Is this API still in development, is feedback welcome?  I already shared our API we use for this (internally), would love to see what you're idea is looking like (interface wise).

Is this API still in development, is feedback welcome?

Still under development (current API) and yes :) The basic idea is that Prism's tokens, token streams, Prism.tokenize are already part of the public API. Custom tokenizers are essentially just a way to make your own Prism.tokenize. This allows grammars to choose their own tokenizer.
However, the user-facing API remains the same. Users still just call Prism.tokenize (or any of the higher-level functions) and this function invokes the custom tokenizer (if any). So custom tokenizers are a complete implementation detail and do not affect how grammars are used.

@RunDevelopment Is your full list of scopes/class names documented anywhere now?  I think we'd just need to work on a mapping table of our scopes to your class names.

Prism.tokenize are already part of the public API.

And the TokenStream API stable then?  If so (from our side) I'm not sure we'd even need the per-grammar support... I imagine we could provide a wrapper on our end:
let javaPrism = hljs.wrapPrism(prism.languages.java)
hljs.registerLanguage("java", javaPrism)

And to our own grammars we'd add some sort of parseYourself (your tokenize) that took an emitter object as input... so any grammar could entirely replace the HLJS parser with a custom parser - only using our emitting pipeline for the token tree.
And internally we'd do something like:
// call Prism.tokenize
// create an empty HLJS TokenTree
// loop over the Prism TokenStream, feeding it into our own TokenTree
// call `to_html` on our own token tree

All the magic happening inside the loop where we'd have to deal with conversation of your class names into our scopes.  Does that sound about right?

Not a perfect approach, but it should be a good start.

Could you possibly provide some actual examples for your 20% edge cases?  When would you have multiple or non-standard tokens?  Is this just because you'd allowed your grammars to get a little wild with what they are tagging things?

@RunDevelopment Any chance we could talk you into adding some actual metadata to your own grammars in v2 like languages name, common extensions, etc? :-)

What does HLJS use titles for anyway?

User convenience and completeness? LOL.  I think they got added because I wanted to use them in the UI of a project.

@RunDevelopment And it works. :-)  About 30 lines of code without a proper style name mapper.  2-3 line patch to HLJS itself to allow grammars to provider their own tokenizers.
Is there some good way to enumerate all the languages?  Just Object.keys against Prism.languages?  I'm guessing perhaps this all changes with v2 though? (sorry haven't fully been following that discussion)

See also #3620.  Laying out all the pieces for anyone who wants to play with this.

Is there some good way to enumerate all the languages?

Not yet. Prism v2 will have a components property, which is a registry. Adding some function to enumerate all languages/plugins wouldn't be a bad thing to add.
However, that only gets you all currently loaded components (=languages + plugins) of that Prism instance. So there might be other instances with more. We could expose our auto-generated list of all languages, but I'd rather not because that doesn't include third-party components. It's also highly version specific.

I guess i was imagining perhaps a "simplest thing possible" API like:
importToHLJS(Prism, hljs)

Where that just asked Prism for the "supported/loaded/installed" languages and the looped, wrapped, and injected them into HLJS.

Ah, in that case, enumerating all languages should be enough.

Closing via #3620.  If those engines can be run in a browsers Javascript runtime then someone could indeed hook them up to us via #3620.  So it's easy to do now (on our side) - just remains for someone else to put in the elbow grease to make it happen.


TFRS - 2022 Exclusion Report not visible in Prod

Describe the Bug
Unable to access a 2022 Exclusion Report submitted by a supplier in Prod. The report entry is not visible / showing up in the Compliance & Exclusion Reporting main table. Report ID is # 1778. When we try to access it directly via URL we receive an error message and the report does not load. When inspecting the console, there are several errors.
UPDATE: The report disappears for IDIR users when the fuel supplier user creates a supplemental draft report.
Expected Behaviour
Compliance & Exclusion reports submitted by suppliers should show up in the main table on the Compliance & Exclusion Reporting page. These reports should be accessible to IDIR users when clicked on.
Actual Behaviour
The report does not appear in the main table. Attempting to access it through the URL gives an error.
Link to report: https://lowcarbonfuels.gov.bc.ca/exclusion_reports/edit/1778/intro
Implications
Unable to view or process report. Concerns around visibility of confidential information. Can anyone else see this report?
Steps To Reproduce
Steps to reproduce the behaviour:
User/Role: IDIR

Go to Compliance & Exclusion Reports page
View entries in main table
See that report # 1778 is not listed in this table: 2022 Exclusion Report for Shell Trading Canada
Cannot access report directly via URL: https://lowcarbonfuels.gov.bc.ca/exclusion_reports/edit/1778/intro

Additional Notes
There are a few found issues with this bug:

nextProps.exclusionReports.item.isSupplemental sometimes 'item' is null so trying to access isSupplemental breaks the view. Adding a ? after item will fix this first issue.
It seems that this report 1778 doesn't exist in the database. Please import prod data to local and test whether this exclusion report can be found.

Screenshots of Console Errors:

Hey team! Please add your planning poker estimate with Zenhub @AlexZorkin @tim738745 @jig-patel @prv-proton

UPDATE: All compliance & exclusion reports are disappearing for IDIR users when the fuel supplier user creates a supplemental draft report. This issue may be related to the redesign of the Compliance & Exclusion Reports page and the removal of 2/3 of the status columns. The issue appears to be when the fuel supplier creates a new supplemental report (draft status) that the system prevents IDIR users from accessing all versions of that report, the current draft supplemental as well as all of the previously submitted/accepted versions (original + supplementals). IDIR users should not be able to access reports that are in a draft state but should still be able to access previously submitted versions.

Unable to test until the "Create Supplemental" issue with 2273 has been resolved.


isolate_tests in conftest.py does not clean stored snippets before a test is executed

What happens?
isolate_tests function in conftest.py should clean up any stored snippets through store.store = store.SQLStore(). However, snippets from other tests get carried over.
To Reproduce
notebook: test_demo.py.zip
from sql.store import store
import pytest

@pytest.fixture
def ip_snippets(ip):
    for key in list(store):
        del store[key]
    ip.run_cell("%sql sqlite://")
    ip.run_cell(
        """
        %%sql --save high_price --no-execute
SELECT *
FROM "test_store"
WHERE price >= 1.50
"""
    )
    ip.run_cell(
        """
        %%sql --save high_price_a --no-execute
SELECT *
FROM "high_price"
WHERE symbol == 'a'
"""
    )
    ip.run_cell(
        """
        %%sql --save high_price_b --no-execute
SELECT *
FROM "high_price"
WHERE symbol == 'b'
"""
    )
    yield ip

def test_snippets(ip_snippets, capsys):
    ip_snippets.run_cell("%sqlcmd snippets")
    captured = capsys.readouterr()

    assert "high_price" in captured.out
    assert "high_price_a" in captured.out
    assert "high_price_b" in captured.out

def test_snippet_without_del(ip_empty, capsys):
    ip_empty.run_cell("%sqlcmd snippets")
    captured = capsys.readouterr()
    assert "No snippets stored" in captured.out

def test_snippets_with_del(ip_empty, capsys):
    for key in list(store):
        del store[key]

    ip_empty.run_cell("%sqlcmd snippets")
    captured = capsys.readouterr()
    assert "No snippets stored" in captured.out

Assuming isolate_tests works properly, test_snippet_without_del should pass since snippets used in the previous test should not influence test_snippet_without_del. However, the second test fails.
OS:
macOS
JupySQL Version:
0.10.1dev
Full Name:
SangGyu An
Affiliation:
Ploomber

Acceptance Criteria

Ensure isolate_tests resets store
Remove for key in list(store): del store[key] in test functions


Make the product descrition non-required

Description
When using the importer, you can create a product with no description. Then if you try to edit the product in the UI it errors if you don't add a description. I think description should be optional in the UI as well.

I think it would be a better idea to make the product have a description via the importer rather than making it non required in the other places.

@Maffooch Can do, but this will break every API client who is not setting the description

I don't think it would break anything really. This is only applicable for the auto create context on the re/import endpoints. Just set the description to the same thing as the title.

@Maffooch I think the patch to make it optional was good. Mandatory description is weird IMO.

I've already change the PR to just re-use the description in the importer - let me know if I should revert :-)

The PR as it stands currently is good for a bugfix in the upcoming release, but setting the field to not required should go in dev under the next release

Yep sounds good @Maffooch

@coheigea I brought this up with Greg to think about changing the description to optional

@Maffooch OK let me know, and I'll submit a new PR


Image_class

Initial pull request for a factory design to implement image class. Just like database query builder class (mutatis mutandis).

Thank you for your explanations and patience, Lonnie. See you.


Application in nifti images

Hi @jbocce @salimkanoun
I have seen this tool with great joy,
I would like to be able to make SUV measurements in certain regions of the brain in PET CT and SPECT CT,
(Specifically, I would like to calculate SUVs in brain regions segmented by deep learning algorithms.)
However, I still don't know if it can work with nifti images.
Likewise, it is not clear to me how to use the tool?
Do I need JavaScript?
Thank you!
best,
Nilser

Hi, i don't think you will be able to use it in Nifti file because the SUV calculation needs a lot of dicom metadata (injected dose, injected time, acquisition type, manufacturer...)
All these information are usally not available in Nifti files.
So the SUV computation has to be done from dicom image and then writen in Nifti with SUV values

thanks for the reply @salimkanoun ,
I understand !
So how could I use this tool with DICOM data?
Best,

yes, I don't remember the code exactly it might be specific to cornerstone metadata representation however the code should be easy to extract to make your own implementation in any programming language you want


drop resource discovery endpoints from iso6

Closed by https://github.com/inmanta/inmanta-core/pull/6590


Rarely does a black shadow occur

Rarely does a black shadow occur

1 ， Once in a while  appear shadow
It's a tricky question,
The iPhone 8 Plus and the iPhone 12 Mini have appeared sporadily so far.

Blur may fail to draw when the main thread is suddenly occupied,

Blur may fail to draw when the main thread is suddenly occupied,


htaccess

Is there a way to use .htaccess file for pretty urls.  I put the .htaccess file in the directory i'm serving from but it doesn't work.  I tested the htaccess file out on a localhost and can confirm that it works properly.

.htaccess works because webservers support it. It's not a PHP thing. Connect does not support htaccess, and it definitely wouldn't be appropriate for this project to add support.


SQLAlchemy - Table Export Dialog

The user should be able to export certain data out of SQL easily to a DataFrame.

PushGrid of columns available in the table to export -> All pushed right by default
ListView of columns to Parse Dates with recognized date columns checked.
Coerce Float checkbox
LineEdit/Browse Button for saving to a filepath (optional)

Data should be queried using pandas and the SQLAlchemy connection and displayed in a FileView.

Would be really convenient to have a query editor in there to allow a custom SQL query to be executed as well..
Also a ROW LIMIT option.


Heads up! There's a licence key in the config

Looks like the licence for another project has been left in the config directory.
I think there's also a key for the Navigation plugin included as it showed up in the plugins section of my CP without being installed (or present). From memory the licence was for something like "displayshop" if that rings a bell.

Welp, that's awkward. Thanks for the heads-up... fixed.


Gate implementations for Atomic* types behind #[cfg(target_has_atomic)] and Rust 1.60

Fixes #1086
Note: this makes the Atomic* impls require Rust 1.60 or later.
The atomic impls are moved to their own atomics module, and now traits are only implemented on types like AtomicU32 if #[cfg(target_has_atomic = "32")].
doc_cfg attributes are also added so that the generated documentation notes this restriction:

We also make sure to not implement AtomicBool: FromBytes.
This also fixes a bug in the impl_for_transparent_wrapper! macro where code like:
impl_for_transparent_wrapper!(FromBytes for AtomicBool);

would not emit a UnsafeCell<bool>: FromBytes trait bound. This resulted in #1028 being unsound. This is fixed by:

Simplifying the macro (no more duplicated code)
adding a $ty::Inner: $trait bound

@joshlf I can split out the impl_for_transparent_wrapper! fix into a separate PR if you want.

@joshlf I was eventually able to get the UI tests to pass, but it was a little annoying figuring out which command to run to regenerate them. For reference, it's:
TRYBUILD=overwrite ./cargo.sh +nightly test --workspace --all-features
TRYBUILD=overwrite ./cargo.sh +stable test --workspace --features=__internal_use_only_features_that_work_on_stable

(not TRYBUILD=overwrite ./cargo.sh +all test --workspace like some of the documentation suggests).
It might be worth noting the correct procedure in CONTRIBUTING.md or INTERNAL.md, or adding an easier way to run the "correct" UI tests.

@joshlf merge conflict has been resolved, let me know if you want me to change anything here or split the PR.

Oh one other thing: Can you squash all of your commits into one? That way you'll get to control the commit message that ends up in main (otherwise it's a GitHub-generated amalgam of different commit messages smushed together).

Taking another look at this: I think it'd be easier to review (and also to reason about after the fact if need be) if we split out the change that moves code into a new module, since that makes it so there's no clear diff for the code that moved. Would you be able to move the code back to its old location and then we can follow up with the code movement in a follow-on PR?

Oh one other thing: Can you squash all of your commits into one? That way you'll get to control the commit message that ends up in main (otherwise it's a GitHub-generated amalgam of different commit messages smushed together).

Should now be a single commit

Would you be able to move the code back to its old location and then we can follow up with the code movement in a follow-on PR?

Code moved back to lib.rs and util.rs.
@joshlf this should be ready for another look. Note that I changed how the atomic types implement TransparentWrapper. Now the atomic types implement a much simpler util::Atomic, and then use a generic impl<A: Atomic> TransparentWrapper. This allows us to have simpler macros and less generated code.

Codecov Report
Attention: Patch coverage is 17.64706% with 14 lines in your changes are missing coverage. Please review.

Project coverage is 87.71%. Comparing base (76915d0) to head (f366da5).

Files
Patch %
Lines

src/util.rs
0.00%
14 Missing :warning:

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1091   +/-   ##
=======================================
  Coverage   87.71%   87.71%
=======================================
  Files          15       15
  Lines        5138     5138
=======================================
  Hits         4507     4507
  Misses        631      631

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

In the process of rebasing and updating this PR, I discovered that some unsoundness in the implementation. The TransparentWrapper trait requires that the implementing type has the same layout as its Inner type. All atomics have the same size and bit validity as their non-atomic counterparts, but the alignments of atomics are always equal to their sizes which may differ from their non-atomic counterparts. As a concrete example, on 32-bit platforms which support 64-bit atomics, the align of u64 is likely 4 but the align of AtomicU64 must be 8.

I've carved the soundness fix for impl_for_transparent_wrapper! into #1585 so we can hopefully land that separately. My intention is to incrementally carve out different parts of this so we don't have to review everything at once.

I've carved out the target_has_atomic fix into #1586.

In the process of rebasing and updating this PR, I discovered that some unsoundness in the implementation. The TransparentWrapper trait requires that the implementing type has the same layout as its Inner type. All atomics have the same size and bit validity as their non-atomic counterparts, but the alignments of atomics are always equal to their sizes which may differ from their non-atomic counterparts. As a concrete example, on 32-bit platforms which support 64-bit atomics, the align of u64 is likely 4 but the align of AtomicU64 must be 8.

IIUC, this isn't quite true - T: TransparentWrapper requires that T and T::Inner share some aspects of layout, but which aspects in particular are controlled by the associated T::XxxVariance types. In this case, AlignmentVariance is set to Invariant, which means that no guarantees are made regarding the alignment of T relative to the alignment of T::Inner.

Closing this now that the important changes have landed in #1585 and #1586. We may still carve out the addition of the Atomic trait - this is tracked by #1592.
Thanks again for all of your work on this, and for finding and fixing the unsoundness in impl_for_transparent_wrapper! along the way!