Refactor gallery.css for Improved Code Structure and Readability ✨

Description:
The current CSS code for the gallery section needs some improvements to enhance code structure and readability. I've refactored the gallery.css file to achieve better organization and maintainability while preserving the original functionality.
Refactored Changes:

Removed the commented out text-shadow property from the .number class to eliminate unnecessary clutter.

Before:
.number {
  color: #5942e9;
  /* text-shadow: 2px 2px 3px rgb(166, 0, 255); */
  font-size: 40px;
  margin-top: 40px;
  letter-spacing: 1.5px;
  font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
}

After:
.number {
  color: #5942e9;
  font-size: 40px;
  margin-top: 40px;
  letter-spacing: 1.5px;
  font-family: "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
}

Combined multiple box-shadow properties in the .image-slideshow class into a single rule separated by commas for better readability.

Before:
.image-slideshow {
  max-width: 700px;
  transition: 3s ease-in;
  margin: auto;
  position: relative;
  box-shadow: rgba(0, 0, 0, 0.56) 0px 22px 70px 4px,
              rgba(17, 17, 26, 0.1) 0px 4px 16px,
              rgba(17, 17, 26, 0.1) 0px 8px 24px,
              rgba(17, 17, 26, 0.1) 0px 16px 56px;
  cursor: pointer;
  margin-top: 40px;
}

After:
.image-slideshow {
  max-width: 700px;
  transition: 3s ease-in;
  margin: auto;
  position: relative;
  box-shadow: rgba(0, 0, 0, 0.56) 0px 22px 70px 4px,
              rgba(17, 17, 26, 0.1) 0px 4px 16px,
              rgba(17, 17, 26, 0.1) 0px 8px 24px,
              rgba(17, 17, 26, 0.1) 0px 16px 56px;
  cursor: pointer;
  margin-top: 40px;
}

Moved the transition: 3s ease-in; property from .image-slideshow img:hover to .image-slideshow img to apply the transition to both hover and normal states of the image, simplifying the code.

Before:
.image-slideshow img {
  width: 100%;
  box-shadow: rgba(0, 0, 0, 0.17) 0px -23px 25px 0px inset,
              rgba(0, 0, 0, 0.15) 0px -36px 30px 0px inset,
              rgba(0, 0, 0, 0.1) 0px -79px 40px 0px inset,
              rgba(0, 0, 0, 0.06) 0px 2px 1px,
              rgba(0, 0, 0, 0.09) 0px 4px 2px,
              rgba(0, 0, 0, 0.09) 0px 8px 4px,
              rgba(0, 0, 0, 0.09) 0px 16px 8px,
              rgba(0, 0, 0, 0.09) 0px 32px 16px;
  object-fit: cover;
  transition: 3s ease-in;
}

After:
.image-slideshow img {
  width: 100%;
  box-shadow: rgba(0, 0, 0, 0.17) 0px -23px 25px 0px inset,
              rgba(0, 0, 0, 0.15) 0px -36px 30px 0px inset,
              rgba(0, 0, 0, 0.1) 0px -79px 40px 0px inset,
              rgba(0, 0, 0, 0.06) 0px 2px 1px,
              rgba(0, 0, 0, 0.09) 0px 4px 2px,
              rgba(0, 0, 0, 0.09) 0px 8px 4px,
              rgba(0, 0, 0, 0.09) 0px 16px 8px,
              rgba(0, 0, 0, 0.09) 0px 32px 16px;
  object-fit: cover;
  transition: 3s ease-in;
}

Removed the duplicate box-shadow property from the .image-slideshow:hover class, as it's the same as the one defined for .image-slideshow.

Before:
.image-slideshow:hover {
  box-shadow: rgba(0, 0, 0, 0.56) 0px 22px 70px 4px;
  position: relative;
}

After:
.image-slideshow:hover {
  position: relative;
}

With these changes, the CSS code for the gallery section is now more organized and maintainable while preserving the original styling and functionality. The refactored code ensures better readability and makes future modifications and updates easier.

Hey @Vaishnavi-Patil2211  Please assign me this i have done the refactor with this code


Update ci.yml

@joseph-sentry I think we should also have it run on prod as well as staging

@joseph-sentry I think we should also have it run on prod as well as staging

I wasn't actually planning on making this an actual PR, I was just testing out the test results commenting on staging, I will clean up my commits then ask for a review!


Realm URL for Mobile Flow would be nice to have configurable

Right now, when using the Mobile Login flow (zerver/views/auth.py:162) the realm url is fixed. In our setup, we have to use a separate url in order to handle our authentication requirements for the web based site. Having an option in /etc/zulip/settings.py to override the realm passed back during the auth process would be helpful.

Possibly the right way for you folks to handle this might be just to have a 1-commit fork changing this that you use upgrade-zulip-from-git with.
It wouldn't make sense as a normal server-level setting in settings.py, since it's a per-realm feature; though I suppose we could have a map MOBILE_FLOW_OTP_URI_MAP and we'd do basically MOBILE_FLOW_OTP_URI_MAP.get(realm_uri, realm.uri) or something.  I'd probably be OK with merging that.

@timapril is this still something relevant to you folks?

BTW https://zulip.readthedocs.io/en/latest/production/email-gateway.html is probably useful documentation if you folks are maintaining a fork.  I'm going to close as likely no longer relevant; we can reopen if I'm wrong.


🐛 [FirebaseMessaging] Unable to get the FCM token in release mode on iOS

Bug report
I used the latest version of firebase_core 2.21.0 and firebase_messaging 14.7.3, I can normally get the FCM token on iOS by directly run the flutter app in debug mode.
But when I build the release mode to generate the IPA file for iOS , then put the IPA file to the real mobile device and install to device, I can not get the FCM token(No Response).
By the way, everything is fine on Android.
Steps to reproduce
Steps to reproduce the behavior:

Go to pubspec.yaml and set the two packages below
dependencies:
 firebase_core: ^2.21.0
 firebase_messaging: ^14.7.3
Click Pub get
Switch to the Terminal and type: flutter build ipa -t lib/main.dart
Get the IPA file from build/ios/ipa/ and put the file to the real mobile device(I use "Sideloadly").

Sample project
Using the Firebase Messaging Example
example

Additional context
I found a workaround method from here by using the old version below
firebase_core: ^1.24.0
firebase_messaging: ^12.0.3
firebase_core_platform_interface: 4.5.1
And it worked! I can get the FCM token in the release mode on iOS.
Then I try to use below
firebase_core: ^2.0.0
firebase_messaging: ^14.0.0
It failed.
So I think this problem may arise from this version.

Flutter doctor
Run flutter doctor and paste the output below:
Click To Expand
[✓] Flutter (Channel stable, 3.13.9, on macOS 14.1 23B74 darwin-arm64, locale zh-Hant-TW)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.84.1)
[✓] Connected device (4 available)
[✓] Network resources

• No issues found!

Flutter dependencies
Run flutter pub deps -- --style=compact and paste the output below:
Click To Expand
Resolving dependencies...
Got dependencies.
Dart SDK 3.1.5
Flutter SDK 3.13.9
firebase_messaging_example 0.0.0

dependencies:
- firebase_core 2.21.0 [firebase_core_platform_interface firebase_core_web flutter meta]
- firebase_messaging 14.7.3 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta]
- flutter 0.0.0 [characters collection material_color_utilities meta vector_math web sky_engine]
- flutter_local_notifications 14.1.4 [clock flutter flutter_local_notifications_linux flutter_local_notifications_platform_interface timezone]
- http 0.13.6 [async http_parser meta]

dependency overrides:
- plugin_platform_interface 2.1.6 [meta]

transitive dependencies:
- _flutterfire_internals 1.3.11 [collection firebase_core firebase_core_platform_interface flutter meta]
- args 2.4.2
- async 2.11.0 [collection meta]
- boolean_selector 2.1.1 [source_span string_scanner]
- characters 1.3.0
- clock 1.1.1
- collection 1.17.2
- dbus 0.7.8 [args ffi meta xml]
- fake_async 1.3.1 [clock collection]
- ffi 2.1.0
- firebase_core_platform_interface 5.0.0 [collection flutter flutter_test meta plugin_platform_interface]
- firebase_core_web 2.8.1 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
- firebase_messaging_platform_interface 4.5.12 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
- firebase_messaging_web 3.5.12 [_flutterfire_internals firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta]
- flutter_local_notifications_linux 4.0.0+1 [dbus ffi flutter flutter_local_notifications_platform_interface path xdg_directories]
- flutter_local_notifications_platform_interface 7.0.0+1 [flutter plugin_platform_interface]
- flutter_test 0.0.0 [flutter test_api matcher path fake_async clock stack_trace vector_math async boolean_selector characters collection material_color_utilities meta source_span stream_channel string_scanner term_glyph web]
- flutter_web_plugins 0.0.0 [flutter characters collection material_color_utilities meta vector_math web]
- http_parser 4.0.2 [collection source_span string_scanner typed_data]
- js 0.6.7 [meta]
- matcher 0.12.16 [async meta stack_trace term_glyph test_api]
- material_color_utilities 0.5.0 [collection]
- meta 1.9.1
- path 1.8.3
- petitparser 5.4.0 [meta]
- sky_engine 0.0.99
- source_span 1.10.0 [collection path term_glyph]
- stack_trace 1.11.0 [path]
- stream_channel 2.1.1 [async]
- string_scanner 1.2.0 [source_span]
- term_glyph 1.2.1
- test_api 0.6.0 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph]
- timezone 0.9.2 [path]
- typed_data 1.3.2 [collection]
- vector_math 2.1.4
- web 0.1.4-beta
- xdg_directories 1.0.3 [meta path]
- xml 6.3.0 [collection meta petitparser]

I faced the same issue too

@Chia-Wei-Du
Can you confirm that you have configured / setup based on the documentation ?

@darshankawar
Yes, I have configured base on the documentation.

As I said above, I can get the fcm token and receive the notification in the debug mode by running my project directly.
But it failed in the release mode, just like using TestFlight.
The fcm token is never received.
The point is, everything works fine in older versions:
firebase_core: ^1.24.0
firebase_messaging: ^12.0.3
firebase_core_platform_interface: 4.5.1

Hi @Chia-Wei-Du, does the method hang or returns an empty response? Do you have some crash monitoring setup that can catch any errors that may be occurring?

@danagbemava-nc
No. The method FirebaseMessaging.instance.getToken(); is no response.
Because the issue is base on the release mode, I can not get any log.
But I test the FCM Messaging example below, hope this helps you a bit.

Please see the token_monitor.dart

The example app start with the CircularProgressIndicator.
If get the FCM token successfully using FirebaseMessaging.instance.getToken();, it will update the token by setState(() {       _token = token;     });.
You can check the video below. FirebaseMessaging.instance.getToken(); is no response, so the CircularProgressIndicator keep running.
No Response Video
If using the order version below, it get the FCM token successfully and it will update the toke on the screen.

Normal Video

@danagbemava-nc
After few days of research from #10656 , #9878 , #10625 , #10742 , #11590,
I figure out that it should be get the apns token successfully before getting the fcm token.
Even if I successfully obtained the fcm token using the old version, I still cannot receive push notifications without obtaining the apns token.
But even after I read all these issues, I still don't know how to get the apns key correctly in release mode on real device.
So I reorganized the question below:
Testing with run the both release and debug version by xcode, I can get the apns token and fcm token successfully.
But If I build the release ipa and install by Testflight/Sideloadly, it will return the null apns token.
I saw someone delay few seconds and try again then get the apns token successfully.
But for me, it not worked. It still return the null apns token.
And I also saw someone open the issue #11459 in ios sdk.
I don't know if this issue is related to mine.
Here is my sample code.
FirebaseMessaging messaging = FirebaseMessaging.instance;
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
print('User granted permission: ${settings.authorizationStatus}');
if (Platform.isIOS) {
  String? apnsToken;
  try {
    apnsToken = await messaging.getAPNSToken();
    if (apnsToken == null) {
      await Future.delayed(const Duration(seconds: 3));
      apnsToken = await messaging.getAPNSToken();
      print("after delay apnsToken = $apnsToken");
    } else {
      print("apnsToken = $apnsToken");
    }
  } catch (exception) {
    print("exception = $exception");
  }
}

fcmToken = await messaging.getToken();

Xcode 15.0.1
Test device:
iPhone 15 Pro iOS 17.0.3
iPhone 14 iOS 16.6.1
iPhone 12 mini iOS 16.7.1

Hi @Chia-Wei-Du, are you by any chance using flavours for your project? If so, can you make sure that you are loading the correct config?

@danagbemava-nc
@darshankawar
Finally, I found the problem.
This problem is divided into two cases.
Case1: it should wait the result of requestPermission about NotificationSettings then get the apns token.
Before few days ago, I did not use requestPermission for NotificationSettings.
In that case, I couldn't even get the apns token with running the release version by Xcode. Until yesterday, after I set requestPermission before apns token, I get the apns token successfully.
Case2: using the Sideloadly to put the ipa to real device should check the identity of Team that same with the Signing Team from Xcode.
I keep having this problem because I used the identity of Individual from Sideloadly and used the identity of Team from Xcode.
I thought TestFlight would also have this problem because after fix the case 1 about requestPermission, I never try the TestFlight again. I just try the Sideloadly and keep encountering the problem of case2
Sorry to bother you all.
But I still hope that my replies are helpful to some people.
Thsnks.

Looks like you have resolved your issue.
Closing from here.
Thank you


[WIP] Add bolt tasks

Pull Request Checklist

Description

Add bolt tasks to manage sensuctl events and silencings. These will replace sensu_event and sensu_silenced types removed in #1141
Related Issue

Part of #1147
Motivation and Context

Events and silencings are ad-hoc tasks so best to move into bolt tasks.

Added bolt tasks to install sensu go agent on Linux and Windows.

Removed WIP. Added all tasks mentioned in #1147


implement geowavefileoutput format for high-speed ingest

analogue to accumulofileoutputformat

Did something similar to this w/ Fluo.  Fluo has a specialized data format that it stores in Accumulo like Geowave.   FluoFileOutputFormat leverages/wraps code from AccumuloFileOutputFormat.  Later while looking into wrapping AccumuloOutputFormat, I decided it would be easier to write something that simply produces mutations instead.   MutationBuilder does this and was much easier to write than something that wraps AccumuloOutputFormat.  I have thought about scrapping FluoFileOutputFormat and instead writing a simple class that produces Accumulo Keys.  A user could use this class to produces Keys that are written using AccumuloFileOutputFormat.

Thanks Keith,  wrapping the AccumuloFileOutputFormat's record writer is probably the simplest approach for us to follow too.

I initially started down the path of implementing a GeowaveFileOutputFormat (that wraps AccumuloFileOutputFormat) as specified in the details of this ticket.  After banging my head against this approach for a few days, I am encountering some of the same challenges that I believe Keith was alluding to, and I think the approach he is recommending makes more sense.
Here is my attempt to shed a little more light on the issue and propose an alternative approach:
Per the documentation, when leveraging AccumuloFileOutputFormat to write output in the Accumulo data file format,

“care should be taken to write only sorted data (sorted by org.apache.accumulo.core.data.Key), as this is an important requirement of Accumulo data files.”

In attempting to leverage AccumuloFileOutputFormat within a wrapping GeowaveFileOutputFormat, we must delegate to the write() method of AccumuloFileOutputFormat’s RecordWriter, which expects [org.apache.accumulo.core.data.Key, org.apache.accumulo.data.Value].  If we attempt to construct these Keys and Values within our GeowaveFileOutputFormat from the output of our Reducer, the Keys we construct will not meet the requirement of being properly sorted.
To achieve our goal of high-speed ingest, what I think we could do instead is:

Implement a GeowaveKeyBuilder (name negotiable) that would be used within our MR job to produce Accumulo Keys in the proper Geowave format
Configure the output format of our MapReduce job to use AccumuloFileOutputFormat directly, since we will be handing it keys in a format that it expects
We can then perform bulk ingest of this output easily via the method outlined here https://accumulo.apache.org/1.6/accumulo_user_manual.html#_bulk_ingest

Thoughts?  Feedback?  Alternative suggestions?  Happy to discuss further… I am admittedly still playing catchup and may be overlooking something obvious…

Thoughts? Feedback? Alternative suggestions? Happy to discuss further… I am admittedly still playing catchup and may be overlooking something obvious…

You reminded me that I meant to open a Fluo issue for this.  I am curious to see how this approach works out, if there are any road blocks you will run into.  Are you going to try to create an end to geowave ingest example that utilizes this proposed approach?  Thats one way to shake out any potential roadblocks.

Yep, I'm sorry, I didn't dig deep enough when I made the ticket.  And in re-reading the comments now, I totally missed the point initially that @keith-turner was alluding to.  By just wrapping the AccumuloFileOutputFormat, we can expose a technically valid outputformat that can work with our native data types (intuitive "geo" objects rather than key/value) but we wouldn't be able to guarantee sort order as @dcy2003 pointed out.  I think you're on the right track, to instead completely re-use AccumuloFileOutputFormat as is, considering aggregating a mapreduce job by accumulo Key is really the way to ensure sort order.
There may be a piece of this that is still a bit more like a core re-usable component rather than purely example - @dcy2003, you may want to look at how we provide some basic building blocks in [this package] (https://github.com/ngageoint/geowave/tree/master/geowave-accumulo/src/main/java/mil/nga/giat/geowave/accumulo/mapreduce) or how we use that to provide a default dedupe mapreduce job [here] (https://github.com/ngageoint/geowave/blob/master/geowave-accumulo/src/main/java/mil/nga/giat/geowave/accumulo/mapreduce/dedupe/GeoWaveDedupeJobRunner.java).  Just a thought...if it doesn't seem like there's anything generic enough here to provide in the core, I think an end-to-end ingest example would be good at least.

FYI I made a PR for Fluo for this fluo-io/fluo#487

Thanks @keith-turner, I will take a look.  I have this coming on our end too.  Working on an Integration Test right now, should have a PR submitted this week.


Is getSenders implemented in plugin?

The original WebRTC has function called: getSenders
like here https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/getSenders
is it implemented in plugin?

No. It's not.

Sorry for many questions.
if i want to change camera device, can i implement this?

The project is looking for maintainers and there is a public mailing list for usage questions.


Correction for Hibernate configuration

According to this piece of code from grails-data-mapping repository, the configuration for Hibernate is expected to be inside grails mapping, not at the root of the configuration file. So for example, to turn on/off query caching one would need to change grails.hibernate.cache.queries config property rather than hibernate.cache.queries as it is now.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.

NOTE: This repository is no longer used. Profiles now live in https://github.com/grails-profiles

Please create the PR there. Thanks!

the profile code has moved to here https://github.com/grails-profiles/base/blob/master/features/hibernate4/skeleton/grails-app/conf/application.yml
Also in 3.2 this has been corrected and the settings are instead read from the hibernate. prefix and not grails.hibernate. for consistency so I don't think this pull request needs to be applied.


update needed for Service Manager field in about.html page

The Service Manager for Student Explorer has transitioned from Maggie to Hema now. This hard coded value in the about.html page needs to be updated.
My suggestion is to update the hard coded value for now without any configuration design changes.

We already have an mcommunity group here. I don't think we need to mention who the specific service manager is. I think if we wanted to do that it would be better to have it on the documentation page and link to that, but I don't see it mentioned there either.
https://documentation.its.umich.edu/student-explorer-general
Yeah, ideally this would be configurable or flatpages but it doesn't change much.

It is much easier to update https://documentation.its.umich.edu/student-explorer-general than making changes to github.
So we will remove the mention of Service Manager altogether here.

Yes, I am OK as long as the reference of Maggie's name is removed.  Since she is getting all inquiries/questions email form campus users as they are learning about the going away of Student Explorer in near future.


Migrate BankAccount_SetupWithdrawalAccount API

Details
I tried to keep things familiar here while migrating stuff over from Web-Secure. That means for now, I'm sticking with a single page ReimbursementAccountPage + then conditionally showing views based on the achData.currentStep so basically it's very similar to what we have in Web-Secure.
There are some changes that I am proposing that feel more inline with how we are doing things in Expensify.cash

Got rid of the "magic" methods used in Web-Secure used to move between steps, call the withdrawal account API, validate forms, etc. Mostly I found that pattern to be pretty difficult to reason about and the convenience isn't worth the confusion (that's just my opinion, but we don't have any patterns like this in E.cash so far).
Instead, every view will handle it's own validation, form state, submit action, and navigation via the header in some cases so nextStep() and previousStep() are no longer triggered in the parent view (addReimbursementPage.jsx in Web-Secure) and instead implemented by each "step". This might be a little more verbose, but I think it's better to be explicit.
The country selector in the BankAccountStep is not included since all the accounts added for the free plan should be US.
Instead of having a this.achData to reference we are referencing + storing the data for an account in setup in the Onyx cache / localStorage. Most of the logic is left intact, but everywhere we refer to this.achData is now will refer to Onyx data. This is ideal because it eliminates the need for something like ReimbursementAccountPage.refreshView(). Instead we can navigate to the next step simply by setting the Onyx data and letting the view which is subscribing to this data update itself in response.

Fixed Issues (Part 2)
https://github.com/Expensify/Expensify/issues/166041
Tests

Navigate to /add-verified-bank-account
Verify the "Add Bank Account" view appears
Select "Connect Manually"
Enter the test credentials:

Routing Number: 011401533
Account Number:<PHONE_NUMBER>331111

Press Save & Continue button
Verify you land on the "Company Information" step
Check the Chrome dev tools Network tab and verify that BankAccount_SetupWithdrawalAccount request was made (Web Only)
Press the "<" button in the top left of the header
Verify you are back on the selection screen
Select "Log Into Your Bank"
Enter the Plaid test credentials

Login: user_good
Password: pass_good

Follow prompts until you reach the account select screen
Select the savings account
Tap Save & Continue button
Verify you land in the "Company Information" step and the API request was successful

QA Steps
No QA necessary until the e2e flow is ready for testing
Tested On

[x] Web
[ ] Mobile Web
[ ] Desktop
[ ] iOS
[ ] Android

Screenshots

Web

Not including other screenshot because no UI is being added here. The web flow is provided as a reference.

Trying to get through all of my @TODO notes but so far this is going well and I've got it so we can move from the BankAccountStep > CompanyStep (which is blank for now) but the BankAccount_SetupWithdrawalAccount API is  working.

Ready for review, but I'm going to run through the rest of the platform testing just to make sure there is nothing unexpected.

@Gonals feel free to sit this one out. Not sure why PullerBear assigned 2 people 🙃

also cc @roryabraham since you grabbed the CompanyInformation step issue that will be eventually calling the APIs added here so might be good to get familiar, but feel free to toss a review in as well.

I'd like the err on the side of not including it so we don't end up with code we don't need though

I definitely agree with this. However, we have infinite time to follow up and remove things we don't need and not much time to get this done. So, I'm thinking that we can create a follow up issue to address some of these odd @todos and question marks and anything that just generally no longer makes sense.

Also kind of separate but related - once this flow is nailed down I think it will be a little easier to tell what is needed and what is not so I was a bit hesitant to remove things right away.

@NikkiWines I think it's because there are errors - going to swap out the console.error for a growl instead so it's more obvious something went wrong.

Looks like the icon colors are off in this screenshot:

I think they should be in our standard colors.icon which is like a gray

Will do a follow up for the icon colors @shawnborton
Spoke with @ctkochan22 who gave this a once over and mentioned not blocking on him so I'm going to merge this to keep things moving.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging in version: 1.0.69-1🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production in version: 1.0.73-3🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Azure Artifacts Credential provider failing to start

Hi, I'm seeing an issue where Azure Artifacts credential provider is failing to start and timing out. Previously, the timeout was set to 5s and was increased to 60s, but we are still seeing this issue.
Has anyone seen this before?
Here's the stack trace:
Using d:\os\tools\CredentialProvider\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe as a credential provider plugin.
Problem starting the plugin 'd:\os\tools\CredentialProvider\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe'. Plugin 'CredentialProvider.Microsoft' failed within 60.070 seconds with exit code -1.
NuGet.Protocol.Plugins.PluginException: Plugin 'CredentialProvider.Microsoft' failed within 60.070 seconds with exit code -1. ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.Protocol.Plugins.MessageDispatcher.d__29`2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.Protocol.Plugins.SymmetricHandshake.d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.Protocol.Plugins.Connection.d__27.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.Protocol.Plugins.PluginFactory.d__7.MoveNext()
--- End of inner exception stack trace ---
at NuGet.Protocol.Plugins.PluginFactory.d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.Protocol.Plugins.PluginFactory.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at NuGet.Protocol.Plugins.PluginManager.d__22.MoveNext()
Problem starting the plugin 'd:\os\tools\CredentialProvider\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe'. Plugin 'CredentialProvider.Microsoft' failed within 60.070 seconds with exit code -1.
Plugin 'CredentialProvider.Microsoft' failed within 60.070 seconds with exit code -1.
A task was canceled.

@vickyen is the credential provider in the correct location on your machine? See the install location by Os in this section of our ReadMe. From the error message, it looks like nuget.exe is failing to find or start the plugin at all. Furthermore, can you make sure you have the latest version of the credential provider installed and please let me know if it was working before.

yes, I've checked that the credential provider is in the location its trying to invoke from. I have also verified that the version is the latest <IP_ADDRESS>

The latest version is 1.0.9. And does this occur in a pipeline or locally? On what OS?

This occurs on machines we use to build Windows, which have Windows OS. I've updated the credential provider to version 1.0.9 and will see if it helps

could be related (or the same as) #192


Saving identical location/time more than once (on iOS)

This is what I see from printing the curated array in saveLocation right before SetStoreData

Quick note (mostly for myself, possibly for anyone who takes this isssue): looking at https://github.com/mauron85/react-native-background-geolocation it appears that locationInterval is only supported on Android.  Need to research what the correct solution is for iOS.

Thanks for the catch on the locationInterval.  Dealt with in #389

@TruffleClock Would appreciate your help verifying that the data is now saved at a sane rate.


contrib: bump python version in rc script

the default version of Python is now 3.9 as of FreeBSD 13.2-RELEASE
This PR complies with the DCO; https://developercertificate.org/

nice 👌 thx!


MLDBFB-443 temporal aggregator segfault test

+1

@nicolaskruchten Si je merge ça les tests de MLDB ne passeront plus. Veux-tu que je merge quand même?

Good point. We'll let @guyd merge the test once fixed :)

Tests should be merged directly into master, marked as manual IMO.  That way we don't have extra PR chatter.

I've asked for this process so that I can validate that test cases (which
aren't always crashers) actually embody requirements we want to implement.
In this case we could indeed merge as manual.
On Fri, Apr 1, 2016 at 11:09 PM, Jeremy Barnes<EMAIL_ADDRESS>wrote:

Tests should be merged directly into master, marked as manual IMO. That
way we don't have extra PR chatter.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/mldbai/mldb/pull/291#issuecomment-204636890

--
Nicolas Kruchten, Eng  |  Staff Software Engineer at Datacratic  |
http://datacratic.com/

Merging it as manual would means "losing" the functional tests until the crashing one is fixed.

Well, we could always move the crashed into its own test case
On Monday, 4 April 2016, Mich<EMAIL_ADDRESS>wrote:

Merging it as manual would means "losing" the functional tests until the
crashing one is fixed.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/mldbai/mldb/pull/291#issuecomment-205252219

--
Nicolas Kruchten, Eng  |  Staff Software Engineer at Datacratic  |
http://datacratic.com/

FYI - the test can be skipped directly in the python script with none of the problem described.
@unittest.skip('MLDBFB-433')

@guyd Bon point. Je n'y avais pas pensé.


EarlyStopping when using an IterableDataset

I am trying to use an IterableDataset while also including early stopping. Using version 0.6.1, it looks like the early stopping callback is only checked after an epoch. When using an IterableDataset, I don't see how this is ever called.
I have implemented a quick solution on my local machine after noticing a metric check after the validation loop is run:
https://github.com/PyTorchLightning/pytorch-lightning/blob/4c6c3d04ce7a33a2803971c369b85f1c3e4fd80f/pytorch_lightning/trainer/training_loop.py#L415
My quick fix was to add a call to EarlyStopping.on_epoch_end like so:
# ---------------
# RUN VAL STEP
# ---------------
is_val_check_batch = (batch_idx + 1) % self.val_check_batch == 0
can_check_epoch = (self.current_epoch + 1) % self.check_val_every_n_epoch == 0
should_check_val = (not self.disable_validation and can_check_epoch and
                    (is_val_check_batch or early_stop_epoch))

# fast_dev_run always forces val checking after train batch
if self.fast_dev_run or should_check_val:
    self.run_evaluation(test=self.testing)

    if self.enable_early_stop:
        self.early_stop_callback.check_metrics(self.callback_metrics)
        # CHECK EARLY STOP CALLBACK HERE
        early_stop_epoch = self.early_stop_callback.on_epoch_end(self.current_epoch, self.callback_metrics)

Now that early_stop_epoch is set after each validation, it is possible to stop using an IterableDataset.
# end epoch early
# stop when the flag is changed or we've gone past the amount
# requested in the batches
if early_stop_epoch or self.fast_dev_run:
    break

If there is a native way to trigger the early stopping callback already, then my question is how? If not, then I could submit a PR.
What's your environment?

OS: Ubuntu 18
Packaging: pip
Version: 0.6.1

i think 0.7.1 fixes this

As of 0.7.5, this issue still persists. Some changes have been made which affect both model checkpointing and early stopping.
Model Checkpoint Issue
When using an IterableDataset that infinitely processes as a single epoch, the model checkpoint callback will never save due. This appears to be intended as seen in callbacks/model_checkpoint.py:210
if self.epoch_last_check is not None and (epoch - self.epoch_last_check) < self.period:
  # skipping in this term
  return

Simply initializing ModelCheckpoint with period=0 allows new checkpoints to be saved as validation is done within a single epoch.
Early Stopping Issue
Currently, training using an IterableDataset means that there is no regular return from run_training_epoch() in trainer/training_loop.py. Validation checks are still executed starting on line 450:
if self.fast_dev_run or should_check_val:
    self.run_evaluation(test_mode=self.testing)
    self.call_checkpoint_callback()
    self.call_early_stop_callback()

The early stop callback is called, but nothing is done with its return value. Locally, I have added the following change to fix this issue:
early_stop_epoch = self.call_early_stop_callback()

If the call to the early stop callback indicates that the training should stop, the training loop breaks and the epoch ends.
It is a small change and I don't see anything else that it could interfere with. However, I have not set up or performed any testing.
I have never submitted a PR before so I am not sure what to do from here.

Any chance that this can be re-opened and addressed?

@williamFalcon should this be fixed now?


Comment directives (# -- coding: utf-8 --) throw

Seeing:
[error] src/bkyml/__init__.py: SyntaxError: Unexpected character '#' (1:1)
[error] > 1 | # -*- coding: utf-8 -*-
[error]     | ^
[error]   2 | from pkg_resources import get_distribution, DistributionNotFound
[error]   3 |

for
# -*- coding: utf-8 -*-
from pkg_resources import get_distribution, DistributionNotFound

try:
    # Change here if project is renamed and does not equal the package name
    dist_name = __name__
    __version__ = get_distribution(dist_name).version
except DistributionNotFound:
    __version__ = 'unknown'

generated via https://pyscaffold.org/
Ran via: yarn prettier -- --write "src/**/*.py"

PEBKAC. Works via yarn prettier -- --plugin=@prettier/plugin-python --write "src/**/*.py" --parser python


Remove duplicate Portals Viewer role description

Portals Viewer role was listed twice. This removes the one that was listed with the API Manager roles and keeps the one listed with Exchange roles since API Portals have now become the responsibility of Exchange.
Also move the CloudHub Network roles near the other CloudHub roles.

@marianomerlo I was hoping you could confirm that it’s better to group Portals Viewer role with the exchange roles as opposed to with API Manager


Defines the getter method for the collection_singular_ids.

Defines the getter method for the collection_singular_ids.
ex:
Author.has_many :books

Book.create! :author_id => 1
Book.create! :author_id => 1
Book.create! :author_id => 3

author.book_ids => [1,2]

Resolve this issue
https://github.com/zilkey/active_hash/issues/236

this is a great one.
Very surprised this was not already in there and also surprised it has not been merged


Complaints

COMP-123: Create Complaint - Default Page
COMP-124: Create Complaint - Create Complaint Form
COMP-125: Create Complaint Form - Project/Concern/Location/Lead Officer/Date Received Fields

Codecov Report
Attention: Patch coverage is 11.36364% with 117 lines in your changes missing coverage. Please review.

Project coverage is 43.11%. Comparing base (0714876) to head (d393c83).

Files with missing lines
Patch %
Lines

.../src/components/App/Complaints/ComplaintDrawer.tsx
4.44%
42 Missing and 1 partial :warning:

...ance-web/src/components/App/ProjectDetailsForm.tsx
2.70%
34 Missing and 2 partials :warning:

...rc/components/App/Complaints/ComplaintFormUtils.ts
16.66%
14 Missing and 1 partial :warning:

...c/components/App/Complaints/ComplaintFormRight.tsx
22.22%
7 Missing :warning:

compliance-web/src/hooks/useComplaints.tsx
50.00%
6 Missing :warning:

...c/routes/_authenticated/ce-database/compliants.tsx
0.00%
6 Missing :warning:

...rc/components/App/Complaints/ComplaintFormLeft.tsx
20.00%
4 Missing :warning:

Additional details and impacted files
@@             Coverage Diff             @@
##           develop      #62      +/-   ##
===========================================
- Coverage    45.10%   43.11%   -1.99%
===========================================
  Files           74       80       +6
  Lines         1328     1424      +96
  Branches       351      375      +24
===========================================
+ Hits           599      614      +15
- Misses         693      772      +79
- Partials        36       38       +2

Flag
Coverage Δ

compliance-web
43.11% <11.36%> (-1.99%)
:arrow_down:

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

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


switch most buttons to use digitalmarketplace-govuk-frontend

https://trello.com/c/el9OyFgd
Don't know what else to say here.

switch most buttons to use digitalmarketplace-govuk-frontend

Do you have a list of the buttons not switched?

Do you have a list of the buttons not switched with reasons why?

It's just buttons that are generated through other means, like toolkit/temporary-message.html

@risicle what about these three buttons?
gds5506:digitalmarketplace-supplier-frontend laurencedebruxelles$ rg 'toolkit/button'
app/templates/suppliers/details.html
190:            {% include "toolkit/button.html" %}

app/templates/suppliers/registered_address.html
87:      {% include "toolkit/button.html" %}

app/templates/suppliers/create_company_summary.html
98:  {% include "toolkit/button.html" %}

Actually there are a couple of other things I haven't checked too...

Ok I think I've got them all now - there don't seem to be any uses of <input type="submit"....


File -> Open leads to a Segmentation fault

Hi Cedric,
The new way to open an EPC Document is to click on the EPC blue icon.
However, it is still possible to to file->open and select an EPC document. And, when doing the latter, a seg fault occurs.
Can you either:

disable this way to import EPC document (only keeping the blue icon)
or repair the File->Import functionality

Thanks

File->Import functionality: repaired with version 2.1


fixed nested contenteditable case

Can you show a repro of the bug you have, can't understand

I recently got some html structure like this.
`
some readonly text
user can edit content here.
`
when the cursor is in the div with contenteditable="false" attribute like this, pressing backspace button would get default browser behavior which is back to last page I got.


(#2227) carry suppressed exceptions in the one thrown eventually

The proposed change would be simply putting concrete exceptions in the one thrown eventually.
As the change is simple and has little impact in functionality, and I couldn't find any unit case using this JedisSlotBasedConnectionHandler directly, I'm not adding any case against this change. Please feel free to let me know if any concern or so around this.

@sazzad16, may I ask for your review and comments around this PR?
It's some simple change that brings additional info in logged stacks, which helps investigation, so I assume the feedback would be simple and straightforward. Thanks!

@bigmarvin Please check my take on this issue in #2233

@bigmarvin Please check my take on this issue in #2233

Thanks, so I assume the primary concern would be too many suppressed exceptions collected and logged in clusters of large scale, correct? I would have to say this is some good point, and one exception is some fair start point of investigation. Please proceed that way and I'm closing this PR.

Also, JedisNoReachableClusterNodeException is being created only when it's necessary.


Cache branch information while safe branch write

Safe branch loop access branch token before and after the operation in
order to verify that no commit/revert was done while we performed the
operation on the branch.
In case the branch token updated, we repeat the operation.
To get better performance we cache the branch information and use it
once, before the operation.
Based on https://github.com/treeverse/lakeFS/pull/4770
Close #4769

Looks good! One suggestion Also - do we have a test that checks the safeBtanchWrite branch changed scenario?

The TestGravelerSet_Advanced used to test the safe branch write.

Still not merging this one as we like to see if it worth adding, performance wise.


Explicitly close the overlap read files to generate proper gzip file endings

Without this addition, I am getting gzip unexpected end of file warnings/errors in the overlap read files. After adding these lines to explicitly close overlap_read1_file and overlap_read2_file I no longer get these errors.

Thanks, merged


[do-not-merge][ci] cache modules

Description

Related Issue

Fixes <issue_link>

Motivation and Context

How Has This Been Tested?

test environment:
test case 1:
test case 2:
...

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Technical debt
[ ] Tests only (no source changes)

Checklist:

[ ] Code changes
[ ] Unit tests added
[ ] Acceptance tests added
[ ] Documentation ticket raised:

Not needed anymore


Calling ecbundle-create from Python script seems not to propagate $PWD properly

What happened?
When ecbundle-create is called from a Python script (as opposed to a shell script or directly on the command line) and

the bundle.yml file uses $PWD in dir: specs, and
the current working directory is changed before calling ecbundle-create, then

the dir: argument in the bundle file is not correctly resolved and ecbundle-create fails with
A directory [...] is provided for project [...] but it does not exist.

This does not happen when ecbundle-create is called from a Shell script.
What are the steps to reproduce the bug?
A minimal setup of files looks like this:
minimal-example/
├── ecbundle-create.py
├── ecbundle-create.sh
└── subdir/
    ├── arch/
    ├── bundle.yml
    ├── external/
    │   └── ecbuild/  # contains ecbuild clone
    └── source/

Where ecbundle-create.py and ecbundle-create.sh are the scripts I am testing, subdir/bundle.yml is the bundle file using the $PWD references, and subdir/external/ecbuild contains a cloned ecbuild repository. It is not really important to use ecbuild, any other project would do.
The bundle file is minimal:
name: ecbundletest
version: 0.1

projects:
  - ecbuild:
      dir: ${PWD}/external/ecbuild
      bundle: false

Now, from within minimal-example, I can run the ecbundle-create.sh script:
#!/usr/bin/sh
cd subdir
ecbundle-create

and everything works fine. The complete bundle is created in subdir/source/ and all links are correctly set.
However, running a Python script with (arguably) the same functionality:
import shutil
import subprocess
from pathlib import Path

subprocess.run(
    [shutil.which("ecbundle-create")],
    cwd=Path("subdir"),
)

results in
> python ecbundle-create.py

Downloading bundle with 1 threads for
   [...]/minimal-example/subdir/bundle.yml
A directory [.../minimal-example/external/ecbuild] is provided for project [ecbuild] but it does not exist.

Time elapsed for downloading: 00:00:00

Creating bundle for
    [...]/minimal-example/subdir/bundle.yml

Bundle does not need updating at src-dir
    [...]/minimal-example/subdir/source

projects:
    - ecbuild (symbolic link to [.../minimal-example/external/ecbuild])

!!! Errors occured !!!

(common path prefixes replaced by "..." for readability)
It can be seen that ecbundle-create looks for the ecbuild code in minimal-example/external/, not in minimal-example/subdir/external/, as it should.
Version
2.1.1
Platform (OS and architecture)
Red Hat Enterprise Linux 9.3 (Plow)
Relevant log output
No response
Accompanying data
No response
Organisation
SMHI/EC-Earth

Note that I at first suspected the way I am starting the ecbundle-create process from Python to be the problem (i.e. using subprocess.run() with no further arguments).
However, I tested with a small script:
#!/usr/bin/bash
echo "PWD=${PWD}"

and called it from Python in a subdirectory:
import subprocess
from pathlib import Path

subprocess.run(
    [Path("pwdtest.sh").resolve()],
    cwd=Path("subdir"),
)

and that works, i.e. $PWD points to the correct subdirectory.
I also checked if the shell=true argument to subprocess.run() made any difference, but it didn't.

Note (mostly to myself): I am guessing that the os.path.expandvars() call in
https://github.com/ecmwf/ecbundle/blob/814873bf2c770b2693b08181243dd05d110e0c2c/ecbundle/project.py#L26
is responsible for expanding the environment variables in dir: ....

Since this is not an issue of ecbundle in the first place, I close the issue.


Investigate using OpenVPN/easy-rsa instead of generate-certificate

We have an awesome script for generating SSL certs, but we might not have to maintain that code if we look into using OpenVPN/easy-rsa.
That script is not only developed by security experts, but is also used in the CiscoCloud/kubernetes-ansible project

Ansible version (ansible --version): 1.9.4
Python version (python --version): 2.7.11
Git commit hash or branch: master
Cloud Environment: all
Terraform version (terraform version): 0.7.0

@siddharthist : Can you elaborate the use case here? I am late to the party but maybe I can help. :)

@krish7919 Sure! In our certificate generation role, we:

Install the generate-certificate package
Use it to generate tls certificates

It looks like this has very similar functionality to Openssl/easy-rsa, so with some different command-line options, it might be a drop-in replacement. The certificates would have to be valid for all the same IPs and DNS names.

Alright, I have done some easy-rsa work with openvpn, so I can hit the
ground running on that aspect. But I have never run this project at all; I
just stumbled on to this. Is there a vagrant image and a quick walk through
on the setup?
Before I commit to this, I would like to get a feel for the project;
especially the certificate generation part.
On Tuesday 28 June 2016, Langston Barrett<EMAIL_ADDRESS>wrote:

@krish7919 https://github.com/krish7919 Sure! In our certificate
generation role
https://github.com/CiscoCloud/mantl/tree/master/roles/certificates, we:

Install the generate-certificate package
https://github.com/CiscoCloud/mantl/blob/0581400b1f5b06084bcd7036e5a4d21062fcdb3a/roles/certificates/tasks/main.yml#L27
Use it to generate tls certificates
https://github.com/CiscoCloud/mantl/blob/0581400b1f5b06084bcd7036e5a4d21062fcdb3a/roles/certificates/tasks/main.yml#L42

It looks like this has very similar functionality to Openssl/easy-rsa, so
with some different command-line options, it might be a drop-in
replacement. The certificates would have to be valid for all the same IPs
and DNS names.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/CiscoCloud/mantl/issues/1609#issuecomment-229130699,
or mute the thread
https://github.com/notifications/unsubscribe/AE1QqnqWddLe7Hi7FUHRZKbJ9X3w8ki9ks5qQWEfgaJpZM4JAL9a
.

--
Thumb typed mail

@krish7919 Yes, there is a working Vagrant image, just clone the repo and run vagrant up. Check out our getting started guide for more information.

Perfect. I will play with it and update progress here on what's my
understanding and how we can leverage easy-rsa here.
On Tuesday 28 June 2016, Langston Barrett<EMAIL_ADDRESS>wrote:

@krish7919 https://github.com/krish7919 Yes, there is a working Vagrant
image, just clone the repo and run vagrant up. Check out our getting
started guide http://docs.mantl.io/en/latest/getting_started/index.html
for more information.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/CiscoCloud/mantl/issues/1609#issuecomment-229133731,
or mute the thread
https://github.com/notifications/unsubscribe/AE1Qqid9eR4jhH6slf7wudq8sQIHyQR7ks5qQWN_gaJpZM4JAL9a
.

--
Thumb typed mail

Ultimately, we need to make the changes I just outlined in #1551.


Empty output file

Hi
so i seem to be seeing an empty output file when i run the script. Is there a specific value that must be set for prom_labels that the script will check in netbox?

Hi,
Yes, you have to fill this field with a list of settings for each exporter, expressed in JSON. For example, if you have the node exporter running, you can poll it with the following prom_labels value: [{"__param_module": "node"}].
If you can read french, I wrote an how to use this tool on our blog: https://enix.io/fr/blog/service-discovery-avec-netbox-et-prometheus/.
Let me know if you need more help!
Antoine


Use of unresolved identifier 'defaultContainer'

Following along the documentation for Swinject, I'm trying to use storyboard injection. I have the following code, but I'm getting this unresolved identifier issue that defaultContainer is not recognized. Not sure if I'm doing something wrong, or if something is broken. I'm using a fresh Xcode iOS (9) project using Swift 2.2 and this code is in a file name SwinjectStoryboard+Setup.swift. Am I missing something?
import Swinject

extension SwinjectStoryboard {
    class func setup() {
        defaultContainer.registerForStoryboard(CountdownListViewController.self) { r, c in
            c.repository = r.resolve(RealmRepositoryService.self)
        }
    }
}

Never mind. I was using an older version of Swinject accidentally.


Add Favicon for Webiu

Once the logo is designed as mentioned in issue #24 , it is required to design favicon similar to the logo which will be used in project frontend.

As of now, we will use the same favicon as of SCoRe Lab website. Thanks for your contribution @sachinsom93 :)


"503 Service Unavailable" when publishing multiple new images

Expected Behavior
Confluence Publisher successfully publishes docs with multiple images attachments on the first publish.
Current Behavior
When publishing new AsciiDoc files using the Docker image confluencepublisher/confluence-publisher:0.0.0-SNAPSHOT to publish new documents with many images, I get 503 Service Unavailable on the /child/attachment endpoint.
This seems to occur at around six new images to documents. Retrying after the 503 gets more images added, but depending on how many images still need to be added, it could result in another 503. With enough retries of the Confluence Publisher, it seems to go through in the end.
When testing with incremental updates to my repo (e.g. some text updates and maybe a new image or two), it typically works fine.
In testing publishing only one doc with a bunch of images, I immediately got the 503 error for 70.png.
Here’s the first error message I got:
$ publish.sh
Added page '<REDACTED>' (id <REDACTED>)
Added attachment '70.png' (page id <REDACTED>)
Exception in thread "main" org.sahli.asciidoc.confluence.publisher.client.http.RequestFailedException: request failed (request: POST https://<REDACTED>.atlassian.net/wiki/rest/api/content/<REDACTED>/child/attachment <empty body>, response: 503 Service Unavailable <!doctype html>

Here’s the second error message when I tried to retry the pipeline:
$ publish.sh
Updated attachment '151.png' (page id <REDACTED>)
Added attachment '109.png' (page id <REDACTED>)
Exception in thread "main" org.sahli.asciidoc.confluence.publisher.client.http.RequestFailedException: request failed (request: POST https://<REDACTED>.atlassian.net/wiki/rest/api/content/<REDACTED>/child/attachment <empty body>, response: 503 Service Unavailable <!doctype html>

Some images succeeded before the error.
Steps to Reproduce
I was able to reproduce this with pokemon.txt, which is an AsciiDoc file of the first 151 Pokemon. I got the images from "Pokémon icons" download at https://veekun.com/dex/downloads, but any images should also work to reproduce.
Context (Environment)
These are the variables I'm passing in:
SPACE_KEY: <REDACTED>
ANCESTOR_ID: <REDACTED>
PAGE_TITLE_PREFIX: "[Test] "
ASCIIDOC_ROOT_FOLDER: ./Docs/
ROOT_CONFLUENCE_URL: https://<REDACTED>.atlassian.net/wiki
SKIP_SSL_VERIFICATION: "false"
MAX_REQUESTS_PER_SECOND: 10
USERNAME: "$CONFLUENCE_USERNAME"
PASSWORD: "$CONFLUENCE_PASSWORD"
PAGE_TITLE_SUFFIX: "<REDACTED>"
PUBLISHING_STRATEGY: "APPEND_TO_ANCESTOR"
ORPHAN_REMOVAL_STRATEGY: "REMOVE_ORPHANS"
VERSION_MESSAGE: "$CI_COMMIT_MESSAGE"
NOTIFY_WATCHERS: "false"
CONVERT_ONLY: "false"

I also tried setting the MAX_REQUESTS_PER_SECOND to 1 in case it's a rate limiting problem, but that still resulted in the 503 errors.
Possible Solution
Per the "Confluence Cloud REST API: Rate Limiting" guide, it seems like these 503 errors could be from rate limits. Retrying the failed image attachment requests could help with this.
Additionally, is it possible to enable debugging on the Confluence Publisher to get some more insights on what it's doing?

Thank you @Saffron-City for the detailed issue. I will try to reproduce and analyse as soon as I can find the time.
One question: does/did the change of the MAX_REQUESTS_PER_SECOND configuration setting influence the behaviour in any way (e.g. more or less images could be uploaded with different values)?

Thanks for your help with this, @cstettler.
With MAX_REQUESTS_PER_SECOND set to 1, I was able to add five new images successfully. When I tested with six, it failed with the 503, but another six new images succeeded.
With it set to the default 10, it does appear to hit the 503 sooner with less images going through, when adding six new images to my single document.

Dear @Saffron-City,
I've noticed that the confluence publisher consistently adheres to a standard procedure when generating HTTP clients. This results in each HTTP client initiating a connection to the ConfluenceCloud API.
As per your post, the MAX_REQUESTS_PER_SECOND parameter passed during the pipeline step construction is responsible for creating an HTTP client during the maximum value. Essentially, this implies that when you post different content (or attachments) each time, the confluence publisher's source code verifies every time if that attachment already exists. If it does, it makes another request to the endpoint for comparison. If it doesn't exist, another call is made to the endpoint. To summarize, it makes a minimum of 3 calls.
The confluence publisher strategy is designed to accept a double parameter, meaning you can pass a value like 0.3. This reduces the process from making 3 calls per second per attachment to halting and waiting to upload the attachment process for 3 seconds for each attachment. This could likely resolve your issue in the cloud environment.
My understanding of this is based on a thorough review of the confluence publisher's source code and the cloud environment's documentation. I would appreciate if any other developers could weigh in with their opinions.
Best Regards,
XYZ-User


[release-1.20] service entry: fix leak in workload addesses

This is an automated cherry-pick of #47893

Needs https://github.com/istio/istio/pull/47974#issuecomment-1821876533


Returns empty data while using limit and offset

Returns empty data while using limit and offset , even if i pass records.
$project = Project::find(1);
$start = (int) request('start');
$length = (int) request('length');
$total = $project->domains()->Firstscope()->count();
if($length < 0)
{
 $length = $total;
}
$domains =$project->domains()->Firstscope()->get();
DataTables::of($domains)->make(true); // Working Fine

// But ..

$domains = $project->domains()->Firstscope()->limit($length)->offset($start)->get(); // have 10 records
DataTables::of($domains)->setTotalRecords($total)->make(true); // Returns empty data

System details

Operating System : ubuntu 14..04
PHP Version : 7.0
Laravel Version : 5.4.34
Laravel-Datatables Version : v8.0.1

Some points:

Do you really need to limit the query? Why not let package do the job?
I suggest you use query instead of collection?

$project = Project::find(1);
$domains = $project->domains()->Firstscope();

DataTables::of($domains)->toJson();

hey @yajra thanks for replying
yes I really need limit in the query, Actually, I want to check domains availability using GoDaddy API before I serve the data in the view if I don't use limit, Bulk records will make API work slow so that's why I want to use limit
$project = Project::find(1);
$domains = $project->domains()->Firstscope()->limit(10)->offset(10)->get();
$domains = Godaddy::ins()->checkAvail($domains); // Filter through domains and get only that are available to purchase.
DataTables::of($domains)->toJson();

Thanks !!

@yajra  any updates ??

Same issue

I've found a workaround, you just need to use skipPaging() method


Link the signal health-depleted to game scene

I add the signal health_depleted that when player out of HP so the game_scene will change to game over scene.

it's not completed yet because it doesn't change the scene from game scene to game over scene when the player's hp is 0.

I have fixed the code , now the fuction is working.

The game over scene is not meant to be switched to because of it's transparent background (well it will work fine but the restart button will reset the current scene).
It's better if you add the game over scene as a child to the game scene, and from there you can select the "Player" node in the game scene and select Node then click on Signals. Signals are better in this case because they can help organize code and you can specifically choose which node (with a script attached) will do if it gets that signal in it's own code.

First you need to instantiate GameOver.tscn to game.tscn

When you are about to connect the health_depleted() signal, connect it to the Game Over scene.

Once it's connected, write this code as shown below (I tested it, don't worry):


Clarify the representation of icmp output

Add documentation to icmp clarifying the representation of true/false values for scalar and vector comparisons

I think this is a very helpful improvement. I believe the same description would also apply to fcmp, if you want to add it there too.
This is an extremely nit-picky detail but I'd prefer "i.e." written with periods. It doesn't actually matter but it bothers me anyway. :sweat_smile:
I'd like @cfallin's confirmation that this description is correct but I believe it is.

I think this is a very helpful improvement. I believe the same description would also apply to fcmp, if you want to add it there too.
This is an extremely nit-picky detail but I'd prefer "i.e." written with periods. It doesn't actually matter but it bothers me anyway. :sweat_smile:
I'd like @cfallin's confirmation that this description is correct but I believe it is.

Now that you've brought it to my attention, I can no longer ignore the missing periods 😅

I'd like @cfallin's confirmation that this description is correct but I believe it is.

LGTM!


Fix Height Issue

I ran into an issue where the X button for the plaid popup would be unreachable/covered. This should automatically move the popup to be under the status bar.

Old Behavior
https://user-images.githubusercontent.com/23617187/188756230-c5870cf5-9d80-4b23-ab59-4302f6a525ab.mov

bump

Sorry this took so long. I don't have time to maintain this. I haven't tested this fix, but i'll merge anyway


Wrong audio position is being played

[X] I have verified there are no duplicate active or recent bugs, questions, or requests

Commit 906ab1f causes the wrong audio position in the playlist to play. When trying to play position 0 it increments the position by one causing the next item in the list to start playback instead.

I wonder if this is what #34 was trying to describe.
Anyways, reproduction steps:

Play the 2nd-4th audio item in the demo
Back out of the player activity
Select the 1st item

Expected Result:
The 1st item plays correctly
Actual Result:
The playlist resumes where it was previously playing

It looks like I was in the wrong area for what was happening and I saw something out of place, but it wasn't the cause.
The real culprit seems to be line #1227 of PlaylistServiceCore which calls performPause() in an invalid state on the media player if I pass a seekPosition into the play() method of my playlist manager.
After calling that method the media player outputs these two lines into my log:
E/MediaPlayer: pause called in state 8, mPlayer(0x7f0758dac0)
E/MediaPlayer: error (-38, 0)
Then the onError method of the MediaListener is called, which tries to retry playback a number of times, each time causing a state error on the media player, and then eventually the next item is queued up for playback because of the error.


cmake: Fixed build on Linux

Fixed CMakelist.txt for vulkaninfo
to properly generate build files on
Linux.
Fixes Issue #12

@mikes-lunarg: Updated

The commit message could be improved:

Probably better to say something like:  "Set WSI build options for vulkaninfo".  The current message could apply to anything.
See https://help.github.com/articles/closing-issues-using-keywords/  If you just say "Fixes #12", then the issue will automatically close.

@karl-lunarg: Updated

@karl-lunarg: Fixed

@karl-lunarg: updated

Code looks OK now.  Would be good if you could fix up BUILD.md and the commit message as I previously suggested.

@karl-lunarg: Updated

@karl-lunarg: Updated


Save tab-local working directory when 'tabpages' is not specified

According to the documentation 'tabpages' is only meant to restore the
tab layout. Saving the working directory, no matter whether local or
global, should only depend on 'curdir'.
This problem affects some plugins like
https://github.com/dhruvasagar/vim-zoom/issues/21

I'm a bit confused about the use of the "t" pointer, which can be "tp" or "curtab".
It almost looks like using the local directory of one tab for another.
Perhaps you can add a comment about what the "t" pointer is for.

What is confusing is that the loop sets "tp" to the first tab, but then the information of the current tab is stored, because the window pointers are set to that.
Let me make tp point to the tab being stored, then we don't need the extra "t" pointer.


Operation Type Definitions

I've added definitions to the items in the Operation Type Data Type Definition below.
In so doing, I'm also recommending a few changes.

Mowing, Wrapping and Transport and Vehicle Data were formerly grouped as "MISC"
a. I've recategorized Mowing and Wrapping into Harvest. I believe these items were put in the list as haying operations and not for any other non-field purpose.
b. I've further consolidated Swathing and Mowing.  These items may have been separate from a machinery viewpoint, but arguably the activities have a common definition for our purposes.
c. I've renamed/promoted "Transport/Vehicle Data" to a top level item "Vehicle_Data_Collection".  The "Data Collection" terminology is a carryover from the ADAPT Framework and it would seem to do a better job of naming the operation.

I've added "_GENERAL" to all top level types for consistency

--
Proposed Definitions:
UNKNOWN (not defined)
APPLICATION_GENERAL:
Applying input(s) to a Field for purposes not otherwise specified in this list.
APPLICATION_FERTILIZING:
Applying crop nutrition input(s) to a Field.
APPLICATION_SOWING_AND_PLANTING:
Introducing the seeds or other plant material into a field.
APPLICATION_CROP_PROTECTION:
Applying crop protection input(s) to a Field.
APPLICATION_IRRIGATION:
Applying water to a Field for the purpose of irrigation.
HARVEST_GENERAL:
Harvesting a Field through means not otherwise specified in this list, including combining
HARVEST_BALING:
Harvesting a crop into bales
HARVEST_FORAGE_CHOPPING:
Harvesting a Field with a Forage Chopper
HARVEST_MOWING_AND_SWATHING:
Cutting the crop to be dried in the Field before a subsequent harvest operation.
HARVEST_WRAPPING:
The activity of wrapping the harvested crop in protective material
OBSERVATION_GENERAL:
A Field Observation activity such as scouting or soil testing
TILLAGE_GENERAL:
Mechanical preparation of soil for cultivation
VEHICLE_DATA_COLLECTION_GENERAL:
The activity of collecting data from the tractor or other vehicle, often alongside another Operation Type or in transport between Fields.

Would there be any value in aligning to AEF equipment types from the ISOBUS database:

Lots of discussion on the Harvest categorizations in 13 December 2023 meeting.  One idea was to things like mowing, raking and tedding hay, swathing grain, digging peanuts and topping potatoes into a HARVEST_PREPARATION category.  Another was simply to call everything HARVEST, although multiple such operations over the same ground adds confusion in interpreting the data.  Leaving this open for further discussion.

I think I may have gone way too far down the rabbit hole here but my two cents is to consolidate all the above HARVEST 's to: HARVEST_PREPARATION, HARVEST_GENERAL and add STORAGE_LOGISTICS, MAINTENANCE and maybe TRANSPORT_HAULING.
Personally, I like the idea of consolidating several of what are currently listed to a HARVEST_PREPARATION type for any operations that happen in the field but nothing is removed from the field like cutting, swathing, raking, merging, lifting, etc. HARVEST could then encompass the operations where the crop transforms into the harvested product and is packaged or removed from the field.
The post harvest piece is a little more difficult to define for me and feels like there should maybe be a couple types. I would propose STORAGE_LOGISTICS for operations like wrapping, bagging, packing (e.g. silage pile/bunker), or if someone tracked the use of a tractor to power an auger moving grain into bin/dryer. This group would also include collecting bales dropped in a field, piling beets harvested at the headland, basically transport operations that don't leave the field. A grain cart hauling from combine to transport vehicle would fall in this category too.
To me this raises the question do we need a separate TRANSPORT_HAULING type or does that fall under VEHICLE_DATA_COLLECTION_GENERAL or just include under STORAGE_LOGISTICS? Thinking about moving forage from the field to the silo or bunker, manure from storage to the field, or hauling grain to the bin via tractor and wagon? I know for some carbon programs they want to have a record of how far grain was trucked to the elevator to account for the footprint of the semi's diesel use and it is common for a tractor and wagon(s) to preform that operation in many parts of the world. So while this may not be logged much today could be a requirement in the not too distant future.
There may be merit for some type of of MAINTENANCE operation group as well. This could cover mowing waterways like we discussed during the call as something different than HARVEST_PREPARATION since there is no intention to collect a harvested product afterward. There are other operations like shredding corn stalks or mowing a cotton field in lieu of tillage after harvest since that is a regulatory requirement (for cotton) in some areas I believe. Other operations like rebuilding borders in flood irrigated fields, land leveling a field, picking rocks, or shaping beds could go here as well since they do not exactly fit as tillage in my mind.
It is a messy quagmire to sort this all out for sure and there will be exceptions to everything I suggested but I think with some of the reporting requirements on the horizon it would be helpful to have a little more granularity than putting everything under HARVEST.

@crakerb-ship-it I white-boarded ideas after this morning's discussion and came up with some similar conclusions.
VEHICLE_DATA_COLLECTION_GENERAL is the operation type for tractor telematics, so if there is no data collected/logged from the pre/post-harvest operation, then that is all there is.
"Harvest Preparation" would be a logged Operation if there was data present.   That could be a manual entry.  E.g., We store summary fuel data from the tractor, but also a manual record of having raked 40 acres.   In future if these sorts of implements start measuring/logging something, then "Harvest Preparation" is also the place for it.  One last thought that came up was that spraying a non-selective herbicide to dry down a crop could also be considered "Harvest Preparation" rather than "Application - Crop Protection."
I like your observation of the transition from crop to harvested product, although I can also foresee differences of perspective on when that happens.  In practical terms, the point of threshing/chopping/baling is "harvest per se," where equipment can today measure the yield and where we can still (fairly easily) correlate the harvest to a spatial footprint on the field.
The question with "Post Harvest" is where do we stop?  We've used the constraint that ADAPT is today limited to data associated to cultivated ground.  Does that mean so long as we can track data to an individual Field we are inside our scope?

I'm proposing the following updated list for continued discussions.  I've replaced the harvest categories with 3 defined in-field types and purposely omitted the "general" term from harvest.   Per @crakerb-ship-it's comments above, I've created a new type alongside tillage.
UNKNOWN (not defined)
APPLICATION_GENERAL:
Applying input(s) to a Field for purposes not otherwise specified in this list.
APPLICATION_FERTILIZING:
Applying crop nutrition input(s) to a Field.
APPLICATION_SOWING_AND_PLANTING:
Introducing the seeds or other plant material into a field.
APPLICATION_CROP_PROTECTION:
Applying crop protection input(s) to a Field.
APPLICATION_IRRIGATION:
Applying water to a Field for the purpose of irrigation.
FIELD_PREPARATION_GENERAL:  Non-tillage activities to prepare a field for cultivation including chopping stover, picking rocks, leveling a field, building borders in flood-irrigated fields, shaping beds, etc.
FIELD_PREPARATION_TILLAGE:  Mechanical digging of soil for future cultivation
HARVEST_PRE_HARVEST – In-field activities in preparation of harvest such as swathing grain, mowing, ranking and tedding hay, and topping or turning over root crops.
HARVEST:  The specific activity of gathering the cultivated crop from its growing location converting it into a product.   Examples include combining grain, chopping forage, baling hay, picking cotton or fruit.
HARVEST_POST_HARVEST:  In-field activities following actual harvest such as carting grain, wrapping and hauling bales, etc.
OBSERVATION_GENERAL:
A Field Observation activity such as scouting or soil testing
VEHICLE_DATA_COLLECTION_GENERAL:
The activity of collecting data from the tractor or other vehicle, often alongside another Operation Type or in transport between Fields.  Examples include fuel usage and speed.

Updated definitions from discussion in 3 January 2024 meeting to my earlier proposal:
FIELD_PREPARATION_TILLAGE:  Ground engaging operation to size and incorporate residue or alter the soil structure for future cultivation.
HARVEST_PRE_HARVEST: In-field activities in preparation of harvest that are tracked separately, usually involving separate passes over the field from the harvest itself.  Examples include swathing grain, mowing, raking and tedding hay, and removing foliage from or turning over root crops.
HARVEST_POST_HARVEST: In-field activities following the actual harvest that are tracked separately, usually involving separate passes over the field from the harvest itself.   Examples include carting grain, wrapping and hauling bales.
APPLICATION_GENERAL:
Applying input(s) to a Field for purposes not otherwise specified in this list, or involving individual product mixes that cross types.   Examples include spreading lime, and applying a product mix with a liquid fertilizer carrier and crop protection ingredients.  Seeds with crop protection treatments, however, should be classified as APPLICATION_SOWING_AND_PLANTING.  Also note that where multiple products of different types are applied in a single pass, data should be configured in separate operations by type.

Latest changes agreed in 17 January 2024 meeting


send_template 根据最新文档移除top_color参数

Codecov Report

Merging #206 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master     #206   +/-   ##
=======================================
  Coverage   76.72%   76.72%
=======================================
  Files          88       88
  Lines        3343     3343
=======================================
  Hits         2565     2565
  Misses        778      778

Impacted Files
Coverage Δ

wechatpy/client/api/message.py
64.77% <100%> (ø)
:white_check_mark:

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 221ca39...422334c. Read the comment docs.


Add 'movestart' event on map.

Just like there is a 'moveend' event available on map, it would be very convenient to have a movestart event.
Use Case
In case when triggering a ol.animation.pan I may want to toggle once before the animation starts and toggle it back once after animation ends.
We have to remember here that animation might not actually happen based on where we are panning to. So just doing something before triggering pan is not enough, because toggle back might not happen if it doesn't actually pan (`moveend') doesn't get called in this event.
fix 1
This can be fixed , if moveend is called even if the actual move doesn't happen, if pan was triggered.
fix2
movestart event should be provided which just like moveend doesnt get called if there is no movement happening in the map.
Currently it is possible to achieve this using map.beforeRender but, it just seems too much ugly coding to achieve something very simple.
* current  solution*
           var pan = ol.animation.pan({
                duration: 700,
                source: map.getView().getCenter()
            });

            map.beforeRender(function(map, frameState) {
              var stillPanning = pan(map, frameState); // returns false panning is done

              if (stillPanning){
                 // do movestart stuff here
                 if(!everDone){
                       doSomething();
                       everDone = true;
                  }
              }
              else{
                 // do move end stuff here
                 undoSomething();
                 everDone = false;
              }
              return stillPanning;
            });

            map.getView().setCenter(geom);

This could all have been done in two simple  map.on("movestart") and  map.on("moveend") callbacks like it was supported in OpenLayers2.
Here's a jsFiddle that demonstrates what I need to do with the non-ideal solution I posted.  Try pressing the pan-map second time and see how moveend does not fire, but animation end does.
update
I have updated my original question and answer on stackoverflow to summarize the discussion here:
http://stackoverflow.com/questions/31896300/openlayers-3-movestart-event-on-map/31897512.
Thanks!

I would also like to see movestart event.

@elmuSSo I have working example of a solution in my stack-overflow question. Its not ideal but works just fine. Still agree it would be good to have that event generated by the OL3

+1, this is really a great miss when upgrading an ol2 application that uses navhistory to ol3. And please, don't tell me to look at the permalink example ;-)

@milovanderlinden I'm failing to understand how a movestart event would help you with navigation history. Are you sure you commented on the correct ticket?

Yes, I am. Sorry if I got you confused.
I have an application using ol2 that has had http://dev.openlayers.org/releases/OpenLayers-2.6/doc/apidocs/files/OpenLayers/Control/NavigationHistory-js.html implemented on custom buttons since day 1. So when I cherry-picking upgraded it, I discovered that the navigation control was missing in ol3. Then I tried to recreate it "ol3-style", but I noticed that there is no setCenter(center, zoom); so I tried to call the actions individually, to find out they firing seperate moveend events and when I added rotation, even 3.
Then I got stuck in un('moveend') not un-ing the way I wanted, duplicating movend triggers. And finally, using moveend complicated array manipulation for the back and forward arrays. So I stopped trying.
It would be nice if I could rewrite duplicate https://github.com/cscott530/leaflet-history for ol3. It uses movestart.
Perhaps this is the wrong discussion. But I am strongly in favour of having a movestart event.

Hi. It seems the 'movestart' event is still not available in OpenLayers 3.17.1. Are you planning to add that event? It is really useful. Thanks

You can simulate a movestart event with the following code:
function onpropertychange() {
  console.log('movestart');
  map.getView().un('propertychange', onpropertychange);
  map.on('moveend', function() {
    map.getView().on('propertychange', onpropertychange);
  });
};
map.getView().on('propertychange', onpropertychange);

Listening to map.getView().on('propertychange', onpropertychange); will also get triggered when the user zooms and not just on pan though.

@shaunakv1 try to use 'change:center' instead of 'propertychange'

Center updates when the map zooms we well, so it still gets triggred:
Example:
http://jsfiddle.net/5mwpq7g1/2/

@ahocevar Thank you for your precious suggestion. It seems to work exactly like I wanted. :)
@fredj Thanks. I use 'change:center' and it it triggers only on pans. ;)
@shaunakv1 In your fiddle, the 'movestart' event gets triggered on each mouse move. I use 'change:center' everywhere. And so, it only gets triggered once ant the start of a pan. See my fiddle.
Thank you to all of you. :D

but this solution creates a lot of moveend event. maybe the side effect is when you add two listeners on movestart event, it runs 4 times(2 x 2).

@joaorodr84 If you zoom with mousewheel or doubleclick, 'change:center' will be triggered as well.

@ischas that's expected behavior. it's the same when you use 'moveend' event. zoom event triggers moveend event as well.

@cs09g  We're talking about movestart here, not moveend.

@ahocevar I mean, zoom events trigger movestart as moveend does

@cs09g It was mentioned by @joaorodr84 that the 'change:center' were just triggered on pans. And this is wrong and this is what I've said.

@ischas oh, you're right, i'd missed that mention.

@joaorodr84 even in your fiddle it gets triggered when you zoom using your mouse, and it isn't doing the wrong thing. Center indeed changes when you zoom with mouse wheel and that counts as a pan. I was just pointing it out.

@shaunakv1 @ischas
You are absolutely right. With mousewheel and doubleclick zoom, the center also changes. I hadn't noticed, but it is clearly true. It makes perfect sense. My mistake!  Thanks again. :)

  map.on('moveend', function() {
    view.on('propertychange', onpropertychange);
  });

Should this be map.once ?

I don't understand why we don't have movestart, moveend, zoomstart, and zoomend. It doesn't make any sense. We have switched a huge application over to OL3 from OL2 and these events are the heart of our application. So now we are just plain @#$#@&.

I was able to get it working using ahocevar's solution above. The only problem now is that it is kind of interfering with the "singleclick" event. If you don't click the map perfectly it will trigger the movestart and not the singleclick event. When I say perfectly, if there is ANY x/y movement of the motion when you click, it will interpret it as a movestart event and not a singleclick event. Anyone have any ideas of how to make the movestart event less sensitive or the singleclick take prevalence over the movestart event? Thanks.

Reading all this, I think a movestart map event would make sense to make people's lives easier. Accepting pull requests.

Thank you for adding a official 'movestart' event @ahocevar !!


No matching handler found for 'handler'. Check your service definition

I just upgraded from serverless-webpack 2.0.0 to 2.2.0 and got the following error. It was working perfectly with the previous version.
No matching handler found for 'handler'. Check your service definition

Is there anything wrong in my configuration?
service: my_service

provider:
  ...

custom:
  webpack: webpack.config.serverless.js

functions:
  my_function:
    handler: handler.my_function
    events:
       ...

plugins:
  - serverless-webpack

FYI I'm on serverless latest (as of today: 1.18.1)

Where is your handler.js located? In the service root directory?

It's defined in my webpack configuration:
module.exports = {
  entry: ['./src/server/handler.js'],

By the way, I'm using yarn to freeze dependencies. I noticed while trying several configurations that I can get the issue with 2.0.0 too. It looks like the problem appears with the upgrade of an inner dependency, somewhere.

Ok. I think that's the problem. The function definition should define the path - otherwise you'd also get issues with other plugins that need to find the handler. The problem is, that Serverless (the framework) is completely unaware of the handler location in your case.
So, please change the handler definition in your serverless.yml.
... and the good thing:
With 2.2.0 you now do not have to set the entries manually anymore in your webpack config. Just use:
// webpack.conf.js
const slsw = require('serverless-webpack');
module.exports = {
  entry: slsw.lib.entries
};

Then you can add functions to your service without changing the config again.

This is the function definition you should set:
functions:
  my_function:
    handler: src/server/handler.my_function

I was searching how to define the path. I didn't put the serverless.yml is the same directory as the handler file, and that does not help.
Well, following what you said, I get another error:
Type Error ---------------------------------------------
Path must be a string. Received { 'src/server/handler': './src/server/handler.js' }
with
functions:
  my_function:
    handler: 'src/server/handler.my_function'

Ok, found. The problem is that slsw.lib.entries does not contain an array, but the object
{ 'src/server/handler': './src/server/handler.js' }
If I just use the previous config, it works fine
module.exports = {
  entry: ['./src/server/handler.js']

So, at the end, the fix was to set the path in the handler definition:
functions:
  my_function:
    handler: src/server/handler.my_function

Glad to hear that it now works 👍

Hey 👋 Apologies to reopen this, but I'm also seeing the same issue.
I'm trying to upgrade the serverless-babel-starter repo to use 2.2.0.
When I try to deploy, I get the error message:
Path must be a string. Received { 'src/handler': './src/handler.js' }
I've updated the webpack.config.js to:
const nodeExternals = require('webpack-node-externals');
const slsw = require('serverless-webpack');

module.exports = {
  entry: slsw.lib.entries,
  target: 'node',
  externals: [nodeExternals()],
  module: {
    loaders: [{
      test: /\.js$/,
      loaders: ['babel'],
      include: __dirname,
      exclude: /node_modules/,
    }],
  },
};

and the serverless.yml to:
functions:
  hello:
    handler: src/handler.hello
    events:
      - http:
          path: hello
          method: get
      # Ping every 5 minutes to avoid cold starts
      - schedule:
          rate: rate(5 minutes)
          enabled: true

Do you have any suggestions? Would be great to get 2.2.0 working to be able to deploy a single function at a time.

Can you try to define an output section in your config?
With lib.entries it is important that you set the output definition properly.
	output: {
		libraryTarget: "commonjs2",
		path: path.join(__dirname, ".webpack"),
		filename: "[name].js"
	},

commonjs should also work instead of commonjs2 if you prefer that.

It could be that there's a bug in the automatically generated output config if you omit it.

If that does not help, could you run the deploy with SLS_DEBUG=* set and post the callstack of the error?
This might help to find the exact reason faster.

Thanks! My webpack config now looks like this:
const nodeExternals = require("webpack-node-externals");
const slsw = require("serverless-webpack");
const path = require("path");

module.exports = {
  entry: slsw.lib.entries,
  target: "node",
  externals: [nodeExternals()],
  module: {
    loaders: [
      {
        test: /\.js$/,
        loaders: ["babel"],
        include: __dirname,
        exclude: /node_modules/
      }
    ]
  },
  output: {
    libraryTarget: "commonjs2",
    path: path.join(__dirname, ".webpack"),
    filename: "src/handler.js"
  }
};

But I'm now seeing this error associated with webpack:
throw new Error("Module '" + loader.path + "' is not a loader (must have normal or pitch function)");

Hmmm. we use webpack 3 here, there you have module.rules instead of loaders. I think since webpack 2 module.loaders changed to module.rules like this:
	module: {
		rules: [
			{
				// Process ES6 with Babel.
				test: /\.(js|jsx)$/,
				use: [
					{
						loader: "babel-loader",
						options: {
							presets: [ "node6", "stage-0" ],
							plugins: []
						}
					}
				],
			}
		]
	}

Make also sure that you have defined the loaders and presets that you use in your package.json.

@lewisblackwood If it does not work, I can have a look tomorrow and if I have time I could prepare a PR for the babel-starter repo.

@HyperBrain thanks for all your help! I have a working set-up now:
const nodeExternals = require("webpack-node-externals");
const slsw = require("serverless-webpack");
const path = require("path");

module.exports = {
  entry: slsw.lib.entries,
  target: "node",
  externals: [nodeExternals()],
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: [
          {
            loader: "babel-loader",
            options: {
              presets: ["node6", "stage-0"],
              plugins: []
            }
          }
        ]
      }
    ]
  },
  output: {
    libraryTarget: "commonjs2",
    path: path.join(__dirname, ".webpack"),
    filename: "[name].js"
  }
};

and followed your suggestion of using webpack ^3.0.0 as a dependency.
I'll reach out to the maintainer of serverless-babel-starter and see if they're open to a PR 👍
Thanks again!

Hmm, although it seems I've now broken the use of webpack-node-externals.
Serverless: Packing external modules...
Serverless: Uploading service .zip file to S3 (9.46 MB)...
This takes 100 secs to deploy the whole project, and the same using single function deploy.
@HyperBrain are you using webpack-node-externals in your set-up?

@lewisblackwood Yes, I do, and it works just by adding externals: [ nodeExternals() ], to the config.
So serverless deploy and serverless deploy function --f <xxxxx> takes the same time for you? That sounds strange because the single function deploy should only package and deploy exactly one function.
To test you can try to run just the package phase of Serverless with serverless package --function=xxx to see if it is Serverless' deployment that is broken or if it is something with the plugin's packaging.

Apologies, I think I made a mistake here. The deploy is still relatively slow, but it's actually just one of the functions that is both slow to deploy individually and slows deployment of the whole project.
@HyperBrain one last question if I can - are you using either of serverless-plugin-optimize or serverless-optimizer-plugin? Should they be compatible with serverless-webpack?
I've included serverless-plugin-optimize which significantly speeds up deployment, but once the functions are deployed they error with:
module initialization error: Error.

🤔 No... I never used these two plugins and do not know if there are any issues. But it would be worth to have a look at it - and see why there are problems.
Could you try to ask about that in the serverless forum? Maybe someone else has run into that and probably found a solution (or workaround). At least we might get more information to solve it.

After some thinking, I'm not really wure if any optimization plugins can add any value to the webpacked build and deployment. From the code and dependency side, everything is already optimized and only things that are needed are packaged (at least with the upcoming v3 version).
I have to have a closer look into the plugin-optimize to see what exactly that does, and how it technically tries to speed up the deployment.

Will close this issue again now since there's no actual fail and you managed to deploy.

@HyperBrain thanks again for your help.
I've experimented further, using your v3.0.0-individual-packaging branch and serverless-plugin-optimize. Here's the repo.
Adding the plugin does reduce the time to deploy, but once deployed the Lambda errors with:
module initialization error: Error
    at s (/var/task/_optimize/service-name-dev-hello/src/handler.js:1:683)
    at /var/task/_optimize/service-name-dev-hello/src/handler.js:1:734
    at Object.309../utils (/var/task/_optimize/service-name-dev-hello/src/handler.js:86857:174)
    at s (/var/task/_optimize/service-name-dev-hello/src/handler.js:1:683)
    at /var/task/_optimize/service-name-dev-hello/src/handler.js:1:734
    at Object.308../hello (/var/task/_optimize/service-name-dev-hello/src/handler.js:86854:80)

It's probably that my configuration with serverless-plugin-optimize is incorrect. Will try to get it working.
Hope that's useful 😬


refactor: simplify usage of arc

Signed-off-by: Gregory Hill<EMAIL_ADDRESS>

The change to accept borrows of the provider/btc_rpc is great. But I am not sure about changes that take these by value, where you clone the entire struct now instead of just an Arc

The only duplication would be the network type so the overhead is minimal. That being said, the next step would be to clarify exactly where we take by value and further refactor.


Azure ML: Update how to manage workspace page

Remove duplicate location listing from the table listing the basic information.
Added FTA contribution meta for internal tracking.

@andreasbotsikas : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@andreasbotsikas : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@andreasbotsikas : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@andreasbotsikas : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

@ktoliver : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Resolved the merge conflict.