Logging url rules

Q
A

Is bugfix?
no

New feature?
yes

Breaks BC?
yes

Tests pass?
yes

Fixed issues
https://github.com/yiisoft/yii2-debug/issues/173

The good looks good so far but I wonder whether we might want to log the whole route object (or a serialization of it) to be able to display all relevant configurations in the debug panel. E.g. RestUrlRules or GroupUrlRule contain a lot more information that could be relevant in debug panel.

Form a progress point of view it would also be good to develop the debug panel in the framework changes together to make adjustments here when new aspects show up on toolbar side and merge them both after everything is finished.

??

The good looks good so far but I wonder whether we might want to log the whole route object

The idea is good, but, probably, this amount of data could be too much for the debug file.
I think the PR should be accepted as is. Any objection @yiisoft/core-developers?

No objections from me.

Merged. Thanks!


Bars in bar chart sometimes placed to the right of the main bar

For my bar chart there is sometimes a glitch that places the bars to the right of the main bar. See screenshots below. Not sure when this occurs and when it doesn't, seems to be with larger amounts of data only. Since the library sets the DOM elements at an exact coordinate I'm not sure why this is happening or how to fix it.

Hi,
Could you provide a JSFiddle, codePen or Plunkr highlighting the issue?
It makes reproduction much easier for everyone.
Thank you!

No response


Pre-trained -weight file missing?

work_dirs folder missing. In getting started file, the weight file is extracted from work_dirs. But is seems missing out now.

You may download from here: https://github.com/open-mmlab/mmediting/tree/master/configs/restorers/esrgan


WIP - Ability to select an end date for services

Answering all the original scenarios originally mentioned here
https://github.com/studentinsights/studentinsights/pull/1004

Hey @alexsoble I am almost done with this. I am getting a lint error above. Please see my logs and my terminal below. Have you seen this error?
23 error Exit status 1
24 error Failed at the<EMAIL_ADDRESS>lint-cli script 'eslint --ext jsx --ext js -c .eslintrc app/assets/javascripts spec/javascripts'.
24 error Make sure you have the latest version of node.js and npm installed.
24 error If you do, this is most likely a problem with the studentinsights package,
24 error not with npm itself.

Judys-MacBook-Pro:_logs judyngai$ vim 2017-09-25T20_35_24_547Z-debug.log
Judys-MacBook-Pro:_logs judyngai$ node --version
v7.10.1
Judys-MacBook-Pro:_logs judyngai$ npm --version
4.2.0
Judys-MacBook-Pro:_logs judyngai$ node.js --version
-bash: node.js: command not found
Judys-MacBook-Pro:_logs judyngai$ node --version
v7.10.1
Judys-MacBook-Pro:_logs judyngai$ brew info node
node: stable 8.5.0 (bottled), HEAD
Platform built on V8 to build network applications
https://nodejs.org/

Hey @Jngai!
The key lines are directly above the snippet that you posted:
/home/travis/build/studentinsights/studentinsights/app/assets/javascripts/student_profile/services_list.jsx
  180:7  error  Unexpected console statement  no-console
  181:7  error  Unexpected console statement  no-console
  182:7  error  Unexpected console statement  no-console

This is the linting tool reminding you to delete console.log statements that shouldn't be in the production build.

Great! it passed thanks @alexsoble

@Jngai Great! Reviewing now. If you could add a little more context to the description for this PR up above (like brief description of the changes, link to the issue fixed, and screenshot of UI changes) — that would be fantastic. Also let's be sure to QA any UI changes in Internet Explorer.

Hey @Jngai! My highest-level question I have for you about this PR is on the addition of a date_ended field to Service.
In my mind, adding a date_ended field to Service competes with the existing DiscontinuedService model. If I want to know the truth about when a service ended, do I look at the date_ended or at the service's DiscontinuedServices? Normally these should be the same, but no codebase is perfect and over time differences will creep in — and if those differences creep in, which value should the developer trust? This is the "single source of truth" idea.
Overall my impression is that using a DiscontinuedService model instead of a simple date_ended field adds more complexity than we need. It does let us capture which educator is responsible for ending the service, but we could also capture that by adding an ended_by educator field on the Educator model. The DiscontinuedService model also lets educators discontinue services multiple times, which I think is more complexity than we need.
So overall, for this PR I'd like us to pick one strategy and stick with it all the way — either add a date_ended and ended_by migration to Service and make DiscontinuedServices obsolete, or refrain from adding date_ended and leaving DiscontinuedService as the sole source of truth about when services end.
What do you think @Jngai? Going with the second option will make it way simpler for us to land this PR and we could then simplify later. The first option will require running a fairly high-stakes migration to remove the DiscontinuedServices model, so my instinct is that we should hold on that for now.

Hey @alexsoble When I have more final UI changes I will put it in the description above. In the mean time here is my progress.
I close the original pr because I noticed there were lots of changes to the original files that I was working on since I worked on that old pr. I had to rewrite it but I carried the ideas over. Right now I am trying to answer all the scenarios as listed in our last conversation which I linked above.
The changes in the code is mostly in record services and is mostly about building a new box, capturing the value of the box, passing it through to the api, getting it white listed and stored correctly. The natural flow of it already exist and I reuse similar architecture that is already in place.
1. Start in the Past, End in the Past

This is relatively the same as my last pr. Here during the post to the controller, it does a check to see if date_ended has already ended and if its yes then we create a discontinued service object passing in the service id, current educator id, and discontinued at etc.
2. Start in Past, End in Future

You mentioned we should add a "Scheduled to end [datetime]". I added a new field date_ended to services for this particular purpose and reused your "renderDateStarted" function and created my own "renderDateEnded" function to show the date ended for this particular UI. In the "When did/will they end?" box I added the date_ended field  as an extra params to be posted to the api and stored through the controller.

For the second comment about the button text "Discontinue Early". For the past tense, there won't be a button display. So if its started in the past then end in future or whether its start in future end in the past then its still "discontinue early" for both scenarios. I just changed the text.

3. Start in Future, End in Future

I am having a little bug going on with the start today/end today section. I will work on this later but in time I commented it out and made the datetime explicit.
I think we should continue using discontinued service model. For the 3rd scenario it really can't be discontinued because in discontinue model there is must_be_discontinued_after_service_start_date validator. Tests start breaking when I comment this out.
From what I remember Discontinue Service explicitly creates a new row object that stores a service that has already ended. hence we can't really use this to schedule something to end. But for the second scenario the discontinue button function is intact and it will still discontinue. I see the date_ended as another information gathering. I do think discontinue service adds complexity. I think this is beyond this pr at the moment. I will work more on it today.

@alexsoble Also what led me to add date_ended to the table is because I was passing it through the original input box and it was a matter of storing it or not.

Also @alexsoble I am having a small issue with this commit
https://github.com/studentinsights/studentinsights/pull/1097/commits/04160a820019051eae5186509a5173e4262e8a0e
I just couldn't get the operators (< and >) right.

I will explore some more if I can stop relying on date_ended.

Hey @alexsoble I decided to change date_ended to estimated_end_date instead. I think from an user point of view, the future end date selection that they pick may not be exactly the date that actually ends so calling it an end_date is not completely correct. Its more of an estimated date when service ends. The DiscontinuedService model can then handles the absolute discontinued_at scenario. Also the option to display service.discontinued_services.discontinued_at  for scheduled at end in the UI isn't there without already creating a Discontinuedservice object and making the discontinue button obsolete since a Discontinuedservice object already exist. This way DiscontinuedService is still the sole source of truth.

@Jngai — OK, that makes a lot of sense and really does help clarify!
I did some more manual exploring and I came across one edge case that causes a bug: when the user tries to delete a service with a future start date:

I checked in the demo app in production and verified that this bug exists in production right now and was not introduced by your PR at all. So maybe improving the UI for this experience is the next chunk of work to go into your queue since now you're very familiar with this part of the codebase!

Overall this PR looks great, thanks @Jngai, merging now!

@alexsoble I am glad that is good for a merge. For that edge case, its because of this method must_be_discontinued_after_service_start_date as a validator in Discontinuedservice model. I think its written because you don't need to discontinue something that haven't started. I can definitely look into the discontinued service side and put it in my queue.


Improve and repair documentation

Hi, sQVe!
I'm not good at English, and I write this sentence with Google translation support. So far I was suspicious that old document was not read as intended.
But now new version documentation will be easier to understand than before!
Thanks!


Creating GitHub pages

Description
Moved most of the documentation from README to GitHub pages
Fixes #96
Type of change

Documentation update

Testing steps
Regular CI

Apparently Travis was unable to update its verification, As can be seen  https://travis-ci.org/github/RedHatInsights/insights-content-service/builds/710791787 the commit is perfectly fine, so I will use my superpowers to merge this one


Update VendrSyncHandlerBase to reflect changes in latest uSync API

Fixes compilation with latest uSync and Umbraco packages
Also fixes a NullReference exception when importing countries with no values set in the currency, payment, and/or shipping fields

Hey @Xanashi
Sorry, I totally didn't see this PR so apologies for the late reply.
The only thing that concerns me in the PR is that you seem to updated a whole lot of dependencies. Is this all necessary as this would force people using this package to upgrade to a minimum Vendr version of 1.4.1 amongst other dependencies.

Hey Matt,
Sorry I went a bit overboard with the package updates (trying to make sure everything compiled with the latest Umbraco).
I've redone the PR with just the necessary changes, and the changes separated in two relevant commits.
Hope this is better. :)

Perfect! that's much clearer and focused thank you 👍


EC-79: add a featured projects card list to the home page

This does not match the design, so this may be changed before release.


Run Huginn for free on Heroku

I would like to replace yahoo pipes with huginn. In the blog post article "The 13 Best Yahoo Pipes Alternatives You Should Look at Today" Huginn is mentioned as the best alternative.
I followed your post Run Huginn for free on Heroku. It seems I am missing some steps.
I use a 64-Bit PC with Windows 8.1.
First I have created an account on Heroku.
Second I have installed the Heroku Toolbelt which will also install Ruby 1.9.3.
Then I start the command window and I can successfully login to Heroku with heroku login.
(email and password).
The next step from then on  is not clear. It says go to your huginn directory and run bundle.
Is this directory on heroku or local?
I concluded that I will have to do another prestep and install git and then clone huginn. I would go to then to the local folder of huginn and type bundle.
I receive the following message: bundle is not recognized....
What steps am I missing? Thank you.

I wasn't able to get it going on Windows. I ended up downloading a Linux VM for VMWare Player
You should be able to deploy it to Heroku using the Deploy to Heroku button on the main page. Then when you launch your app for the first time, you'll be presented with instructions to follow in the Linux VM.

Welcome @ppalme!  @irfancharania is correct, I think you'll have a much better experience if you use a Linux VM for setting up Huginn.  VirtualBox also works well.

I followed the steps to deploy to Heroku and have Huginn running on Heroku. However Heroku keeps sending me warnings saying that my Huginn dyno is running more than 18 hours a day, which after August 15th will lead to forced recharges. Is there any way to allow Huginn to run -- not continuously, but when needed?

Change the schedule frequency of your agents?
On Jul 11, 2015 7:44 PM, "David Bahar"<EMAIL_ADDRESS>wrote:

I followed the steps to deploy to Heroku and have Huginn running on
Heroku. However Heroku keeps sending me warnings saying that my Huginn dyno
is running more than 18 hours a day, which after August 15th will lead to
forced recharges. Is there any way to allow Huginn to run -- not
continuously, but when needed?
—
Reply to this email directly or view it on GitHub
https://github.com/cantino/huginn/issues/893#issuecomment-120681113.

@wasafiri not at the moment. You can try to remove our keep alive polling and replace it with a cron script that runs on a external server.

This is related to https://github.com/cantino/huginn/issues/818.

Well, hopefully talks with Heroku will bring a solution to light. If not, I could get something like a Rasp Pi 2 and run Huginn on it. Would the deployment process be similar to the process for Heroku, and if not, could a tutorial be made for those of us that prefer spending $39 on a Rasp Pi vs $7 a month on Heroku?
On Jul 13, 2015, at 6:39 PM, Andrew Cantino<EMAIL_ADDRESS>wrote:

This is related to #818.
—
Reply to this email directly or view it on GitHub.

I know that we have some instructions here, but I'm not sure how up-to-date they are.  The other option would be to follow @dsander's in-progress guide.

I set up Huginn yesterday and got a warning from Heroku this morning, too. I've turned off the Pingdom check that the Huginn setup instructions suggested; I'll see if that's sufficient, or if I get another nastygram tomorrow morning...

Unfortunately, if you don't keep the instance awake, periodic Huginn activity won't occur.  You may need to pay for the cheapest monthly Heroku offering or use a different VPS provider.

For my (current) purposes, running only once every 8 hours would be sufficient, and would let Heroku's dynos sleep for a 6-hour block like it wants to, right?
If so, putting a note in the installation or newbie guide would be nice, to let folks know they can either get the full experience by paying a little, or tuning things to run "well enough" for free.

I suspect that a problem may occur with rufus-scheduler, which we use for scheduling periodic Agents, in which it will likely not work well if it's stopped and started.
You could try pinging your installation every 4hr with Pingdom, but I think this will appear to Huginn as if, every 4 hours, time starts over and runs until Heroku suspends the instance, then time starts over again from 0 some number of hours later when it receives a Pingdom call, and so on.  If you had your Agent set to run every 5 minutes, this would likely work fine since during those periods of uptime, more than 5 minutes would pass, but if you have it run with a frequency less than Heroku's shutdown period, I suspect that it might never run at all.
Is this what other people have observed?

@cantino I did not try it, but think it works that way

Since rufus-scheduler doesn't persist any state, Huginn tasks designed to run less often than once every few days may never run.  The chance that your instance goes a week without a restart is real, but if it crashes, or you deploy to it, any every_7d may never get run.  I'm not sure if SchedulerAgents are any more robust to this, but I'm sure crons for specific days and times will ever run if the instance was down during the window.
We may want to remove Agent#SCHEDULES's every_1d, every_2d, and every_7d.
I've also updated our Heroku docs a little.  Does this sound accurate?
(Dominik, as an aside, maybe we should use the locking mechanism?)

Also, since Heroku is no longer a good free option, maybe we should offer a supported https://www.digitalocean.com/features/one-click-apps/?

I've also updated our Heroku docs a little. Does this sound accurate?

Looks correct to me.

(Dominik, as an aside, maybe we should use the locking mechanism?)

Interesting but would that work with the heroku read-only filesystem?
Having a one-click DO app would be awesome, but I was not able to find any documentation on how you submit an application.

Hmm, you're right about the file locking issue on Heroku.
Do you think we should remove Agent#SCHEDULES's every_1d, every_2d, and every_7d?

Mhm I can't really imagine a use case for the every_7d option, but 1d or 2d do not seem to far fetched. Do you see any harm in the 7d option? (of course none of the three are an option when running on heroku using the hobby tier)

Well, if you deploy (update Huginn) within those windows, they never run, right?

I have Pingdom set to hit my test Heroku instance once an hour and I still received their warning, which is surprising.  I'd expect it to be only running for 12 hours a day, as their awake window is 30 minutes and I'm pinging every 60 minutes.  I wonder if the glitch is in Pingdom, Heroku, or my understanding.

@cantino: Yes, I was experiencing the same. One explanation would be, if you have any agents with a check interval of 30 minutes or less. Another reason could be, if anyone/anything else accesses Huginn very frequently.
On the Heroku pricing page it says that a free dyno "Sleeps after 30 mins of inactivity".
Also by the way, the scheduler didn't seem to work properly when I pinged my Huginn instance only once an hour (at the top of the hour):
E.g. when I once manually ran an agent (scheduled for hourly checks) at 10:45 it wouldn't get run by the scheduler any more, probably because the Heroku app would ideally only be active every hour from minute 00 to minute 30. I was able to (kind of) reproduce this the other day. At one point when I logged in I saw that same agent with a "last checked" time of "~4h ago". Then I ran it manually once more and it started running on schedule.
So here's the cron setup I currently use. This keeps my Huginn instance awake constantly from 7AM probably to 12:30AM, which works fine for me and defeats the issues described above. Also I don't get warning e-mails from Heroku any more.
*/15 	7-23 	* 	* 	* 	curl https://<huginn>.herokuapp.com/ >/dev/null 2>&1

Right, I think only Agents with schedules more frequent than every 30 minutes would ever run?
I thought that our special Heroku Procfile would only run a web worker, which wouldn't be "active" just because of a background thread running.  I thought "active" on Heroku would mean web requests, but perhaps I'm mistaken.

@cantino: Just to clarify, what I wrote in my previous comment were mainly assumptions/conclusions I made based on the behaviour I had seen. I have only been using Huginn and Heroku for about a month now.
I did however consult Heroku's documentation just now. Here's the relevant section where they define what is considered "active" (source https://devcenter.heroku.com/articles/dyno-sleeping):

An app is active if some part of the app is running. For example, if any of the following are true:

There is a web dyno that is receiving traffic.
There is a worker dyno that is running.
A one-off dyno is running. For example, started via the CLI or the scheduler.

Our Heroku Procfile should only be a webdyno, which is why I'm a bit
surprised.
On Wednesday, July 29, 2015, Thomas<EMAIL_ADDRESS>wrote:

@cantino https://github.com/cantino: Just to clarify, what I wrote in
my previous comment were mainly assumptions/conclusions I made based on the
behaviour I had seen. I have only been using Huginn and Heroku for about a
month now.
I did however consult Heroku's documentation just now. Here's the relevant
section where they define what is considered "active" (source
https://devcenter.heroku.com/articles/dyno-sleeping):
An app is active if some part of the app is running. For example, if any
of the following are true:

There is a web dyno that is receiving traffic.
There is a worker dyno that is running.
A one-off dyno is running. For example, started via the CLI or the
scheduler.

—
Reply to this email directly or view it on GitHub
https://github.com/cantino/huginn/issues/893#issuecomment-126028724.

I'm trying this again with a 70 min ping instead of 60.

70 min has seemed to work.

Interesting, how did you configure your agents?

So, as a supplement, however as a main point try this amazing free app. Createer.com is an online software for easily designing online ads, responsive landing pages and print materials such as flyers, posters, covers, invitations and more. Createer lets you easily share your designs on social media, send them via email, download as HTML, image or PDF. Createer also includes 3,000 predesigned templates (browse here: https://beta2.createer.com/Templates?ghi) and over 250,000 images (illustrations, photos and icons) to work with in its user-friendly drag’n’drop enviroment. And finally this amazing stuff is here: https://beta2.createer.com/?ghi

@cantino Has 70min continued to work for you? I also wonder if one can set it to run only during business hours and 'sleep' overnight. That would work also. Many don't have a need to check RSS feeds at 3am.

Hey @wasafiri, it has sort of worked.  It seems like most days it's fine, and I occasionally receive a warning from Heroku.  Perhaps they don't always spin it down perfectly reliably, so I walk a line and sometimes am up too long.  This change of their's is a pain.

@wasafiri: Regarding running Huginn only during business hours, you could use a cron job like the one I mentioned above (assuming you have some server or webspace that supports cron). I've been using this cron setup for almost two months now without any issues.
@cantino: I have finally put up the step-by-step guide I wrote after I had finally completed the (rather frustrating) Huginn installation process. It's specifically targeted at Windows users who (like myself) are new to Huginn, Heroku, Ruby etc. Feel free to incorporate any or all of it into the official documentation if you want. Here's the link:
https://gist.github.com/mightymt/b86c577e4c0c268f0dd1

Thanks @mightymt!

@dsander, would any of @mightymt's guide be worth pulling into /doc?

I'm going to close this issue.  Please reopen if you want to discuss further!


Consumption of 'autocast' option not properly performed due to 'get' operation on line 195 not being 'pop'

https://github.com/pfnet/pytorch-pfn-extras/blob/master/pytorch_pfn_extras/handler/_logic.py#L195
Since the 'get' operation on this line (line 195) is not 'pop', the consumption of the 'autocast' option is not being performed properly.

is this causing errors?

small example
from pytorch_pfn_extras.engine import create_trainer
import pytorch_pfn_extras as ppe
import torch.nn as nn
import torch.optim as o

class Model(nn.Module):

    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self.l0 = nn.Linear(64, 64)

    def forward(self, x):
        return self.l0(x)

model = Model()
optimizer = o.SGD(model.parameters(), lr=0.1, momentum=0.9)
trainer = create_trainer(
    models=model,
    optimizers=optimizer,
    max_epochs=2,
    options={
        "autocast": True,
    }
)

result
ValueError: ('Unknown options: ', {'autocast': True})

An error occurs at the following point because the option is not being consumed properly.
https://github.com/pfnet/pytorch-pfn-extras/blob/1b11cafc535d57aeb75f37b54cc2a634fce53382/pytorch_pfn_extras/engine.py#L110-L111


[Index] Use access level to check decls to include

isAccessibleFrom has special handling for @_objcImplementation members, which causes the definition in Swift to be missed. Use access level directly rather than passing nullptr into isAccessibleFrom.

@swift-ci please test


Sync UITableView with sections

Similar problem was in https://github.com/realm/realm-cocoa/issues/4506, but i couldn't find right answer.
I'm use approach like in GroupedTableView example in RealmSwift, but with some modifications - I'm not reload tableView every time when Results change, instead I use array of NotificationToken to determine what sections and items was changed. It works perfectly by adding one new item manually. But I'm faced the problem with updating tableView during adding item by click to "BG add" button (insert few items in background).
Goals
Need some mechanism to determine when all Results items updated and after it update tableView (something like delegate methods func realmDidStartUpdate(_ realm: Realm) and func realmDidEndUpdate(_ realm: Realm)).
Expected Results
Update UITableView with sections without reloadData()
Actual Results
Because of the model (array of Results) updates before observation block will called I get crash when insert/delete/modif items in different sections at once

'Invalid update: invalid number of rows in section 1. The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (0), plus or minus the number of rows inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).

Code Sample
I use code from https://github.com/realm/realm-cocoa/tree/master/examples/ios/swift/GroupedTableView, but instead of
notificationToken = realm.observe { [unowned self] note, realm in             self.tableView.reloadData() }
I'm use this
    let notificationToken = section.observe({ (changes) in
        switch changes {
        case .initial(let items):
                self.tableView.reloadData()
        case .update(let items, deletions: let del, insertions: let ins, modifications: let modif):
                 if let index = objectsBySection.index(of: items) {
                         self.tableView.beginUpdates()
                         self.tableView.insertRows(at: ins.map { IndexPath(item: $0, section: index) }, with: .left)
                         self.tableView.deleteRows(at: del.map { IndexPath(item: $0, section: index) }, with: .fade)
                         self.tableView.reloadRows(at: modif.map { IndexPath(item: $0, section: index) }, with: .none)
                         self.tableView.endUpdates() // Crash here!
                }
        case .error(let error):
               print(error)
        }
    })
     notificationTokens.append(notificationToken)
}

The reason this fails is because all of the Results are updated to the new state at once, but only one observation block can be called at a time. This means that when the data for multiple sections change, the call to endUpdates() within the first changed section's observation block happens before the tableview has been told about all of the changes to its datasource.
There currently isn't an elegant way to handle this, but one thing you can do is to take advantage of that observation blocks on the Realm itself are called after all of the Results ones and do the call to endUpdates() there instead.

Closing this issue due to age, if you have any other questions please open a new issue.
Thanks.


Can't add placeholder

Hi,
I'm successfuly added options to my select2 this way
Template.stepOne.rendered= function (){
    this.$('select[name=country]').select2({placeholder:"Select country of operation"});
    this.$('select[name=language]').select2({minimumResultsForSearch: -1,placeholder:"Marketplace main language"});
    this.$('select[name=marketplaceType]').select2({minimumResultsForSearch: -1, placeholder:"Choose marketplace type"});
};

but placeholder didn't pass trough.
I'm not sure if it is you package problem or those adding bootstrap styles. Maybe you have any suggestions on how to have placeholder on the place?
Thank you.

v2 of this package is released, which uses select2 4.0, and placeholder will now work, either adding the attribute directly, or passing it in select2Options attribute object.

Thank you!
2015-03-13 23:31 GMT+02:00 Eric Dobbertin<EMAIL_ADDRESS>
v2 of this package is released, which uses select2 4.0, and placeholder
will now work, either adding the attribute directly, or passing it in
select2Options attribute object.
—
Reply to this email directly or view it on GitHub
https://github.com/aldeed/meteor-autoform-select2/issues/19#issuecomment-79425233
.

--
Best regards
Serhiy Khvashchuk


Question about action data form

Hello, I would like to know the meanings of 'buttons' and 'newButtons' in the .jsonl file related to actions, as well as the significance of 'keys' and 'newKeys'.
It seems that the value of 'buttons' is always [0] or [], does [0] represent a left click of the mouse?
I haven't seen a good match for this explanation in the displayed video  and actions files.
Thank you very much for your reply.
{
"mouse": {
"x": 274.0,
"y": 338.0,
"dx": 0.0,
"dy": 0.0,
"scaledX": -366.0,
"scaledY": -22.0,
"dwheel": 0.0,
"buttons": [],
"newButtons": []
},
"keyboard": {
"keys": [
"key.keyboard.a",
"key.keyboard.s"
],
"newKeys": [],
"chars": ""
},

buttons is under mouse key and they refer to the mouse buttons pressed. And yes, as far as I recall, mouse button "0" refers to left click. See here
The buttons and keys entries tell what is the state of the keyboard and mouse at that moment, i.e. what buttons are pressed down. The newButtons and newKeys tell if any new buttons were pressed down. This is useful for e.g., tracking when player wanted to open the crafting GUI, as the event happens when you press the button down the first down, but there is no point holding it down.

Thanks a lot


Wrong combinations

The combination algorithm seems to be buggy since 1.x.
As of 1.3.0 [...new Combination([1, 2, 3, 4, 5], 2)] returns the following array:
[[1,2],[1,3],[1,4],[2,1],[2,3],[3,1],[2,4],[3,2],[3,5],[5,1]]
whereas e.g. Python's itertools library returns the correct
[[1,2],[1,3],[1,4],[1,5],[2,3],[2,4],[2,5],[3,4],[3,5],[4,5]].

Wow, this is a serious bug!
Fixed in 8fe18083e7ce0bebe93f2c728276ede13c4740ef .


Server method not called when modifying doc in 'before' hook

I have a working form submission that I want to add a custom field to in the 'before' hook before the doc is sent to the server side method.  However if I modify the doc in any way in the 'before' hook, the server method never seems to get called.  I have verified this with console.log both in the before hook and in the server method.  If I left the hook in place and comment out all code that modifies the doc, the server method is called.  However if I add a single additional property to the doc before returning it from the 'before' hook, the server method never gets called (I have dumped the doc object after modifying it in the 'before' hook and can verify the property was added).

Apparently this is happening because the doc I am returning is being validated after the 'before' hook is run for 'method' type forms.  This seems to go contrary to intention if I read this right:
"The before hooks are called after the form is deemed valid but before the submission operation happens. (The submission operation depends on the form type. For example, the insert, update, method call, etc.) These hooks are passed the document or modifier as gathered from the form fields. If necessary they can modify the document or modifier. "
This seems to indicate the form should be validated before the 'before' hook is called not after.  Anyway, I was able to get around it by adding the additional field as an optional field to my schema and omitting it from my form.

@Framnk I am having similar issue. I am trying to add fields in the before hooks and the validation runs before the fields are added and throwing "fields are required" error.
See #766 .

@Framnk that description of before hooks is maybe not quite accurate. See here for expected behavior on method forms. Seems like it's not behaving that way, though, so this is a bug. We'll track in #766.


[Wallet] Fix last alert banner redisplayed on re-render

Description
This fixes the regression described in #6314.
The change in #6230 made the underlying problem in AlertBanner more prominent as it caused the top level navigator to re-render on app state change (background/foreground/inactive) and hence the AlertBanner.
Other changes
Globally mock Animated.View and Animated.ScrollView to prevent out of memory error when a ref is set.
See callstack/react-native-testing-library#539
Note: This change caused the Snapshot updates, because the styles are not flattened anymore for the mocked Animated.View.
Tested

Last alert is not redisplayed when navigating to different screens.
New alert banner with same content can still be redisplayed when dispatched (causing a state change).

Related issues

Fixes #6314

Backwards compatibility
Yes

What happens is hideAlert is only called if the user actually dismisses the alert by touching it. But visually the alert is being hidden anyway after 5 secs (or never if no dismissAfter is set).
Now you might ask why? If I remember correctly I did it this way because SmartTopAlert takes a single onPress and I didn't want to trigger it if the user didn't actually press it.
Now about your 2nd question, the alert state is cleared when the alert action is dispatched and hence dismisses the banner.
See https://github.com/celo-org/celo-monorepo/blob/51f643db9c05c97f26f91d5920f360f5ff1e0e0b/packages/mobile/src/alert/reducer.ts#L61-L64

Yes we can revisit this later, this somewhat odd design was because of the separation between SmartTopAlert (no access to redux, since it's in react-components and AlertBanner (within the app).
Which doesn't make sense anymore.

Hi @jeanregisser we have verified this issue on latest latest Android  internal build V1.7.2(1004294329) &Test Flight build V1.7.2(39) and observe the following

"Received dollar Blue banner" is not shown when user navigating to different screens Or open app from background

Device: iPhone 6+ (12.4.5). Vivo V11 pro (10)
Can you please let us know if we need to test anything else in this task


Please follow SemVer versionning

I have updated my dependencies this morning it and its broken as the latest version is published as a patch version, which in an auto-update.
But the public API has changed between 0.1.30 to 0.1.31.
So normally it was a 0.2.0.
In addition it maybe useful to use conventional commits with the ! to mention in every commit if the public API changed.
P.S.: usage of the conventional commit will enable the cocogitto usage to auto-generate changelog ;-)

Thanks a lot...indeed, the other way I was talking with Ángel that we should look to the conventions that other projects follow for commit messages, and that's really something we should try to do.
About semantic versioning, that was our goal but I confess that at this moment, the API is probably in a flux and in fact something I would like to to is to clean it to hide most of the things and only expose the things that we consider necessary...in order to minimize breaking changes between versions.
By the way...what changes in the API were affecting you?

No problem, I just report back to improve open source code quality ;-)
The issue I have was with conforms method that is removed here: https://github.com/rudof-project/rudof/commit/1bc4155515b13edd24aa7a6f27501c1216802a9d#diff-2b061c6ff86917b2d5669b1a4f61ecd3a834ec9e6ab5d076910d66cf59a7ae0eL17 in a fix: and not fix!:.
In addition, I think some commit can be smaller, so it can be easiest to follow based on the commit history.
Some good practice can be taken from FFmpeg https://www.ffmpeg.org/developer.html#Patches_002fCommitting
Splitting renaming variable, refactor, new feature etc.
It's great to exercice on minor releases before passing to major to ensure stability of the project in some products...
You have also some tools like https://github.com/obi1kenobi/cargo-semver-checks that can check if you have done some bad release. As Rust is correctly typed, it's easy to wrote tools like that ;-)


Improve error messages

@pearu There were memcheck problems with 7c0f418c76.  Apart from those, I wonder if we should always dump the whole string (which can be large) as part of the error message.
Let's think about it a bit.

I've added ndt_from_string_v() that uses verbose error messages in 8fc300424d9d7e53c4a875f7c8419005add504a0.  It is also now used in gumath for kernel initialization.
So Python users still get the short error messages, which I prefer (one should get the line number in the traceback).

@skrah  Short error messages with the information to problematic code (e.g. line number) is fine.
However, when registering a bunch of kernels defined in C at the extension module import, the line number is not very informative (its equal to 1, iirc). So, could we include the name of the problematic kernel to the error message, at least?
People are going to make mistakes when hand-writing kernel signatures and informative error messages can save debugging time for them. It saved for me, for instance.

@pearu ndt_from_string_v() (verbose) includes the signature, like you did in your err_append() function:
>>> from gumath import examples
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 1:7: syntax error, unexpected FLOAT64, expecting RARROW: "N * M float64 -> P * float64"

We can go all the way and include the kernel name, too.


read structure populated from runParameters.xml

as far as I can tell, it should be possible and removes a field that I am not sure how the end user would know otherwise.
e.g. a run structure of
47T8B9M1S8B47T
should be be determined from this in the xml file...i think...might have to look into this a little more...
<Read1NumberOfCycles>47</Read1NumberOfCycles>
<Read2NumberOfCycles>47</Read2NumberOfCycles>
<IndexRead1NumberOfCycles>18</IndexRead1NumberOfCycles>
<IndexRead2NumberOfCycles>8</IndexRead2NumberOfCycles>

after talking to Brian, I should check that the runparamters.xml has expected values, if not, then populate read structure with a value that he had to use for peters.

this file is not equipped to actual determine how the read structure was performed. you would have to rely on assumptions. a possibility it to parse the file and make an assumption by default and if the assumption is not valid give the end user the option to change it when submitting it. but that is another issue. so i'm closing this one and leaving the other one open for the lab managers to tell me which they would rather try first. currently leaving read structure as a required option on submission.


Add files via upload

please check those id. i cannot open them atm, maybe wrong ids?

I'll check it for you and resubmit - thanks for the heads up. Sent from my iPhoneOn 11 May 2023, at 20:13, chrisconfirm @.***> wrote:
please check those id. i cannot open them atm, maybe wrong ids?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

Thanks - still waiting for those latest inscription numbers clarification from the team at ordinalsbot. Sent from my iPhoneOn 12 May 2023, at 14:22, chrisconfirm @.***> wrote:
@ArtsyGrims i am closing this pull request for the moment. feel free to reopen this pr as soon as you have edited the inscription ids in the inscriptions.json here. thank you for your understanding.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Side question Chris, is it possible to add a dev royalty % into the trades? Sent from my iPhoneOn 12 May 2023, at 14:22, chrisconfirm @.***> wrote:
@ArtsyGrims i am closing this pull request for the moment. feel free to reopen this pr as soon as you have edited the inscription ids in the inscriptions.json here. thank you for your understanding.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

side question concerning royalties anwer: it is currently not possible to add royalties.


Enhance support for waldo upload

waldo upload
Uploads a build to Waldo.

⚠ This command is a bit tricky because we *must not* break existing customer CI usage of this command.

The current command syntax is as follows:
USAGE: waldo upload [--git_branch <b>] [--git_commit <c>] [--help] [--upload_token <t>] [--variant_name <n>] [--verbose] [] <build-path>

ARGUMENTS:
  <build-path>            The path to your build ('.app' or '.apk').

The proposed command syntax is as follows:
USAGE: waldo upload [--git_branch <b>] [--git_commit <c>] [--upload_token <t>] [--variant_name <n>] [--verbose] [<build-path>]

ARGUMENTS:
  <build-path>            The path to your build ('.app' or '.apk').

Actions

Determines if the command is executing in a CI environment (by checking the CI environment variable). If so, consider the command to be “in CI mode”; otherwise, consider the command to be “interactive”.
If in CI mode:

Download the latest available Waldo Upload Agent into a temporary location.
Check that the <build-path> argument is specified and is valid (relatively speaking).
Obtain the upload token from either the --upload_token option or the WALDO_UPLOAD_TOKEN environment variable. The option takes precedence over the environment variable.

If interactive:

(Handles the upload directly — no agent necessary.)
If the <build-path> argument is not specified, determine the most recent build from the user-specific data.
Obtain the upload token from ./.waldo/config.yml. Fail if the --upload_token option is specified.

Perform the actual upload.

We should keep in mind that we need to somehow get the appVersionId from the output (stdout, generated file?)

Is that the exact name of the response payload field (appVersionId) that you need? If there is other info you will need, let me know sooner rather than later.

We would need the id property of the payload response from API


[WIP]Captcha feature

Type of change

[ ] 🐛 Bug fix
[x] 🌟 New feature
[ ] 🔨 Breaking change
[ ] 📖 Refactoring / dependency upgrade / documentation
[ ] other:

Packages affected

[x] @clerk/clerk-js
[ ] @clerk/clerk-react
[ ] @clerk/nextjs
[ ] @clerk/remix
[x] @clerk/types
[ ] @clerk/themes
[ ] @clerk/localizations
[ ] @clerk/clerk-expo
[ ] @clerk/backend
[ ] @clerk/clerk-sdk-node
[ ] @clerk/shared
[ ] @clerk/fastify
[ ] @clerk/chrome-extension
[ ] gatsby-plugin-clerk
[ ] build/tooling/chore

Description

[x] npm test runs as expected.
[x] npm run build runs as expected.

Load CF Invisible Widget to FE based on Environment Call
Note: Not everything is in place yet so many things will likely change

Is this ready for review?

Is this ready for review?

@desiprisg I'll push a commit a bit later. I think we can review tomorrow

This PR has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.


Ability to disable the "Suggested for you" box on profile pages

While scrolling through any profile, users will be greeted once by a "Suggested for you" box. This box contains 4 accounts suggested to the user to follow, which are the top 4 found on the Search Tab
Describe the solution you'd like
I believe this feature should have an option to disable it from appearing on profiles at all, especially on the user's own profile.
The option would be extremely nice to have for those who might not want to see it every time or at all! 🩵🩷🩵🩷
I personally would like to keep the accounts I'm suggested to follow to the Search tab, the place I'm most likely looking for accounts. Being contantly feed a list of suggestions that might be wrong and in a place I'm not expecting or wanting to see it can be a fairly negative experience

This box contains 4 accounts suggested to the user to follow, which are the top 4 found on the Search Tab

This is not how it's supposed to work and in this case is more of a bug — it's supposed to show accounts related to the account you're viewing. There is a fallback (if it doesn't know any related accounts to the viewed account, it shows generic suggestions) but we should probably remove this fallback for this reason.

We should probably also add a dismiss button so you can hide it. And maybe it doesn't make sense on own profile since the purpose is more about account discovery.

I would hide the suggestions in settings at the moment if that was an option.
But: I don't mind that they exist, I just don't like how "in my face" they are.

show them later, maybe after 15 posts of the account I'm looking at
don't call them "suggested for you" if they are triggered by the profile I'm looking at
make them a lot smaller; for example show me 3 per row, but only one row

Thanks everyone for feedback, we're going to take a pass:

We'll tweak the header to make it clear these are related accounts
We'll make it dismissible so that you don't see it again if you don't want to
We'll make the block slightly more compact on web where it's currently a bit overblown
We won't show "generic" fallback suggestions on profiles — if there's no related profiles, we'll just omit it

web ... overblown

Thank you
I'm very seldom looking at twitter, but this is less intrusive to me

Could you add a setting to disable these "adverts" entirely? There's already a way to discover new accounts at the top of the "Search" page, and I really don't like having algorithmically generated content in my feed.
For anyone browsing this thread looking for a solution, here is a ublock origin filter to remove them:
bsky.app#?#div:-abp-has(> div > div > a[aria-label="Browse more suggestions"])

I would have to agree allowing the user to disable this feature would be helpfully as I hate it when pop up in my feed of any type. This feature was more ported over from Twitter why not do more away from Twitter and start to expand on more things? But this disable feature on this would be greatly helpfully @gaearon From what you said above it been more then a week and still shows up but no means to dismiss it from the prompt I had.

I this still being considered? This feature could be useful for new arrivals but one should definitely have the option to turn it off.


22-Shell-unit-test-for-kill-all-processes-failed

replaced ps command with pgrep that works more reliably

@demarey : All sh unit tests green. Please take a look. I did simplification and put refactored functions to common sh file.

@demarey : All sh unit tests green. Please take a look. I did simplification and put refactored functions to common sh file.

Nice job! Thanks David.

@demarey Replaced assertContains, assertNotContains with printed version (will print only when assertion fails).

Christophe, if there isn't anything else, please approve :) So it can be merged and I'll remove feature branch then. Thanks a lot!


isFinal missing on streamingRecognize

Sometime the Speech API stuck when I say only one word using streaming recognize. The API recognize the end of the sentence as I receive correctly END_OF_SINGLE_UTTERANCE, but I never receive the transcription with isFinal=true.
This is a big problem for me as I use isFinal to reload the API connection. I can reproduce the issue on both API v1 and v1p1beta1.
{ config:
   { encoding: 1,
     sampleRateHertz: 8000,
     languageCode: 'fr-FR',
     maxAlternatives: 0,
     profanityFilter: true },
  singleUtterance: true,
  interimResults: true }

long sentence:
{"results":[{"alternatives":[{"words":[],"transcript":"pour","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"Bonjour","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça m'a","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça marche","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce","confidence":0}],"isFinal":false,"stability":0.8999999761581421},{"alternatives":[{"words":[],"transcript":" que ça marche","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que","confidence":0}],"isFinal":false,"stability":0.8999999761581421},{"alternatives":[{"words":[],"transcript":" ça marche bien","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça","confidence":0}],"isFinal":false,"stability":0.8999999761581421},{"alternatives":[{"words":[],"transcript":" marche bien","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça marche","confidence":0}],"isFinal":false,"stability":0.8999999761581421},{"alternatives":[{"words":[],"transcript":" bien","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça marche bien","confidence":0}],"isFinal":false,"stability":0.8999999761581421}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[],"error":null,"speechEventType":"END_OF_SINGLE_UTTERANCE"}
{"results":[{"alternatives":[{"words":[],"transcript":"bonjour est-ce que ça marche bien","confidence":0.9081912636756897}],"isFinal":true,"stability":0}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}

one word sentence:
{"results":[{"alternatives":[{"words":[],"transcript":"un","confidence":0}],"isFinal":false,"stability":0.009999999776482582}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[{"alternatives":[{"words":[],"transcript":"un","confidence":0}],"isFinal":false,"stability":0.8999999761581421}],"error":null,"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{"results":[],"error":null,"speechEventType":"END_OF_SINGLE_UTTERANCE"}
{"results":[],"error":{"details":[],"code":11,"message":"Exceeded maximum allowed stream duration of 65 seconds."},"speechEventType":"SPEECH_EVENT_UNSPECIFIED"}
{ Error: 11 OUT_OF_RANGE: Exceeded maximum allowed stream duration of 65 seconds.
    at createStatusError (node_modules/grpc/src/client.js:64:15)
    at ClientDuplexStream._emitStatusIfDone (node_modules/grpc/src/client.js:270:19)
    at ClientDuplexStream._receiveStatus (node_modules/grpc/src/client.js:248:8)
    at node_modules/grpc/src/client.js:804:12
  code: 11,
  metadata:
   Metadata {
     _internal_repr: { 'content-disposition': [Array], 'x-goog-trace-id': [Array] } },
  details: 'Exceeded maximum allowed stream duration of 65 seconds.' }

I have the same issue but not only when I'm saying one word. Sometimes it happens while long recognition. I'm using confidence result in my app every time when I receive isFinial=true. But sometimes while long recognition I receive END_OF_SINGLE_UTTERANCE and I cannot use confidence because it always returns only with isFinal=true. And this is really important value in my app. Can you return confidence value even if I'm receiving END_OF_SINGLE_UTTERANCE or while interim results?

I still have issue. Do you have information?

@beccasaurus gentle ping!

Has this issue ever been resolved  , @blerest  ... I have a similar issues of time , I have noticed the same issue where the commands is on only final after an a new world or sound has been registered between the utterances.

FWIW, this seems to be a service issue.  See https://cloud.google.com/speech/limits#content
(and https://github.com/GoogleCloudPlatform/python-docs-samples/issues/807 as well as https://stackoverflow.com/questions/46297592/google-speech-cloud-error-on-android-out-of-range-exceeded-maximum-allowed-str).

@blerest
When you get the END_OF_SINGLE_UTTERANCE event, are you then calling stream.end() ?
That's what I'm doing and it works fine... but you still have to keep listening for the "data" event from the stream itself, which should give you the final data event with isFinal:true.  Then you'll also get an end event, at which time you can "unlisten" from the stream events:  data, error, and end.

+1 to what @kidplug said.
Also tried this myself and got:
# First result is a interim result
results {
  alternatives {
    transcript: "check"
  }
  stability: 0.009999999776482582
  result_end_time {
    nanos: 940000000
  }
}
# Second result is a interim result
results {
  alternatives {
    transcript: "check"
  }
  stability: 0.8999999761581421
  result_end_time {
    seconds: 1
    nanos: 510000000
  }
}
# Speech api detects the end of my utterance
speech_event_type: END_OF_SINGLE_UTTERANCE
# Speech api returns is_final=true
results {
  alternatives {
    transcript: "check"
    confidence: 0.9628270864486694
  }
  is_final: true
  result_end_time {
    seconds: 3
    nanos: 670000000
  }
}

If anyone is still having an issue, please comment again here and I'll try to reproduce. But I'm going to close this for now.


Bumps to 0.8.5

I'm going off the version bump made in b33995f01500efcf98fbf1b06de8ba344bed88d9; please forgive me if I've missed something. :sweat_smile:

<damncabbage> Uh oh. Build terminated?
              https://travis-ci.org/purescript-contrib/node-purescript-bin/builds/124696488
<damncabbage> Does someone have to pre-build, or am I just unlucky?

Build timed out again, I'm giving travis_wait a try here to see if it can work around the long compile.

@shinnn: Can you explain what you're doing here? https://github.com/purescript-contrib/node-purescript-bin/commit/93c845c90dc3979b7e7e88e06e10d0cbce8df45d

@damncabbage Never mind. Just an experimental commit and it doesn't have any good effects.

Coverage increased (+9.09%) to 100.0% when pulling 4676877ff6bc1619059c54be7222bd80774ab35c on damncabbage:topic/bump-to-0.8.5 into e241b63b089b3030c8336605c5455b40767c78eb on purescript-contrib:master.

yaaaaaaay

:tada: (Thanks.)

Thanks for the update! Just testing locally also, and then will publish.

@garyb Why squashed. Those two commits are for totally different purpose.

Sorry, force of habit.


Feature entering

Added the following PatternFormatter markers:

"%D" to log a date/time that features millisecond precision
"%t" to log the current thread id as a hexadecimal
"%T" to log the name of the current thread or GCD queue

Finalized this iteration of the entering and exiting function logging, including the logging of arguments and return values and added test cases for my additions.

Hi Darkdah,
Thanks for this contribution !
I will read it carefully as soon as I can find some free time :-).
One quick note though :
I originally decided to use strftime to format dates for two reasons :

availability on Linux (I want that library to be available on Linux, as soon as I can find time to do that)
performance issue : NSDateFormatter is not exactly fast.

On the performance issue, I realized since that the slowest part of NSDateFormatter is the creation of the object (approximately 10 times slower than the formatting itself according to my tests).
It would be great, to create an NSDateFormatter only once per PatternFormatter object, to speed things up.
To test the performances of the date formatting, I invite you to add and run tests in PatternFormatterPerformanceTests.swift. Here are some sample tests that could be used :
func testStrftimeDateFormatterPerformance() {
  let formatter = try! PatternFormatter(identifier:"testFormatter", pattern: "%d{'format':'%m %d %y %k:%M'}")
  let info: LogInfoDictionary = [
    LogInfoKeys.LoggerName: "nameOfTheLogger",
    LogInfoKeys.LogLevel: LogLevel.Info
  ]

  self.measureBlock() {
    for _ in 1...10000 {
      formatter.format("Log message", info: info)
    }
  }
}

func testCocoaDateFormatterPerformance() {
  let formatter = try! PatternFormatter(identifier:"testFormatter", pattern: "%D{'format':'dd MM yyyy HH:mm'}")
  let info: LogInfoDictionary = [
    LogInfoKeys.LoggerName: "nameOfTheLogger",
    LogInfoKeys.LogLevel: LogLevel.Info
  ]

  self.measureBlock() {
    for _ in 1...10000 {
      formatter.format("Log message", info: info)
    }
  }
}

I realized that the code of perf tests was not up to date, I pushed a commit to fix that.
Jerome

Hello Jerome,
after reading your feedback I implemented the following:

Improved the performance of the '%D' pattern marker by not creating the NSDateFormatter object every time, but only once per PatternFormatter object. The performance of '%D' is now about as fast as '%d'.
Improved portability by replacing NSDate().timeIntervalSince1970 with my own implementation getSecondsSince1970(), which is based on gettimeofday()
Added a few more performance tests to PatternFormatterTests.swift

Regarding the current usage of NSDateFormatter under portability aspects: I think we should wait and see what functionality a common swift standard library will bring and evaluate our options once that is available.

Darkdah

Hello Jerome,
there is one more remark I want to make:
I'm not exactly happy about the arguments "dumpArgs" and "withTypeInfo" in the entering and exiting methods, I would rather want to add them as a config parameter for the Logger in form of an enum with the members "DumpArgs" and "DumpArgsWithTypeInfo".
I implemented the entering() and exiting() methods to get as much logging output as possible in situations where no debugger can be used, i.e. on the system of a customer. Thus the option to dump the arguments. But right now to tune those settings one would have to recompile and redeploy instead of simply making changes to a config file.
So if you agree with me I'd like to make this change before you accept the pull request (that way I don't have to change the signature of those methods after you accepted this pull request).
-Darkdah

Hello Jerome,
I added all the functionality I had in mind for now. If you like the changes it'd be great if you'd accept the pull request.
-Darkdah

Hi Markus,
I have not forgotten you :-).
I'm having some pretty intense time currently between my work and an associative involvement. I have very few free time, that is why I cannot spend as much time as I would like on Log4swift.
But don't worry, this should not last more than one or two weeks :-).
Bye,
Jerome

Le 21 avr. 2016 à 08:51, Markus Arndt<EMAIL_ADDRESS>a écrit :
Hello Jerome,
I added all the functionality I had in mind for now. If you like the changes it'd be great if you'd accept the pull request.
-Darkdah
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub https://github.com/jduquennoy/Log4swift/pull/7#issuecomment-212771037

Jérôme Duquennoy

clef GPG : http://jerome.duquennoy.fr/gpg/jduquennoy.gpg
md5 : c0ff5a8bca033eade512374db18ecb38

Hi Markus,
Sorry for the long delay, that was much longer than I originally expected.

I split it in three parts :
NSDateFormatter based marker in the PatternFormatter
I love that.
I would propose a deeper change to the PatternFormatter to do that though :
In the current PatternFormatter, there is just a dictionary of closures, all parameters are supposed to be applied at formatting time.
Now, we need to create an NSDateFormatter object at parsing time, which means, after all, customizing the bloc.
So I propose to replace the closures dictionary by a factory method, that will return a closure, that might be customized depending on the parameters of the marker.
This will avoid adding a parameters to all closures, when it is only needed by one of them.
I posted this proposal on the cocoaDateFormatter branch of the repo, mostly based on a copy-past of your proposal, with this proposed change.
If you agree with that solution, I'll merge that branch in master.
Thread info in the PatternFormatter
That is great too.
There is one problem though with your proposal : the thread ID or thread name is grabbed at formatting time. If the formatter is used by a threaded logger, then, the thread information will be irrelevent.
Those thread information has to be moved to the Logger class, in the two internal log methods, where most log infos are grabbed. The performance of getting those info doesn't seem to be a problem with the two methods you wrote.
Specific entry / exit log methods
I am not very fond of that feature for two reason :

it looks like a debug feature rather than a log feature ;
it is not straitforward to use : the dev has to build a list of the arguments its method has received, which makes it a not very appealing solution ;

I have the feeling that this does not belong to the logging library. I think the best way to go for that would be to have an utility method in your project that will receive the list of arguments, the logger to use, and request a log of a closure, that will format the message. This closure can use the threshold level of the logger to determine wether it should print all arguments or not.

Hello Jerome,
many thanks for your feedback.
regarding NSDateFormatter based marker in the PatternFormatter:
Your change looks fine to me, feel free to merge it. However I'd like to remind you of your message from Apr 14, in which you correctly mentioned that the creation of NSDateFormatter objects is slow. And if I interpret your changes correctly you ignore your own advice and create a NSDateFormatter object for every message. Did you change your mind regarding the performance impact?
*regarding Thread info in the PatternFormatter:
I'll see that I reimplement that feature based on your suggestion asap once you merged your pull request.
regarding Specific entry / exit log methods:
Looks like we are of opposite opinions in this case, because I find the feature extremely useful.
The company I work for uses log4net as logging framework. I added these features to it years ago and since then they helped us greatly several times when analyzing server side problems on customer production systems. On production systems you usually don't find any development/debugging tools. Furthermore most of the time a problem only shows up with the customer data, but for obvious reason you can't just take their database with you to analyze the problem in an environment where you can debug. So you have to resort to logging. Why can't a logger offer built-in functions to help you with that?
Anyway, if you still don't like that addition once you read this I'll find some other way to implement it for myself. However neither you nor anybody else will then participate from it.

Markus

Hi Markus,
Regarding NSDateFormatter
No no, I'm only creating the date formatter once per marker : when the closureForMarker method is called for "D", it creates an NSDateFormatter variable, that is then used in generatedClosure. Thus, generatedClosure will retain the dateFormatter, and use it every time it is executed.
I checked with the perf tests that it is equivalent to the strftime version
I'll merge the branch asap.
And next step, once I'll have log4swift ready for Linux and if the open source swift version of NSDateFormatter is as fast as the cocoa one, I'll think about getting rid of the strftime version.
Regarding the entry / exit logs
I completely understand that it is valuable for you. But I have the feeling that this is specific, notably because the format of the description string is hard coded, while it can change in multiple ways, depending on what your needs are. in my current job, at least, I know that if we had to use that, we would have to format things differently depending on the nature of the argument and the context.
So in the swift world, I have the feeling that this is a nice opportunity to leverage some pretty cool features available in swift :

using a closure to format your description message. Here is an exemple of what I think it could look like :

class SampleClass {
  let logger = LoggerFactory.sharedInstance.getLogger("sampleLogger")

  func methodWithPlentyOfArgs(arg1: String, arg2: String, arg3: String) {
    self.logger.debug { return descriptionForArguments([arg1, arg2, arg3], self.logger.willIssueLogForLevel(.Trace)) }
  }
}

let descriptionForEntry = { (arguments: Array<AnyObject>, printValues: Bool) -> String in
  return "place here the composition of the entry log"
}

Add an extension to the Logger class, that exposes this specialised method

Would one of those solution (or a mix of both) fit your need, internally ?

Hello Jerome,
you are right, having no way to customize the logging output when using the entering/exiting functionality is a problem I didn't consider.
From my point of view you can close my pull request for now as the useful parts of it have already been implemented by your changes or will be reimplemented by me soon.
I'll see if I can come up with a general approach for tracing the program flow and logging of parameters and return values. If I do we can eventually add it to the project, if not everybody who needs such a feature will have to implement his own version based on his preferences.
-Markus

Ok, I'm closing it then.
Thanks :-)
Jerome


How do I fix it?

Uncaught
xo
message
:
"Missing required parameter client_id."
stack
:
"Error: Missing required parameter client_id.\n    at new xo (https://accounts.google.com/gsi/client:224:59)\n    at yo (https://accounts.google.com/gsi/client:219:118)\n    at Mp.Ep (https://accounts.google.com/gsi/client:269:395)\n    at new Mp (https://accounts.google.com/gsi/client:273:424)\n    at Object.initTokenClient (https://accounts.google.com/gsi/client:277:565)\n    at http://localhost:3000/static/js/bundle.js:12469:110\n    at commitHookEffectListMount (http://localhost:3000/static/js/bundle.js:70183:30)\n    at commitPassiveMountOnFiber (http://localhost:3000/static/js/bundle.js:71935:17)\n    at commitPassiveMountEffects_complete (http://localhost:3000/static/js/bundle.js:71900:13)\n    at commitPassiveMountEffects_begin (http://localhost:3000/static/js/bundle.js:71887:11)"
type
:
"missing_required_parameter"
[[Prototype]]
:
Error

Make sure you are passing correct clientId for <GoogleOAuthProvider />

Make sure to add clientId in the GoogleOAuthProvider wrapper.


Dashboard and Home should have consistent naming if they are the same thing

In the screenshot below, the menu references Home, and the blue link references Dashboard. They seem to go to the same place. It would be more intuitive to use the same name for both.

Any preference on which name -- Dashboard or Home?

A designer is working on a graphical design, so this will be changed anyway, when new design will come out

@splix Is there a mobile web / app version development for the wallet?

@srameshr Mobile version is an important goal and there is a plan to do that, but after few iterations of Desktop wallet.
We have Emerald Vault concept, which stores all private data and sign transactions, it allows to use wallet w/o full node and makes it usable on mobiles. So after we'll have stable release of desktop, we'll start working on mobile UI

@splix Is Emerald Vault open sourced or ready? Like an API or native mobile library or something, so that we can use that abstraction for transactions while just focusing on client mobile UI?

@srameshr sure, everything is open source already. You can take a look at the code here https://github.com/ethereumproject/emerald-rs There maybe some terminology confusion, as it was initially called emerald-rs then emerald-connector, and now emerald-vault seems to be more accepted

@splix The new design, will it be open sourced and will the designer consider doing a mobile version too?

@srameshr I think yes.
We have Dashboard term now. So, close this issue.


Issue with new version of activesupport

After fresh install of dropcaster I get this error:
Traceback (most recent call last):
	13: from /usr/local/lib/ruby/gems/2.7.0/bin/dropcaster:23:in `<main>'
	12: from /usr/local/lib/ruby/gems/2.7.0/bin/dropcaster:23:in `load'
	11: from /usr/local/lib/ruby/gems/2.7.0/gems/dropcaster-1.1.0/bin/dropcaster:29:in `<top (required)>'
	10: from /usr/local/Cellar/ruby@2.7/2.7.2/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
	 9: from /usr/local/Cellar/ruby@2.7/2.7.2/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
	 8: from /usr/local/lib/ruby/gems/2.7.0/gems/dropcaster-1.1.0/lib/dropcaster.rb:6:in `<top (required)>'
	 7: from /usr/local/Cellar/ruby@2.7/2.7.2/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
	 6: from /usr/local/Cellar/ruby@2.7/2.7.2/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
	 5: from /usr/local/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/core_ext/date_time/conversions.rb:5:in `<top (required)>'
	 4: from /usr/local/Cellar/ruby@2.7/2.7.2/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
	 3: from /usr/local/Cellar/ruby@2.7/2.7.2/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
	 2: from /usr/local/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/core_ext/time/conversions.rb:6:in `<top (required)>'
	 1: from /usr/local/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/core_ext/time/conversions.rb:72:in `<class:Time>'
/usr/local/lib/ruby/gems/2.7.0/gems/activesupport-6.1.0/lib/active_support/core_ext/time/conversions.rb:72:in `alias_method': undefined method `xmlschema' for class `Time' (NameError)

If I manually uninstall activesupport-6.1.0 and install activesupport-6.0.0 all works fine. This issue here seems to be related: https://github.com/rails/rails/issues/40861

Solved this for me by adding explicit version for activesupport in my podcast project Gemfile
source 'https://rubygems.org'

gem 'activesupport', '6.0.0'
gem 'dropcaster'

Solved this for me by adding explicit version for activesupport in my podcast project Gemfile
source 'https://rubygems.org'

gem 'activesupport', '6.0.0'
gem 'dropcaster'

Please re-open if the problem still persists.


Features request: Anamorph Widescreen and increased refresh rate.

Hello, I have a few questions: is it possible to add anamorphic widescreen support? preferably with a key combination? I understand that games can be played at 480p and the tv could be forced, but it would be nice to have a constant 1080p mode and the ability to switch on the fly, especially for those games that have been hexedited or using codebreaker to have widescreen in only specific part of the game.
The second one is refresh rate. Now this is an extremely edge case, but let's say I'm using a CRT with an hdmi to vga converter that supports 1080p at 90 or 120Hz, is it possible to increase the refresh rate? Maybe by inserting a black frame every 1/3 or every other frame?
Thanks!

Sorry, 1080p at 90 or 120Hz is not possible with the ADV7513 (HDMI transmitter).
I will see, if anamorphic widescreen support can be implemented.


[Pattern Configurator] feat for changing name from toolbar

Description

Name can be changed from toolbar
Fixed internal width issue for rjsf form: in some cases the form was not taking full-width of the accordion earlier

https://user-images.githubusercontent.com/48255244/145725729-0f44f0cd-3071-415b-80f2-7a7558c78dc5.mp4
Notes for Reviewers
Signed commits

[x] Yes, I signed my commits.

Codecov Report

Merging #4764 (349089f) into master (204d488) will decrease coverage by 6.95%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #4764      +/-   ##
==========================================
- Coverage   32.32%   25.37%   -6.96%
==========================================
  Files          61       61
  Lines        5116     5116
==========================================
- Hits         1654     1298     -356
- Misses       3034     3500     +466
+ Partials      428      318     -110

Flag
Coverage Δ

e2etests
?

gointegrationtests
?

integrationtests
?

unittests
25.37% <ø> (ø)

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

Impacted Files
Coverage Δ

mesheryctl/internal/cli/root/system/start.go
1.11% <0.00%> (-58.52%)
:arrow_down:

mesheryctl/internal/cli/root/system/restart.go
2.50% <0.00%> (-47.50%)
:arrow_down:

mesheryctl/internal/cli/root/system/status.go
0.00% <0.00%> (-47.44%)
:arrow_down:

mesheryctl/internal/cli/root/system/update.go
1.05% <0.00%> (-34.74%)
:arrow_down:

mesheryctl/internal/cli/root/system/stop.go
1.78% <0.00%> (-23.22%)
:arrow_down:

mesheryctl/internal/cli/root/system/check.go
1.39% <0.00%> (-22.38%)
:arrow_down:

mesheryctl/internal/cli/root/system/logs.go
3.29% <0.00%> (-20.88%)
:arrow_down:

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 204d488...349089f. Read the comment docs.

add: Now when yaml name is changed the name on the toolbar also updates.


Problem in Bottom NavigationBar with 3 tabs

If i have 3 tabs in bottom navigation bar, the second tab sometimes not recreated(persisting or initStat() is not called).
here is the code:
import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
       return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with SingleTickerProviderStateMixin {
  TabController _tabController;

  @override
  void initState() {
    _tabController = TabController(length: 3, vsync: this);
    super.initState();
  }

  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: TabBarView(
        controller: _tabController,
        children: <Widget>[FirstTab(), SecondTab(), ThirdTab()],
      ),
      bottomNavigationBar: TabBar(
        labelColor: Colors.deepOrangeAccent,
        controller: _tabController,
        tabs: <Widget>[
          Tab(icon: Icon(Icons.filter_1)),
          Tab(icon: Icon(Icons.filter_2)),
          Tab(icon: Icon(Icons.filter_3))
        ],
      ),
    );
  }
}

class FirstTab extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _FirstTabState();
  }
}

class _FirstTabState extends State<FirstTab> {
  @override
  void initState() {
    print("FIRST_TAB: Widget created or recreated...");
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Center(child: Text("First Tab")),
    );
  }
}

class SecondTab extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _SecondTabState();
  }
}

class _SecondTabState extends State<SecondTab> {
  @override
  void initState() {
    print("SECOND_TAB: Widget created or recreated...");
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Center(child: Text("Second Tab")),
    );
  }
}

class ThirdTab extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _ThirdTabState();
  }
}

class _ThirdTabState extends State<ThirdTab> {
  @override
  void initState() {
    print("THIRD_TAB: Widget created or recreated...");
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Center(child: Text("Third Tab")),
    );
  }
}

This is the Run output looks like:
FIRST_TAB: Widget created or recreated...               (initially)
SECOND_TAB: Widget created or recreated...          (on clicking second tab)
THIRD_TAB: Widget created or recreated...              (on clicking third tab)
FIRST_TAB: Widget created or recreated...               (on clicking second tab, its not recreated. then on clicking first tab)
SECOND_TAB: Widget created or recreated...          (on clicking second tab)

In my original application, I have to recreate my second tab (to get updated dynamic ListView from server) when switching from third tab.

Thanks for the reproduction!
I can't reproduce though
[✓] Flutter (Channel beta, v0.9.4, on Mac OS X 10.13.6 17G65, locale en-AT)
    • Flutter version 0.9.4 at /Users/zoechi/flutter/flutter
    • Framework revision f37c235c32 (2 weeks ago), 2018-09-25 17:45:40 -0400
    • Engine revision 74625aed32
    • Dart version 2.1.0-dev.5.0.flutter-a2eb050044

Thanks for the reply.
Sorry that I didn't mentioned the device. The issue was in android.
It looks like secondTab is recreated in IOS.
here is the Xcode output:
`Xcode build done.                                            4.7s
Syncing files to device iPad Pro (12.9-inch)...
flutter: FIRST_TAB: Widget created or recreated...
2.0s
🔥  To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
An Observatory debugger and profiler on iPad Pro (12.9-inch) is available at: http://<IP_ADDRESS>:49805/
For a more detailed help message, press "h". To detach, press "d"; to quit, press "q".
flutter: SECOND_TAB: Widget created or recreated...
flutter: THIRD_TAB: Widget created or recreated...
flutter: SECOND_TAB: Widget created or recreated...
flutter: FIRST_TAB: Widget created or recreated...
flutter: SECOND_TAB: Widget created or recreated...
But on running in adroid:Launching lib/main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...                                       1.2s
Resolving dependencies...                                    1.0sGradle task 'assembleDebug'...
Gradle task 'assembleDebug'... Done                          3.7s
Built build/app/outputs/apk/debug/app-debug.apk.
Syncing files to device Android SDK built for x86...
I/flutter ( 4610): FIRST_TAB: Widget created or recreated...
D/        ( 4610): HostConnection::get() New Host Connection established 0x9d6a38c0, tid 4628
D/EGL_emulation( 4610): eglMakeCurrent: 0x9aafe260: ver 2 0 (tinfo 0x9d6832a0)
1.6s
🔥  To hot reload changes while running, press "r". To hot restart (and rebuild state), press "R".
An Observatory debugger and profiler on Android SDK built for x86 is available at: http://<IP_ADDRESS>:51394/
For a more detailed help message, press "h". To detach, press "d"; to quit, press "q".
I/flutter ( 4610): SECOND_TAB: Widget created or recreated...
I/flutter ( 4610): THIRD_TAB: Widget created or recreated...
I/flutter ( 4610): FIRST_TAB: Widget created or recreated...
I/flutter ( 4610): SECOND_TAB: Widget created or recreated...
`

I tried on both Windows and Mac. The same issue in android.

Did you try with the emulator on your Mac or with a device?

I tried on both original android device and emulator with android studio

Summary:
On switching from 3rd tab to 2nd tab, the SecondTab not recreated.
Windows(AndroidStudio):
Android emulator : SecondTab not recreated
Android device :  SecondTab not recreated
Flutter doctor:
[√] Flutter (Channel beta, v0.9.4, on Microsoft Windows [Version 10.0.17134.285], locale en-IN)
    • Flutter version 0.9.4 at E:\FlutterSDK\flutter
    • Framework revision f37c235c32 (2 weeks ago), 2018-09-25 17:45:40 -0400
    • Engine revision 74625aed32
    • Dart version 2.1.0-dev.5.0.flutter-a2eb050044

Mac(AndroidStudio):
Android emulator : SecondTab not recreated
Android device : SecondTab recreating (Working fine)
Flutter doctor:
[✓] Flutter (Channel beta, v0.9.4, on Mac OS X 10.13.6 17G65, locale en-IN)
    • Flutter version 0.9.4 at /Users/support/Documents/Flutter/flutter
    • Framework revision f37c235c32 (2 weeks ago), 2018-09-25 17:45:40 -0400
    • Engine revision 74625aed32
    • Dart version 2.1.0-dev.5.0.flutter-a2eb050044

Hi @vijayaragavangkf
Not able to reproduce this on latest dev channel

flutter doctor -v
[✓] Flutter (Channel dev, v1.18.0-dev.5.0, on Mac OS X 10.15.4 19E287, locale
    en-GB)
    • Flutter version 1.18.0-dev.5.0 at /Users/taha/Code/flutter_dev
    • Framework revision 7f56b53de4 (9 days ago), 2020-04-12 12:00:01 -0400
    • Engine revision beb8a7ec48
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 89b0f67261)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/taha/Code/sdk
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = /Users/taha/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4.1, Build version 11E503a
    • CocoaPods version 1.9.1
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
[✓] VS Code (version 1.44.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.9.1
[✓] Connected device (4 available)
    • SM M305F   • 32003c30dc19668f • android-arm64  • Android 10 (API 29)
    • macOS      • macOS            • darwin-x64     • Mac OS X 10.15.4 19E287
    • Chrome     • chrome           • web-javascript • Google Chrome
      81.0.4044.113
    • Web Server • web-server       • web-javascript • Flutter Tools
• No issues found!
taha@MacBook-Pro ~ % flutterd doctor -v
[✓] Flutter (Channel dev, v1.18.0-dev.5.0, on Mac OS X 10.15.4 19E287, locale
    en-GB)
    • Flutter version 1.18.0-dev.5.0 at /Users/taha/Code/flutter_dev
    • Framework revision 7f56b53de4 (9 days ago), 2020-04-12 12:00:01 -0400
    • Engine revision beb8a7ec48
    • Dart version 2.8.0 (build 2.8.0-dev.20.0 89b0f67261)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/taha/Code/sdk
    • Platform android-29, build-tools 29.0.3
    • ANDROID_HOME = /Users/taha/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 11.4.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.4.1, Build version 11E503a
    • CocoaPods version 1.9.1
[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build
      1.8.0_212-release-1586-b4-5784211)
[✓] VS Code (version 1.44.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.9.1
[✓] Connected device (5 available)
    • SM M305F   • 32003c30dc19668f                     • android-arm64  •
      Android 10 (API 29)
    • iPhone 11  • 41EB2A85-7EB4-4FD2-8978-FBBE2A681D74 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-13-4 (simulator)
    • macOS      • macOS                                • darwin-x64     • Mac
      OS X 10.15.4 19E287
    • Chrome     • chrome                               • web-javascript •
      Google Chrome 81.0.4044.113
    • Web Server • web-server                           • web-javascript •
      Flutter Tools
• No issues found!

if you're still experiencing this problem, please create a new issue and provide the information
required in the template.
Thank you


aur-fetch: --existing, --clone-url

Possible options to make aur-fetch more suitable for non-AUR workflows. Related discussion: #860

There are uses for --clone-url and it makes sense to add it, but since my example use case for creating #860 involved official packages, I just want to point out that for official packages this wouldnʼt work.
All packages are cloned from the same repository, just with different branches, for reasons that I assume would make sense if I found the discussion about moving from svn to git.  For that youʼd need to either call asp checkout $pkg, or pass more complicated arguments to git clone to set the branch and not download more of the repo than necessary.
Given that a lot of other things also need to be different (eg. if you use asp, you need to run asp update before anything that aur-fetch does), and that aur-fetch shouldnʼt try cloning such packages unless explicitly requested (since if theyʼre just needed as dependencies theyʼll already be in the official repositories as binary packages), I donʼt know if itʼs worth supporting this workflow more directly.

Thanks for the comment. In that case I'd only consider --existing. Setting the clone URL through AUR_LOCATION makes the assumptions for it (i.e. no branches) more explicit.


unable to install 'package directory 'antfs_cli' does not exist"

I'm trying to do a new install but keep getting thi error
running install
running bdist_egg
running egg_info
writing requirements to antfs_cli.egg-info/requires.txt
writing antfs_cli.egg-info/PKG-INFO
writing top-level names to antfs_cli.egg-info/top_level.txt
writing dependency_links to antfs_cli.egg-info/dependency_links.txt
writing entry points to antfs_cli.egg-info/entry_points.txt
warning: manifest_maker: standard file 'setup.py' not found
error: package directory 'antfs_cli' does not exist

Hmm, how are you doing this install? What command are you running?

Thanks for the response. I finally was able to get it to work.


Remove duplicate field expires_at in example

The field appears twice intentionally.
There is an expires_at for bolt11 and another for onchain payments.

But currently there are 3, 2 in the onchain object and 1 in the bolt11 object.
A json object cannot have duplicate keys.

Oops, you're right


Compilation error: An item with the same key has already been added

http://forums.bridge.net/forum/bridge-net-pro/bugs/466

Fix commit
Test commit


gha: Bump timeout to 90 minutes for build commit.

The backport PR normally contains a lot of commits, which takes longer than 60 mins as per below run. We can either split the job into 2 parts: one for make build and one for make -C bpf build_all, or just bump timeout to 90 mins. The later one seems easier in terms of checking diff.
https://github.com/cilium/cilium/actions/runs/4248933091/jobs/7388610170

I wonder whether we should make the same change on master as well in order to stay consistent. We don't have backport PRs there, but increasing the timeout won't harm.

Full CI is not required, all required reviews are in. Merging now.


feat: add Elixir to sdk:all task

Make sdk:all to run sdk:elixir tasks.

I think that we should add the Elixir SDK to https://github.com/dagger/dagger/blob/main/RELEASING.md. WDYT @wingyplus?

I think that we should add the Elixir SDK to https://github.com/dagger/dagger/blob/main/RELEASING.md. WDYT @wingyplus?

Will submit a PR within today. :)


[RFE] - View costs of Kubernetes Nodes / VMs in Rancher Console

For multi-cloud customers, I think it would be really cool to see some approximate costs (per cluster, per namespace, etc) natively on the Rancher Console.

Same as https://github.com/rancher/rancher/issues/26901


Initial sketch of the new API shape for AWS serverless components.

Not ready for review.
TODO:

[x] Cloudfront Distribution
[x] Cognito userpool

--
Design for triggers that can be added to a resource after the resource has been created.
Given a resource XXX (like Bucket):

Define interface XXXEvent, the type of the value that will be passed into the lambda when invoked.
Define type XXXEventHandler = Handler<XXXEvent, void>.  The type of the callback/handler to create the lambda from.
Define interface XXXEventSubscriptionArgs.  The args that can be used to help create the subscription.  This can be empty if we don't have anything interesting to pass along. However, we should still include  it so that we have something to add to in the future if necessary.
Define class XXXEventSubscription extends EventSubscription.  This will be the actual resource that will create all necessary AWS resources for the hookup.
For all the interesting event types that this resource supports, create onYYY exported function.  These methods should have the naming pattern onNounVerb.  i.e. "onObjectCreated", "onReferenceUpdated", etc.  The shape of this function should be:   function onYYY(name: string, xxx: XXX, handler: XXXHandler, args?: XXXSubscriptionArgs, opts?: ResourceOptions): XXXEventSubscription
If there aren't interesting verbs for the resource, just have a single onEvent exported function.  For example, a user can only register to hear about the stream of arbitrary events happening.  So there is no more specific onNounVerb.
If there are interesting verbs for the resource, but there's also a need to have a catch-all configuralbe helper, then supply an onEvent helper for that purpose.  For example, with s3, users can register to hear about things like onObjectCreated, or onObjectDeleted.  However, if the user wants to register a single callback to handle both of these, they can just call onEvent passing the appropriate full config options.  In this sense, onEvent maps most closely to providing the full configuration that AWS often has for events.

Design for triggers that must be provided when a resource is being created.
This is much simpler than the above.  In general, resources that need their triggers defined at creation time really only need the appropriate lambda ARN passed in (and have that somewhere already in their 'args' bag).  So, the design here for a given resource XXX is to provide a createXXX method with nearly the same args as their normal constructor (i.e. name, args, opts).  However, we augment their normal XXXArgs struct to snip out the part that takes a lambda ARN, and insert instead a similar shape just using our Handler<XXXEvent, ...> types.  i.e. if previous someone would have done:
new XXX(name, { ... lambda: some_arn_input })
Then can instead now do:
createXXX(name, { ... lambda: async ev => ... }): XXX
The createXXX impl will create the appropriate AWS lambdas and then call new XXX for you.  Technically you could effectively do this yourself.  But this still makes things nice and declarative.  it will also simplify things a lot if creating the AWS lambda would have required figuring out things like permissions and roles and whatnot.
This is much simpler than above.  We expose strongly typed helpers to take in JS/TS callbacks and produce the right shape of hte lambda data that needs to be passed to the specific API.  As each API usually takes a different shape, we customize accordingly.
For example, a cloudfront Distribution takes an array of objects, where one part of the object is the part of the cache to configure, and the other is the lambda ARN.
Another example is Cognito.  There, an object is passed in with 10 special named properties that map to lambda ARNs'.
For each of these APIs, we make it simple to provide just the callbacks in a way that feels natural in TS/JS, and we convert it to the form that the APIs need.

Tagging @joeduffy In case you want to weigh in as well.

@ellismg @lukehoban can we discuss what we would need to do wrt to this being breaking changes?  would we just rev versions?  If so, where do we do that?  how do we manage downstream fallout?

can we discuss what we would need to do wrt to this being breaking changes?

I've marked the PR as a breaking change.  We should release this as part of 0.15.0.
@ellismg Should we tag master with 0.15.0 now that this change is in master?  I still really wish there was a file that contained the version (like in package.json) instead of just a tag.

What actually consumes this downstream?

None of our stuff (yet).  However, we have customers using it.  For example, @tirke was using this package in his own library.

I do intend to make @pulumi/cloud-aws start using this.  But at that point we can also rev the version of that library.

@lukehoban I'd like to get this in today.  Any major concerns here?

Actually, let's scrap getting this in.  I want to work with @ellismg in terms of testing this along with the downstream change in pulumi-cloud that uses this.

We leave these out of the public API surface area, still check in the code, and add TODO comments with new tracking bugs for each one of these that is not yet implemented (with "Help Wanted" label).

Let's do this.  They're alreayd not exported.  So they're not visible.  So let's have the stubs and file bugs for fleshign this out.


Plane on Map not aligning with route

Describe the bug
As per picture. Plane and flight route don't align. Plane on far left side of picture should be at the end of the blue line not apart
Version
7.0.0-dev+240501.2040c9
To Reproduce
Steps to reproduce the behavior:

Flight was from NZAA to PHNL

Expected behavior
Plane on far left should align with route on far right in blue. Advised in discord that this is a core phpVMS problem, and this is also caused by the Anti-Meridian (where -180 longitude becomes +180).
Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
N/A

This is a limitation of leaflet map being used there. Not a bug of phpvms as it sends the coordinates only :(

I will let them know thanks

Let who know ? Leaflet developers ?


Update quit string on tests

That has changed on the new Docker images.
A separate "issue" is that the missions now don't terminate on critical failures, so they're running until the timeout - which causes CI to take longer and test expectations to fail (we get more drift, etc).

Cancelled CI after 1h 34 min. PitchMass didn't even have a chance to reach the mission timeout and the test timed out after 1500.23 sec.

Merging this, I'm working on a fix for the timeouts for a new PR.


Feature/user menu

Fixes PXBLUE-1450.

Changes proposed in this Pull Request:

Add UserMenu component
Add UserMenu Storybook stories
Add leftComponent prop to InfoListItem

Looks good...did we fix the Android issue?

Not yet... going to work on it in a few minutes.

Looks good...did we fix the Android issue?

Not yet... going to work on it in a few minutes.

Can I press the green button now?

Can I press the green button now?


ENH: In allow path-like values passed to set_config

Reference issue
Fixes #7622
What does this implement/fix?
Allows to pass arbitrary path-like values to set_config as long as they're None or can be cast into a string. No further type checking is performed.
Additional information
Also this PR includes a small fix to the config test suite, as one of the tests was expecting a TypeError, while in fact a RuntimeWarning is raised.

Actually to be safe maybe it's a good idea to keep the type checking so that people don't mistakenly think you actually can pass float for example and have it saved as float. One way to do this and solve your problem would be to _validate_type(value, (None, 'path-like'), 'value'), and cast to str afterward.

One way to do this and solve your problem would be to _validate_type(value, (None, 'path-like'), 'value'), and cast to str afterward.

Can do, but isn't this exactly what @cbrnr wanted us to avoid in #7622? :)

His suggestion was not to restrict types because JSON dumping would handle it:, but JSON dumps allow for things like float and int to pass through:
>>> type(json.loads(json.dumps({'a': 1}))['a'])
<class 'int'>

This is a different behavior from casting to str, which we do internally for compatibility with env var setting, which is necessarily string-based. So it's actually good for us if people get errors with int and float because it helps them understand that we only store strings.

@larsoner changed accordingly

Not sure what's up with Travis…

Grrr numba... I'll look into it


Developers review

[ ] URL: https://yearn.github.io/yearn-devdocs/v2/process-and-procedures/emergency

[ ] TLDR ==> TL;DR
[ ] CMO add a comment that is a private repo
[ ] strategists-ms add a comment that is a private repo

[ ] URL: https://yearn.github.io/yearn-devdocs/v2/process-and-procedures/naming-convention

[ ] yVaults is not rendered as title. Maybe because it doesn't have content below

[ ] URL: https://yearn.github.io/yearn-devdocs/v2/yearn-sdk/yearn-stack

[ ] The first image: can we get a better one? Like the one in Yearn Lens

[ ] URL: https://yearn.github.io/yearn-devdocs/v2/yearn-lens/contracts

[ ] Mainnet is not rendered as title. Maybe because it doesn't have content below

updated all points, except for flow chart render. Do we know who has the original file and where the one in Yearn Lens was produced?