Session timeout

I think it's good to have an event fire in the when a session is garbage collected.
With the changes to this branch, you can accomplish this for MemoryEngine, which I updated.  However, each engine that has a #run_gc would need to be updated in a similar fashion (it's pretty easy, see MemoryEngine below).
Here's a use-case.  Suppose your website has users provided by a User class.  You could be notified when a session is expiring like this:
class User

  Session.timeout {|id| self.timeout(id)}

  def self.timeout( id : String)
    # session just expired.  You can still use Session.get(id)
    # but the session will be destroyed after this method is finished.
  end

end

I am investigating the failures.  Will  report back in a bit.

Ok, all set.  Somehow deleted an end in run_gc before committing.

Ok what's the use case again, it can send an email to them saying "we removed your session from our website"?  Or is it more like "save yourself off somewhere" if you want to do something before it's discarded?

  I'm actually instantiating User objects that remain instantiated across requests ( tied to still-connected WebSockets).      When a session times out, I need to also close the websocket.
Here's the general idea in code, very oversimplified

class User
  INSTANCES = {} of String=>self
  @session : Session
  @socket : HTTP::WebSocket?

  def initialize(@session : Session)
<EMAIL_ADDRESS>= self
  end

  #... more stuff to handle sockets etc.

  def timeout
    INSTANCES.delete @session.id
  end

end

@Thyra, sorry I forgot to reply to your comment!  I'll close this request and create another that also handles Session.destroy and you can see what you think.


Update a sub account

Docs: https://developer.flutterwave.com/reference#update-a-subaccount

I'll work on this feature.


Q4 issues

Hey @moritzwiechers
I used the original integration, but seems GPS location is not working, start/stop climate doesnt work => 404 errors
I dont see any lock/windows status, quite limited
is this still working for you with this fork? probably not? i think maybe something changed on Audi API?

I'm currently using the branch from cry-ius:
https://github.com/cyr-ius/hass-audiconnect
Maybe you can try it out and open an issue for the missing gps information.

Ok, I can try, but if I look in the python files, it's still using the old endpoints , I traced the android app yesterday and the url for climate start/stop is changed, probably others too

Hey,
I'm sorry, but I was wrong. I gave cyr-ius a try, but changed back to the original repo because the soc wasn grabbed. Using Version 1.9
I never got a running version for changing something like climate or even lock/unlock. For me the most important data is the battery capacity (soc), so I didn't dig further into it. @cry-ius  seems to be the most active dev. Maybe you can point him to the right url

Hey, just posted a new issue, climate API is changed... i reporeted on his fork
Battery is working for me, maybe we can discuss here?
https://github.com/cyr-ius/hass-audiconnect/issues/86


[BUG] Helix api returns no data when streamer goes online

Describe the bug
Noticed in the app container logs that it throws errors regarding an API call to twitch Helix for when the streamer goes online (might be also for offline) . It doesn't break the app in any way from what I can see as everything keeps works but I can see that error message recurring in the logs.
To Reproduce

Go to the Streamers section
Add a streamer to the list
Wait for them to go online

Expected behavior
Swallow the error in this case as it seems like the output of that response is not needed atm
Here is the full error log from the container:
server stderr | ERROR Internal Server Error: /api/v1/twitch-events/stream-online/webhook/
server stderr | Traceback (most recent call last):
server stderr |   File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 472, in thread_handler
server stderr |     raise exc_info[1]
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 38, in inner
server stderr |     response = await get_response(request)
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 233, in _get_response_async
server stderr |     response = await wrapped_callback(request, *callback_args, **callback_kwargs)
server stderr |   File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 435, in __call__
server stderr |     ret = await asyncio.wait_for(future, timeout=None)
server stderr |   File "/usr/local/lib/python3.8/asyncio/tasks.py", line 455, in wait_for
server stderr |     return await fut
server stderr |   File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
server stderr |     result = self.fn(*self.args, **self.kwargs)
server stderr |   File "/usr/local/lib/python3.8/site-packages/asgiref/sync.py", line 476, in thread_handler
server stderr |     return func(*args, **kwargs)
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
server stderr |     return view_func(*args, **kwargs)
server stderr |   File "/usr/local/lib/python3.8/site-packages/rest_framework/viewsets.py", line 125, in view
server stderr |     return self.dispatch(request, *args, **kwargs)
server stderr |   File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 509, in dispatch
server stderr |     response = self.handle_exception(exc)
server stderr |   File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 469, in handle_exception
server stderr |     self.raise_uncaught_exception(exc)
server stderr |   File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
server stderr |     raise exc
server stderr |   File "/usr/local/lib/python3.8/site-packages/rest_framework/views.py", line 506, in dispatch
server stderr |     response = handler(request, *args, **kwargs)
server stderr |   File "/code/./tau/twitchevents/views.py", line 106, in webhook
server stderr |     streamer.save()
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 753, in save
server stderr |     self.save_base(using=using, force_insert=force_insert,
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 801, in save_base
server stderr |     post_save.send(
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 177, in send
server stderr |     return [
server stderr |   File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 178, in <listcomp>
server stderr |     (receiver, receiver(signal=self, sender=sender, **named))
server stderr |   File "/code/./tau/streamers/signals.py", line 75, in streamer_saved
server stderr |     stream_data = data.json()["data"][0]
server stderr |   KeyError: 'data'

Notes from chat with Finite
   url = f'https://api.twitch.tv/helix/' \
      f'streams?user_login={instance.twitch_username}'
     data = requests.get(
     url,
     headers=headers
   )
  stream_data = data.json()["data"][0]

it looks like for some reason or another, that request to the helix API isn't returning data.
(at least for one of the calls to the API)
And what that is doing- is making a new "current/last stream" object, that we're not really even using anywhere right now.
so that whole section of code, probably doesn't need to be there.

Hi @gigili-
Apologies for the delay- I just got back into town from a trip.  I'll take a closer look a bit later this week, and see what I can find.


Fix codegen for enums with fields

There's definitely room to improve here, the generated code is pretty wasteful. Some issues:
Unnecessary nesting
Currently the codegen requires you to create a Start Path command like this:
let cmd = ModelingCmd::ModelingCmdStartPath(
    crate::types::ModelingCmdStartPath::StartPath,
);

But the only parameter is an enum with one variant, so there's no choices for the user to make anyway. A better UX would instead be:
let cmd = ModelingCmd::ModelingCmdStartPath;

Stuttering
Current codegen outputs an enum like this:
pub enum ModelingCmd {
    ModelingCmdStartPath(ModelingCmdStartPath),
    ModelingCmdMovePathPen(ModelingCmdMovePathPen),
    ModelingCmdExtendPath(ModelingCmdExtendPath),
}

It'd be better to remove the stuttering, i.e.
pub enum ModelingCmd {
    StartPath(ModelingCmdStartPath),
    MovePathPen(ModelingCmdMovePathPen),
    ExtendPath(ModelingCmdExtendPath),
}

but that might be complicated, because the type StartPath might already exist somewhere. So in that case, these variants would need to be in their own module.
These improvements seem a bit complicated, and I just want to get the code generation to work again, so this will do for now.

Currently openapitor is generating invalid examples again.

Codecov Report
Patch coverage: 22.65% and project coverage change: -0.74 :warning:

Comparison is base (c0d1103) 48.08% compared to head (3c69541) 47.35%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #210      +/-   ##
==========================================
- Coverage   48.08%   47.35%   -0.74%
==========================================
  Files          30       30
  Lines       10913    11148     +235
==========================================
+ Hits         5248     5279      +31
- Misses       5665     5869     +204

Flag
Coverage Δ

unittests
47.35% <22.65%> (-0.74%)
:arrow_down:

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

Impacted Files
Coverage Δ

kittycad/src/hidden.rs
0.00% <ø> (ø)

kittycad/src/modeling.rs
21.05% <ø> (ø)

kittycad/src/types.rs
3.81% <1.73%> (-0.11%)
:arrow_down:

openapitor/src/types/example.rs
69.43% <46.15%> (+0.01%)
:arrow_up:

openapitor/src/types/mod.rs
89.94% <73.33%> (-0.15%)
:arrow_down:

kittycad/src/tests.rs
94.14% <96.07%> (-0.10%)
:arrow_down:

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


[1.x] Internationalization support

I provide internationalization support, and you just need to execute the following command to publish the language file.
Currently only support English, Chinese (Simplified), Chinese (Traditional)
php artisan pulse:lang-publish

Hey there! We don't plan to provide official internationalization support for Pulse at this time. It's just a bit too much for us to maintain. Thank you.

Hey there! We don't plan to provide official internationalization support for Pulse at this time. It's just a bit too much for us to maintain. Thank you.
I think the internationalization work can also be done by the community, and the main maintainer only needs to provide the most basic English language pack

I hope you can accept my offer. Thank you
@taylorotwell


code changed in Validation.py

Fixes #<issue_number_goes_here>

It's a good idea to open an issue first for discussion.

[x] Tests pass
[ ] Appropriate changes to README are included in PR

@googlebot I signed it!


update routes

What kind of change does this PR introduce?
Updates routes in UI
What is the current behavior?
User index and edit pages are routed to /<user_handle> and /<user_handle>/edit respectively. Package page is routed to /<user_handle>/<package_partial_name>
What is the new behavior?
User index and edit pages are routed to /users/<user_handle> and /users/<user_handle>/edit respectively. Package page is routed to /packages/<user_handle>/<package_partial_name>
Additional context
In current routing, there is an ambiguity between what a route like /a/b means. It could be either a package b published by user a or a page b for user a. For example /a/edit currently takes the user to edit their profile. This also means no user can currently publish a package named edit.
The new routes make it clearer what /users/... and /packages/... mean. This will also help in adding a new user access tokens page needed for the CLI login feature. After this change the access tokens page can be added at /users/<user_handle>/access_tokens without being confused with a package route.

Will organizations get lumped under /users/ too?
imo the /<handle>/<package> pattern is concise, and easy to remember, and similar to GitHub.
Could we disambiguate with a magic /_/ for any internal routing pages instead?
e.g.
/olirice/_/edit`

which would be different from a package named edit
/olirice/edit

Will organizations get lumped under /users/ too?

Oh I completely forgot about orgs. My current change would have put orgs also under /users.

If possible, it would be good to add some redirects for the old routes

Again, my change doesn't look good if we need to add redirects. I was overly reliant on what crates.io was doing. Let's go with what @olirice has suggested: a /_/ segment in the middle which removes the ambiguity (the original intent of the PR) and keeps the other structure intact. Sweet and simple.


Module validation failed: Call parameter type does not match function signature!

Looked through opened & closed issues, this doesn't seem to be reported yet, but I'm pretty unfamiliar with these kinds of errors.
class Foo
  def bar
    puts "works"
  end

  @callbacks : Array(Proc(Nil)) = [
    ->{ bar }
  ]
end

Foo.new

Module validation failed: Call parameter type does not match function signature!
i32 138
 %Foo*  call void @"*Foo#bar:Nil"(i32 138)

???
???
???
???
???
__crystal_main
main
__libc_start_main
_start
???

This is all I have to test right now but is reproduced on carc.in's environment:
Crystal 0.24.1 (2017-12-20)

LLVM: 5.0.0
Default target: x86_64-unknown-linux-gnu

https://carc.in/#/r/3s96

Array is not essential:
class Foo
  def bar
    puts "foo"
  end

  @callbacks : Proc(Nil) = ->{ bar }
end

Foo.new

The interesting thing is that typeof(bar) is Nil and typeof(-> { bar }) is Proc(Nil) so it should work.
Replacing puts "foo" with plain nil compiles.

It also compiles if bar is not an instance method:
def bar
  puts "works"
end
class Foo
  @callback : Proc(Nil) = ->{ bar }
end

Foo.new

It compiles if you wrap the @callback inside an init.
class Foo
  def init
    @callback : Proc(Nil) = ->{ bar }
  end

  def bar
    puts "works"
  end
end

Foo.new

@Virtual-Machine Yeah, that's what I was doing originally. Good to point out though!
I basically had a variable in a superclass that I was trying to give a specific default value to in a subclass by overriding super's initialize. My library is a layer over another library, so if the super initialize changed, problems arose, so I tried a few ways to see if I could do it without redefining the method, and came across this issue in the process.
I did end up finding a much better way anyway :smile:

Note that I'll fix this by making the initialization of an instance variable run at the class level, not at the instance level.
The bug is basically that this compiles:
class Foo
  @bar : Int32 = bar

  def bar
    1
  end
end

It's a bit confusing that bar is found, given that's an instance method, and we are in the process of initializing an instance variable... that makes little sense.
So the above will give an error, but this will work:
class Foo
  @bar : Int32 = bar # OK, refers to the class method

  def self.bar
    1
  end
end

Of course you can always do:
class Foo
  @bar : Int32

  def initialize
    @bar = bar
  end

  def bar
    1
  end
end

and problem solved, but there at least a few checks are made to make sure you don't access self or some other instance var before assigning it to @bar.

I just checked this with other languages: Java evaluates instance var initializers at the instance level. But C# does it at the class (static) level, which makes much more sense to me. I'll change it to behave like in C#.


Update release-notes.md

@Rutujavd Thank you for correcting this spelling mistake. Also, congratulations on your first contribution to our repo.


NGINX: Do not redirect /api/v1/ URLs from HTTP to HTTPS.

Following the article Your API Shouldn't Redirect HTTP to HTTPS, API requests through HTTP are very dangerous and exposes your API key to the network in plaintext. Many of these requests are unintentional as API clients follow the requests silently without raising any error/warning.
We should follow the fail fast principle and outright reject unencrypted API calls to our servers, providing the developers a visible way to quickly patch this security issue.
Currently we are simply redirecting all HTTP requests through NGINX, which is dangerous as we are sending sensitive secrets through plain/text. We want to stop redirecting for API requests and handle them with an middleware in Django with a possibility of implementing an auto key revoker later on. These changes employs the following:

Allow unencrypted API requests through reverse proxy to Django
Detect for unencrypted API requests in our backend
Reject and return a standard error message letting clients know of the situation

This will allow us and developers using our API to handle the requests in a more secure manner.
CZO: api-design, backend
Fixes: #30264.

Screenshots and screen captures:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

This makes no changes to the production nginx configuration, so it can’t possibly do what it says.


number Validator - allowBlank/allowString and zero length value

I have a number validator that allows blanks and allows strings, but when there's a zero length value an error message displays.  It doesn't appear that it allows blanks.  Below is my validator with options:

const blankGte0 = validator('number', {
  gte: 0,
  allowBlank: true,
  allowString: true,
  count() {
    return this.options.gte;
  }
});

What version are you on?

I was using the previous v2.1.0.  Upgrading resolved this issue.


Comments Avatar Wrapper - Chubby Theme

Beautiful framework, missing clearfix on the first Avatar "Elliot Fu" on page http://semantic-ui.com/views/comment.html - Chubby theme
.clearfix:after {content:""; clear:both; display:block}

Could you please explain what purpose would the clearfix have?


Suppressed Error?

I was looking at erldns_zone_cache:put_zone (https://github.com/aetrion/erl-dns/blob/master/src/erldns_zone_cache.erl#L189-L199), and it seems like the errors that come out of erldns_storage are suppressed. Is there a reason not to return the error code from the backend?

You are right, it would probably be better to return the result from the backend.
One note: different backends will need to normalize the results to facilitate pattern matching.

I realize my interpretation was off. I understand now the change that needs to be made and am preparing a PR.


Flutter update element create by ui.platformViewRegistry.registerViewFactory class

I am working with Google Map for flutter Website. As most tutorial said that, the map is displayed through ui.platformViewRegistry.registerViewFactory
below is the code example. As you see, i create the widget with the variable and tried to give the _lat and _lng from outside. But after i tried to give the value, the ui.platformViewRegistry.registerViewFactory is not triggered.
Anyone have idea about this?
` Widget getMap(double _lat, double _lng) {
String htmlId = "map-canvas";
ui.platformViewRegistry.registerViewFactory(htmlId, (int viewId) {
final mapOptions = new MapOptions()
..zoom = 8
..center = new LatLng(_lat, _lng)
..mapTypeControl = false;
final elem = DivElement()
  ..id = htmlId
  ..style.width = "100%"
  ..style.height = "100%"
  ..style.border = "none";

final map = new GMap(elem, mapOptions);

Marker(MarkerOptions()
  ..position = LatLng(_lat, _lng)
  ..map = map
  ..title = 'Green Energy');

return elem;

});
return HtmlElementView(
viewType: htmlId,
);
} `

Hi @khushi-shettigar
Can you please provide your flutter doctor -v a minimal complete reproducible code sample and the steps to reproduce the issue?
Thank you

`[✓] Flutter (Channel beta, 1.24.0-10.2.pre, on Mac OS X 10.15.7 19H2 darwin-x64, locale en-GB)
• Flutter version 1.24.0-10.2.pre at /Users/insight/Documents/flutter
• Framework revision 022b333a08 (9 days ago), 2020-11-18 11:35:09 -0800
• Engine revision 07c1eed46b
• Dart version 2.12.0 (build 2.12.0-29.10.beta)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /Users/insight/Documents/Android/sdk
• Platform android-30, build-tools 30.0.2
• ANDROID_HOME = /Users/insight/Documents/Android/sdk
• ANDROID_SDK_ROOT = /Users/insight/Documents/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.2, Build version 12B45b
• CocoaPods version 1.10.0
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] Connected device (3 available)
• sdk gphone x86 arm (mobile) • emulator-5554 • android-x86    • Android 11 (API 30) (emulator)
• Web Server (web)            • web-server    • web-javascript • Flutter Tools
• Chrome (web)                • chrome        • web-javascript • Google Chrome 87.0.4280.67
! Device 42007451e0506300 is offline.
• No issues found!
`

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.


Episode 27: Map bound nodes to syntax nodes

@terrajobst I'm watching the whole series on YouTube and noticed that this episode is marked private in the playlist. I came here hoping to find an explanation, but didn't find one. Can you say why the episode is marked private?

@terrajobst I'm watching the whole series on YouTube and noticed that this episode is marked private in the playlist. I came here hoping to find an explanation, but didn't find one. Can you say why the episode is marked private?


not good on RGB() and HSL() color formats

Input
this is how beautify format RGB and HSL
$studio-color: rgba(255,
100,
0,
1);
$nav-bg: hsla(40,
10%,
70%,
0.2);

Expected Output
it suppose to be like this
$studio-color: rgba(255,100,0,1);
$nav-bg: hsla(40,10%,70%,0.2);

On http://jsbeautifier.org/, the first input remains unchanged.  That could be considered a bug, but preserving newlines is not exactly wrong.
If we take the expected output as the input, things look okay.
Input:
<style>
$studio-color: rgba(255,100,0,1);
$nav-bg: hsla(40,10%,70%,0.2);
</style>

Output:
<style>
  $studio-color: rgba(255, 100, 0, 1);
  $nav-bg: hsla(40, 10%, 70%, 0.2);
</style>

Marking as a bug, but not high priority as it is non-breaking.


Support putting multiple Flutter bundles in a single APK/IPA

In conjunction with https://github.com/flutter/flutter/issues/18114, we also need to support shipping multiple Flutter bundles in the same APK/IPA file. For this to work:

Need to stop assuming findAppBundlePath is going to return a single path.
Load the framework files (such as platform.dill) from a separate resource than application bundles.
Change the way we record the bundle entries in manifest/plist.
Come up with a way to discover all bundles in the app.
Pick a reasonable default if no preference is provided.

@mehmetf Can you elaborate on why we need this? A single Flutter bundle should be able to handle all the views you'd want, if you specify initialRoute when creating each one.

@jason-simmons who is familiar with the discussions with mulligan.
Several motivators for this:

Being able to load a section of Dart code only meant to execute in the background. I would want that isolate to have a rather small memory footprint and not load my entire Dart app (including Flutter framework itself).
Have multiple isolates being able to load different bundles so we get proper isolation. With the workaround we currently suggest you would need to load the entire app into memory multiple times to achieve the same effect.
We will need to support loading Flutter bundles off the wire. It seems that this requirement falls naturally from that.

I confirmed that customer: dream only needs to be able to dynamically load multiple apps. They don't care about multiple bundles in a single binary.

I think this can be closed, since Flutter already supports dynamically loaded bundles.

Sure. Let's close it.
We get customers asking for this from time to time but the workaround we describe using initialRoute has been sufficient for them.


Big guy573/flutter portal/readme.md

Hello!
What is this PR about?

@rrousselGit hello.  I suppose because of the amount of characters it had me pr.  Or its possible I hadnt signed the cla yet.  I was creating the files it shows.

Creating what file? The only changes I see are modifications in the pubspec.yaml

@rrousselGit is a file renaming possible?  I apologize.


Add support for a 10-channel equalizer

Huh? Is this something technically sound, or you've just come up with a random idea?

Not that I'm against ideas of course.

Do you have something for me to start with?

It should be possible, take a look: http://codepen.io/anon/pen/YwGOOG

Great! Will definitely take a look. Thanks for the idea :+1:

That is pretty cool :smile: .  Styling needs a little touching up imo.
Any idea where it would go @Dogfalo ?

I'm not sure, maybe @phanan can give insight into this.
On Dec 30, 2015 12:22 AM, "Chris"<EMAIL_ADDRESS>wrote:

That is pretty cool [image: :smile:] . Styling needs a little touching up
imo.
Any idea where it would go @Dogfalo https://github.com/Dogfalo ?
—
Reply to this email directly or view it on GitHub
https://github.com/phanan/koel/issues/152#issuecomment-167956268.

Implemented on 2.0 branch.


[UN-561] Increase icon contrast

Ticket URL: https://national-archives.atlassian.net/browse/UN-561
About these changes
Increases contrast of icon by darkening the fill colour - also swapped for sprite to make for more re-usable code.
How to check these changes
Check story page and see icon has increased contrast:
Before:

After:

Before assigning to reviewer, please make sure you have

[x] Checked things thoroughly before handing over to reviewer.
[x] Checked PR title starts with ticket number as per project conventions to help us keep track of changes.
[x] Ensured that PR includes only commits relevant to the ticket.
[ ] Waited for all CI jobs to pass before requesting a review.
[ ] Added/updated tests and documentation where relevant.

Merging PR guidance
Follow docs\developer-guide\contributing.md
Deployment guidance
Follow docs\infra\environments.md

@William-Blackie I've approved and merged this now


Read send status ?

Is it possible to see if message sent ?

You can use email_dispatched signal:
https://pythonhosted.org/Flask-Mail/#signalling-support

@sv0 Thanks, can you add minimal example when email is delivered mark email sent in database ?


Hide 'Actions' Column On Export

There is no need to have the Actions Column when exporting data since it does not create a link on PDF's, Excel etc, and on copy or if we printed it not like we could anyways. Since we already filter out any columns with the class of not-export-col i simply added that to the header for actions.

I know that "Column Visibility" is an option, but it does require several clicks. Looking at it from a User Experience it is not very efficient. Maybe we could look into disabling it by default, then the can "reselect" it in the dropdown if they want to display it?

I agree it would be one less click, and I love one less click solutions :-)
But it would make it more difficult to understand how those buttons work. It's not that easy to begin with, but you can figure it out by playing around:

all columns are "visible", but some are not shown because the table is responsive;
export uses all "visible" columns; even if they're not shown because the viewport is too small;
if you want to hide a column from the export, it will also hide it in the table, so you kind of get a preview of the export;

If we do this, we'd have one more point:

ok, so the actions column is "visible", and I can see it in the table, but I can't see it in the export;

I don't know...

Pff... Let's not do this, at least for now. Arguments above. I'll close this PR for now, but anybody please comment if you think I was wrong to do so.
Cheers!
PS. @AbbyJanke - of course, thank you, even though I did not merge this PR. Thank you for the trouble of putting this together. And generally being a nice person :-))


Include guard issues with C++

#if defined(__cplusplus)
extern "C" {            // Prevents name mangling of functions
#endif

https://github.com/raysan5/raygui/blob/master/src/raygui.h#L177
is defined inside the "include guard block":
https://github.com/raysan5/raygui/blob/master/src/raygui.h#L130 - https://github.com/raysan5/raygui/blob/master/src/raygui.h#L502
#ifndef RAYGUI_H
#define RAYGUI_H
...
#endif

The closing brace for extern C however is defined outside the guard block
https://github.com/raysan5/raygui/blob/master/src/raygui.h#L3721
#if defined(__cplusplus)
}            // Prevents name mangling of functions
#endif

=>
#ifndef RAYGUI_H
#define RAYGUI_H

#if defined(__cplusplus)
extern "C" {            // Prevents name mangling of functions
#endif

...

#endif // RAYGUI_H

...

#if defined(__cplusplus)
}            // Prevents name mangling of functions
#endif

Therefore if you add the raygui header more than once in a c++ project you will get an extraneous brace and will be unable to compile.
Any reason why the include guard block ends on line 502 instead of the end of the file?

@lolleko that guard was just reviewed some days ago, it was probably an error... Feel free to send a PR with the fix.

@lolleko that guard was just reviewed some days ago, it was probably an error... Feel free to send a PR with the fix.


Move companies to a single source

https://github.com/italiaremote/awesome-italia-remote/issues/82


The change emoji option doesn't work and in chats that ha...

Description:
The change emoji option doesn't work and in chats that have already been changed I can only use the default thumbs up like
Operating system:
OS X, Windows, Linux
Best thing about Whatsie:
Ease of use, Design
Worst thing about Whatsie:
Cannot hide the right side of the screen would be nice if it had a little arrow to hide and open
Extra:
[Not answered]

This was just a bug, after ending processes and restarting it worked how it should. Can delete >.>


Pieces Neovim Plug-in Error : The Pieces Plugin has been updated. To ensure it functions correctly, please restart Neovim.

I am encountering a persistent warning message with the Pieces Neovim plugin. Each time I open Neovim, I receive the following message:
Warning: The Pieces Plugin has been updated. To ensure it functions correctly, please restart Neovim.
I have tried restarting Neovim multiple times, but the warning persists, and the plugin does not seem to function properly.
Steps to Reproduce:

Install the Pieces Neovim plugin.
Use NvChad with the "Lazy" package manager.
Install Pieces for Developers Neovim Plugin by adding the plugin details in plugins.lua
Start Neovim.
Observe the warning message.

Expected Behavior:
The plugin should function correctly without requiring repeated restarts.
Actual Behavior:
The warning message continues to appear even after multiple restarts, which shows that the plugin is not functioning as expected.
 Seems there was an issue in the UpdateRemotePlugins command you can run it manually and check the full error and send it here

Hey Bishoy! Thanks for trying to help! I'm using Python 3.12.2, and when I manually run UpdateRemotePlugins, I see this -
function remote#host#UpdateRemotePlugins[6]..<SNR>27_RegistrationCommands[13]..remote#host#RegisterPlugin, line 5
Plugin "C:/Users/KRISHNA/AppData/Local/nvim-data/lazy/plugin_neovim/rplugin/python3/pieces_python" is already registered                                    remote/host: generated rplugin manifest: C:\Users\KRISHNA\AppData\Local\nvim-data/rplugin.vim                                                               Press ENTER or type command to continue

Currently python 3.12 is not supported I will try to take a look at 3.12 today and if there is a way to support it, currently use a python version between 3.8 to 3.11
https://github.com/pieces-app/plugin_neovim/issues/53

Hey Bishoy! Just uninstalled Python 3.12 and installed 3.11, but this error is still showing up:
function remote#host#UpdateRemotePlugins[6]..<SNR>27_RegistrationCommands[13]..remote#host#RegisterPlugin, line 5
Plugin "C:/Users/KRISHNA/AppData/Local/nvim-data/lazy/plugin_neovim/rplugin/python3/pieces_python" is already registeredremote/host: generated rplugin manifest: C:\Users\KRISHNA\AppData\Local\nvim-data/rplugin.vim                           Press ENTER or type command to continue

Can you run :lua vim.fn.PiecesStartup()

This is what I get:

@imkrishnasarathi  can you please share C:\Users\KRISHNA\AppData\Local\nvim-data/rplugin.vim file?

" perl plugins

" node plugins

" ruby plugins

Here's the file, it doesn't have anything

I will create a release next Monday. It should work after the release

Hey @imkrishnasarathi,
Can you please update the plugin and let me know how it goes?

Hey @Bishoy-at-pieces ! So sorry I'm late to reply, I tried updating, and not sure if it's updating or not, but it doesn't work :(
Should I try re installing the whole system of neovim and its plugins?

i also have the same issue it was working fine with wsl neovim but when i switched to neovide in windows its showing that error
works in wsl

Thank you both of you I will be prioritising that issue next Monday

Hey @28arnab @imkrishnasarathi
It will be great to have some time chatting about this since I can't reproduce that issue.
https://calendar.app.google/6WNshFBs44BAcoq6A
Feel free to add a time here.

Hey @28arnab @imkrishnasarathi,
Really sorry for the delay but let me know how it goes after this update planning on update by tomorrow (1.2.0
)

Can you confirm me that is everything is working fine?

Can you confirm me that is everything is working fine?

Hi Bishoy! Let me check and inform you by today!


Fix "DeviceIoControlAsync(HFILE hDev, uint ioControlCode, byte[] inputBuffer, byte[] outputBuffer) outputBuffer no ouput data" issue.

By the way, when will the next version be released to Nuget?

I'll merge and test this weekend and then release with some other updates next week


SetValidator with different validator type

Hi, I'm trying to implement a particular scenario and not quite sure how to do it or if it's possible.
I'm trying to write a validator that I want to reuse in a few places.  The validator would be for one of our entity classes, something like this:
public class OrderValidator : AbstractValidator<Order> {
     public OrderValidator() {
           RuleFor(order => order.Status)
              .Equal(OrderStatus.Accepted);
           RuleFor(order => order.Amount)
               .GreaterThan(0);
          // etc
     }
}

I want to use the validator inside another validator, but the problem is I don't have an Order object in that class just an Id.  Would like to be able to do this, but can't:
public class ShipOrderValidator : AbstractValidator<ShipOrderCommand> {
      public ShipOrderValidator() {
            RuleFor(command => command.OrderId).SetValidator(new OrderValidator());  // types don't match
      }
}

I would be fine with looking up the object and creating the validator and calling it, but I don't know if there is a way to get the validation errors back into the results with everything else.  The Custom method only expects one ValidationResult to be returned so I don't think I could do that.  Is there a way to do what I'm trying to do?

I've managed to make it work by adding a intermediate validator that overrides the Validate.  Is there a better way?
    public class OrderValidatorWrapper : AbstractValidator<string>
    {
        private readonly IEntityStore _entityStore;

        public OrderValidatorWrapper(IEntityStore entityStore)
        {
            _entityStore = entityStore;
        }

        public override async Task<ValidationResult> ValidateAsync(ValidationContext<string> context, CancellationToken cancellation = new CancellationToken())
        {
            var validator = new OrderValidator();
            var order = await _entityStore.GetOrder(context.InstanceToValidate);
            var results = validator.Validate(order);
            return results;
        }
    }

Yes that's probably the best way to do it, although typically you'd use a
custom ProperyValidator implementation rather than having the
OrderValidatorWrapper inherit from AbstractValidator.
On Tuesday, 13 September 2016, Ted Elliott<EMAIL_ADDRESS>wrote:

I've managed to make it work by adding a intermediate validator that
overrides the Validate. Is there a better way?
public class OrderValidatorWrapper : AbstractValidator<string>
{
    private readonly IEntityStore _entityStore;

    public OrderValidatorWrapper(IEntityStore entityStore)
    {
        _entityStore = entityStore;
    }

    public override async Task<ValidationResult> ValidateAsync(ValidationContext<string> context, CancellationToken cancellation = new CancellationToken())
    {
        var validator = new OrderValidator();
        var order = await _entityStore.GetOrder(context.InstanceToValidate);
        var results = validator.Validate(order);
        return results;
    }
}

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/JeremySkinner/FluentValidation/issues/326#issuecomment-246807019,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAFgEkR-NyKDRXzn-C2f030o1dAmZapEks5qpwJpgaJpZM4J8DZU
.


specifying tmp_dir for CombineVariants

I got an error in the CombineVariants step:
##### ERROR ------------------------------------------------------------------------------------------
##### ERROR A USER ERROR has occurred (version 3.6-24-g59fd391):
##### ERROR
##### ERROR This means that one or more arguments or inputs in your command are incorrect.
##### ERROR The error message below tells you what is the problem.
##### ERROR
##### ERROR If the problem is an invalid argument, please check the online documentation guide
##### ERROR (or rerun your command with --help) to view allowable command-line arguments for this tool.
##### ERROR
##### ERROR Visit our website and forum for extensive documentation and answers to
##### ERROR commonly asked questions https://www.broadinstitute.org/gatk
##### ERROR
##### ERROR Please do NOT post this error to the GATK forum unless you have really tried to fix it yourself.
##### ERROR
##### ERROR MESSAGE: An error occurred while working with the tmp directory /tmp. You can specify -Djava.io.tmpdir=X on the command line (before the -jar argument) where X is a directory path, to use a more appropriate temporary directory. Note that this is a JVM argument, not a GATK argument. The exact error was Unable to create temporary file for stub: org.broadinstitute.gatk.engine.io.stubs.VariantContextWriterStub
##### ERROR ------------------------------------------------------------------------------------------

This step calls gatk-framework, and looks like java option -Djava.io.tmpdir is not set, so java uses /tmp by default. It was fine with small data set, but this error occurs when the vcf files to combine are large, probably because /tmp runs out of space.

Sorry about the issues and thank you for the report. Apologies, we did miss setting the Java temporary directories and I pushed a fix to resolve this. If you update to the latest development version:
bcbio_nextgen.py upgrade -u development

it will hopefully work cleanly for you. Thanks again.


[FIX] proxy.py: fix proxy for python 3.11

on our CI we got the following error during tests:
AttributeError: module 'asyncio' has no attribute 'coroutine'. Did you mean: 'coroutines'?
Traceback (most recent call last):
  File "/usr/local/bin/proxy", line 25, in <module>
    @asyncio.coroutine
     ^^^^^^^^^^^^^^^^^

As stated in the python documentation, https://docs.python.org/3.10/library/asyncio-task.html#asyncio.coroutine:

This decorator should not be used for async def coroutines.

and

Deprecated since version 3.8, will be removed in version 3.11: Use async def instead.

Info @wt-io-it

also updated black in pre-commit to 22.3.0 to prevent:
Traceback (most recent call last):
  File "/home/runner/.cache/pre-commit/repoil7v2omk/py_env-python3/bin/black", line 8, in <module>
    sys.exit(patched_main())
  File "/home/runner/.cache/pre-commit/repoil7v2omk/py_env-python3/lib/python3.10/site-packages/black/__init__.py", line 6606, in patched_main
    patch_click()
  File "/home/runner/.cache/pre-commit/repoil7v2omk/py_env-python3/lib/python3.10/site-packages/black/__init__.py", line 6595, in patch_click
    from click import _unicodefun  # type: ignore
ImportError: cannot import name '_unicodefun' from 'click' (/home/runner/.cache/pre-commit/repoil7v2omk/py_env-python3/lib/python3.10/site-packages/click/__init__.py)

see https://stackoverflow.com/a/71674345/925125

Sorry, I didn't see it and fix it in #18


Improve the API of AbstractExpected and its descendants

Commands and events verification
The API of MessageProducingExpected has some flaws:

producesCommands(Class<?>... commandClasses) doesn't verify the order of command classes. The ability to verify the order should be added.
producesCommands(Class<?>... commandClasses) doesn't provide a way to verify the state of commands. The overloaded version — producesCommands(CommandMessage... commands) would be handy.

The same is true for the producesMessages method.
Rejections verification
The API for the rejections verification only present in CommandHandlerExpected, but it is missing in CommanderExpected. It is tricky place and ideally the API should be available only in PmCommandOnCommandTest and not available in PmCommandOnEventTest.
And again, CommandHandlerExpected has only throwsRejection(Class<? extends Message> rejectionClass). The overloaded version, which accepts ThrowableMessage would be handy.
State verification
And the possible impovement for the state verification:
expectThat(entity).hasState(Message)

Now, it is not always convenient use hasState(Consumer validator).

@alexander-yevsyukov here is the inconveniences I have faced with test utils.

@dmytro-grankin you can test rejections using CommandHandlerExpected

@vlad-lubenskyi I updated the issue, CommanderExpected misses the feature with rejections.

As this test framework is now deleted, this issue is no longer relevant.


proposing changes for 0-byte thumb removal and placeholder/fallback

Regarding #599
as requested. please let me know if i can do better.

Thank you for your pr.


update helsinki business college domain and institution's name

Official website URL: https://www.bc.fi/
Some of the current available IT training programs:
in Finnish - 1 year program: https://www.bc.fi/koulutukset/ict-koulutus/
in English - 9 months: https://en.bc.fi/qualifications/full-stack-web-developer-program/
Contact info: https://en.bc.fi/visit-us/

@tienhoangpham Pull request merged. Thank you for the update!


feat(#22): install.sh with additional information

@SteinRobert Maybe you can check this PR as I do not have much shell scripting skills :D . I am not sure if this works on MAC, too. For me it printed the additional information with icons on Linux.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 63.071%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
994

Relevant Lines:
1576

💛  - Coveralls


Pocket Casts streaming no audio when EQ Extension enabled

No audio in Pocketcasts.com web player when this extension is enabled.

I published new version (<IP_ADDRESS>). You should get the update in an hour or so.
Can you please test it on pocketcasts.com (I don't have account there) and let me know if its working or not?

This actually made things worse for PocketCasts' player.  In the previous version, the player would play the episode but without audio.  Now playback fails:

You can disable EQ per page. Just "right click" on the PocketCasts page and disable EQ.

This will disable EQ from the page.
Let me know if it works pls.

Yes, that worked.  Thank you!


HttpExtensions.PrepareJsonPayload should use JsonContent not StringContent

Description
Memory usage and performance would improve if this library used JsonContent instead of StringContent when serializing to JSON for use with HttpClient. This is because JsonContent serializes directly to UTF-8 bytes which are written directly to the HttpClient output stream without storing the entire document in memory at once. Using StringContent forces the object to be serialized to a UTF-16 string in memory, which will need to be garbage-collected later, and then forces the UTF-16 string to be converted to UTF-8 bytes before it can be written to the HttpClient output stream.
Basic example
private static StringContent PrepareJsonPayload<T>(T body, JsonSerializerOptions options = null)
{
    options ??= Constants.JsonSerializerOptionsWriteNulls;
    var payload = JsonContent.Create(body, new MediaTypeHeaderValue("application/json"), options);
    payload.Headers.ContentType.CharSet = string.Empty;

    return payload;
}

Hi @jtmueller,
Thank you so much for bringing this up! 🔥 It does indeed seem like a very good improvement although I am not familiar with this subject.
It works perfectly if I actually replace the function with your code:
        private static JsonContent PrepareJsonPayload<T>(T body, JsonSerializerOptions options = null)
        {
            options = options ?? Constants.JsonSerializerOptionsWriteNulls;
            var payload = JsonContent.Create(body, new MediaTypeHeaderValue("application/json"), options);
            payload.Headers.ContentType.CharSet = string.Empty;

            return payload;
        }


Build fails with malformed module path

I cant install anymore using the xcaddy build. Last year it works fine.
Go version go version go1.13.8
xcaddy version v0.2.0
Here are the logs
2022/02/09 08:58:08 [INFO] Cleaning up temporary folder: /tmp/buildenv_2022-02-09-0858.346512074
2022/02/09 08:58:08 [FATAL] exit status 1
azureuser@pwf:~/caddy-l4$ sudo xcaddy build --with github.com/mholt/caddy-l4
2022/02/09 08:58:12 [INFO] Temporary folder: /tmp/buildenv_2022-02-09-0858.766168378
2022/02/09 08:58:12 [INFO] Writing main module: /tmp/buildenv_2022-02-09-0858.766168378/main.go
2022/02/09 08:58:12 [INFO] Initializing Go module
2022/02/09 08:58:12 [INFO] exec (timeout=10s): /usr/bin/go mod init caddy
go: creating new go.mod: module caddy
2022/02/09 08:58:12 [INFO] Pinning versions
2022/02/09 08:58:12 [INFO] exec (timeout=0s): /usr/bin/go get -d -v github.com/caddyserver/caddy/v2
2022/02/09 08:58:18 [INFO] exec (timeout=0s): /usr/bin/go get -d -v github.com/mholt/caddy-l4
go: finding github.com/mholt/caddy-l4 latest
2022/02/09 08:58:21 [INFO] Build environment ready
2022/02/09 08:58:21 [INFO] Building Caddy
2022/02/09 08:58:21 [INFO] exec (timeout=0s): /usr/bin/go mod tidy
caddy imports
        github.com/caddyserver/caddy/v2/modules/standard imports
        github.com/caddyserver/caddy/v2/modules/caddyhttp/standard imports
        github.com/caddyserver/caddy/v2/modules/caddyhttp/encode/zstd imports
        github.com/klauspost/compress/zstd tested by
        github.com/klauspost/compress/zstd.test imports
        github.com/klauspost/compress/zip imports
        io/fs: malformed module path "io/fs": missing dot in first path element
caddy imports
        github.com/caddyserver/caddy/v2/modules/standard imports
        github.com/caddyserver/caddy/v2/modules/caddyhttp/standard imports
        github.com/caddyserver/caddy/v2/modules/caddyhttp/encode/zstd imports
        github.com/klauspost/compress/zstd tested by
        github.com/klauspost/compress/zstd.test imports
        github.com/klauspost/compress/zip tested by
        github.com/klauspost/compress/zip.test imports
        testing/fstest: malformed module path "testing/fstest": missing dot in first path element
2022/02/09 08:58:23 [INFO] Cleaning up temporary folder: /tmp/buildenv_2022-02-09-0858.766168378
2022/02/09 08:58:23 [FATAL] exit status 1

maybe will look into this again later, for now I switched my vps to digital ocean and build is fine.

For the record, your Go version is old. That's the issue.


User Controller

[x] GetUser users/{id}
[x] GetBooks users/{id}/books
[x] UpdateUser users/{id}
[x] DeleteUser users/{id}
[ ] SuspendUser users/{id}/suspend

Currenly, the option of suspending a user is missing from our ER diagram and entities. Should we still add this?
If yes, when, how and why should the IsSuspended flag be set?

Currenly, the option of suspending a user is missing from our ER diagram and entities. Should we still add this? If yes, when, how and why should the IsSuspended flag be set?

Good question 🤔
Maybe we could just use the soft delete feature to simulate this?
And just "undelete" the account if a suspension is lifted? 🤷

Maybe. However, I had the impression that a suspended user would still be able to login to download already purchased content - but unable to do anything else within the app(?). Putting a deleted flag on their account would prevent them from doing that. 🤔

Yea. True 🤔
Should we ditch the suspension featuere or implement it?
If we implement it we would need to have a flag, I guess.
Or and AccoutStatus field that can hold; Active, Deleted, Suspended?

Hmm, we could wait for a bit to get the core parts of the application running first. But for when we would like to implement it; how about if we added another AccountType for a suspended user?

I think that could work fine, actually.
Especially because we, by doig that, can prohibit access to several things, including subscribtion libraries 👌

Adding it as another AccountType sounds like a good plan.


⚠ Bofrost.at has degraded performance

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

HTTP code: 200
Response time: 1670 ms

Resolved: Bofrost.at performance has improved in 156e1e1 after 13 minutes.


Green and Blue is switched when drawing in 3D

We talked about this on the IRC, shortly after you left I found the actual issue.
When drawing a 3D object (cube in my case), the green and blue colors are switched up. This does not happen when drawing a 2D object (an image in my case).
Test case:
setColorInt(60, 30, 0) on a 2D object will be brown
setColorInt(60, 0, 30) on a 3D object will be brown as well

Whoops, it's not the engine that switched it up ;)


Need a readme file

Just adding the release note from the first build should be sufficient.
"Copy this DLL in your Bizhawk external tool directory. Then open the tool that should appear on the external tool menu."

Done, thank for the input :)


uv: 0.1.2 -> 0.1.3

Description of changes
Diff: https://github.com/astral-sh/uv/compare/0.1.2...0.1.3
cc @marsam

Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 289501 run on x86_64-linux 1

2 packages built:

uv
uv.dist


Is gl3w available as a library by default in Ubuntu?

For now, we have to add gl3w.c into the project as a source file. It is annoying sometimes if we have many an OpenGL projects to create because we have to repeat this adding work for each new project and the compiler has to compile it again and again, generating exactly the same binary code which resides in every executible. GLEW, on the other hand, is a library available by default in Ubuntu. All we need to do to load OpenGL functions is add a linking flag for it. Then all the functions in GLEW are ready to use. Further, only one copy of memory and file system space is consumed for GLEW. Is this the case for gl3w? That is, is gl3w available as a (shared) library in Ubuntu by default?

If you require a shared library that provides the functionality of gl3w, just compile it with
gcc -shared -fPIC -o libgl3w.so -I ../include/ gl3w.c, then reference the folder of libgl3w.so in your projects.
I really like gl3w for not beeing a shared library, as it is small enough to not be a burden when used for static linking, also it removes a dependency so i don't require gl3w to be installed on other machines (with outdated versions or similar)

I'm afraid you misunderstand my question. I'm not asking what you are trying to answer.

Ubuntu does not currently package gl3w; someone would need to take responsibility for creating and maintaining the package at Ubuntu's side. You can install it locally if you like, as MasterQ32 explained.

@tombsar: Thank you for the clear reply.

Closing this. Please reopen if you have further questions.


Service Road is disconnected from other roads and paths -- vs. taxiway

Description
Service road connected to a taxiway (SFO airport) causes an warning.
But what else does one expect one to connect it to?
Screenshots

What you’ve got there is not quite a service road, more like an abandoned:highway=service. There are service roads all around the edges of the tarmac, but without access to airport plans that are restricted for security reasons, we can’t be sure how they ultimately connect to the service roads on the other side of the tunnels under the terminals. There are warnings on those service roads, but I think it’s OK to ignore them.
As to your broader point, sometimes an airport does have a completely disconnected network of service roads inside the security perimeter. The validator can’t really know for sure that this is the case, but on balance, the warning is still useful for the cases where the roads aren’t disconnected in reality.
Remember to tag any airport service roads you identify with appropriate access tags, such as access=private private=employees. Geocoders have a tendency to make routers follow these service roads onto the tarmac.

Actually you can see the few I tagged today at the San Francisco Airport. First I was uneasy about dragging them into runways in the first place because that's not how they look on the air photo anyway. But we were always taught to connect things to each other. And then private sounded like a private company so I tagged him as a access = official. But I guess I'm just going to take a break from doing this today.

Let’s continue the discussion about access tagging on this changeset, since it isn’t directly related to iD.


docs(typeahead): tune up

I put one of the existing demos with min-length 0 instead of a new one.

LGTM


Strange behaviour...lately

I use the RXBus with String-keys. It was working fine.
But since yesterday I recognized that I run into key-events where I shouldn't.
I use this (an example):
RXBus.get().sendEvent("Account saved", BusKeysDef.SAVED_ACCOUNT);
and I also run into:
RXSubscriptionManager.addSubscription(this, RXBusBuilder.create(String.class).withBusMode(RXBusMode.Main)                         .withKey(BusKeysDef.CREATED_ACCOUNT)                         .withOnNext(s -> invalidateOptionsMenu())                         .buildSubscription() );
Sorry for the formatting

I couldn't tell if it's since yesterday or not. I even changed a lot - but nothing with the RXBus....
Should I try integer instead of String keys?

Maybe something with the version of Rxjava....

I'll update the dependencies when I come home tomorrow. Not sure if this is the issue for you though...
What do you actually mean? That you retrieve wrong events in subscriptions? Events that do not match the key?

I retrieve events which don't match the key.

And some I should get for a key, but I don't get them.

As you can see in the RXBus class I use two simple Hashmaps with keys of type Class or of the type RXQueueKey. As far as I see, if yu get now wrong events, this means that something in the hash code and equals functions of the RXQueueKey is wrong (as this is used to distinguish between which event should be send to which observable) in the RXBus class....
Using integer or strings as keys does not make any difference, the RXQueueKey is wrapping those two to offer a common class that the bus can use to avoid writing every function for each type again...
I looked at the RXQueueKey class and can't see any problems in the hash and equal functions now....

Just saw it. Hash code calculation is wrong in the RXQueueKey class. I'll think this may be the cause for your problem... I'll fix that tomorrow...

Thanks.

@MFlisar Please take a look<EMAIL_ADDRESS>

Actually, sending events to the corresponding subjects is delegated via the HashMaps and the corresponding keys of type RXQueueKey (https://github.com/MFlisar/RXBus/blob/master/lib/src/main/java/com/michaelflisar/rxbus/rx/RXQueueKey.java).
This means, getting the correct Subject is only depending on the RXQueueKey, which again means, it's only depending on the hash and equal function of this class:
https://github.com/MFlisar/RXBus/blob/master/lib/src/main/java/com/michaelflisar/rxbus/rx/RXQueueKey.java#L36
https://github.com/MFlisar/RXBus/blob/master/lib/src/main/java/com/michaelflisar/rxbus/rx/RXQueueKey.java#L56
I still don't see any mistake there.
I uploaded a new version with the adjustments for the newest rx java version (some things in the RxValve had changed and I did not update the repo yet) and some other changes. Maybe this was a problem for you...
Rest

I don't see anything that could cause emitting events to the wrong subscriptions, the links above show the code that are relevant imho (the hash and equal function), maybe you see a mistake in there?
Have not yet changed HashMap to ArrayMap, I'm not sure if I should. It would mean adding a dependency to the support library... Which currently isn't necessary...

Additional
I'll add a short readme about some breaking changes in the next few minutes to the readme.... I removed some interfaces and changed one main interface.... The usage of the library get's simplier with this changes though...

I'll try it tomorrow and give feedback.

This is what you have to do: https://github.com/MFlisar/RXBus/blob/master/MIGRATION.md

RXSubscriptionManager.addSubscription isn't static anymore (unsubscribe too). Is there a reason?

I was mixing singleton and static functions... Just wanted to clear that (did that already long ago in my code). Of course, there is no reason why I couldn't offer static functions.
Added them again in v0.7...

@MFlisar && v0.7 -> Thanks :)
About the behaviour: Maybe I found something.
I have a BaseActivity and an Activity (extends BaseActivity). In both classes I created RXBus-subscriptions. This was causing problems like I wrote.
Now I put ALL RXBus-subscriptions out of my BaseActivity and in the "normal" Activity. Now all went fine.
I have some RXBus-subscriptions which I want to have for all activities, so I would like to put them in the BaseActivity to not duplicate code.

Fast workaround would be writing a function in the base class like initRXBusSubscriptions() and call it in your sub activities...
I'm using base classes as well and make subscriptions in them (and in the inherited classes as well) and did not have a problem yet. I'm rarely using the keys though, mostly I bind everything to classes only
I have no idea why you get wrong events, but losing events may happen, because you may create keys for the BaseActivity instead of the extended Activity when calling RXBusBuilder.queue(...)?

Sorry, I was wrong. Of course the builder creates keys for the event class and the Integer key you pass in.
I was thinking about the RXSubscriptionManager when I wrote that...

I've added what you are doing to my demo here: https://github.com/MFlisar/RXBus/blob/master/demo/src/main/java/com/michaelflisar/rxbus/demo/PauseAwareActivity.java#L29 Seems to work so far.
Can you somehow reproduce your problem in the demo?

I use .queue(this)

I added this to the demo. And added two subscriptions to https://github.com/MFlisar/RXBus/blob/master/demo/src/main/java/com/michaelflisar/rxbus/demo/PauseAwareActivity.java#L29
And I send a few events in onCreate, before/after onResume and before/after onPause in the DemoActivity to the bus (see this function: https://github.com/MFlisar/RXBus/blob/master/demo/src/main/java/com/michaelflisar/rxbus/demo/DemoActivity.java#L184), the two subscriptions in the base activity are still working as expected...

I tried your example. It's working.
Now play with it. ;)

I can't reproduce the error.
I changed your example to fit better. Also no error.
I'll close this issue for now. If I have any news about this, I'll inform you.
Thanks for your support.


Added Animation in middle and completed stepper map

Added Animation in middle and added finish, active, remain stepper different color completed status mapping

Sure...i will resolve the changes and give you a demo video

Demo Video:  https://drive.google.com/file/d/1B68fOfAs12JQIGop093w1BMkqNaPsp32/view?usp=sharing


Chore (action from sig-chain meeting): Delete sig-network-upgrades directory

Signed-off-by: Anil Murty<EMAIL_ADDRESS>

reopening to merge


Suppress method redefined warnings

Goal
This gem has Ruby's warnings. This change will suppress them.
Reproduce
$ bundle exec ruby -w -Ilib -rbugsnag -e ''
/home/pocke/ghq/github.com/bugsnag/bugsnag-ruby/lib/bugsnag/configuration.rb:54: warning: method redefined; discarding old track_sessions
/home/pocke/ghq/github.com/bugsnag/bugsnag-ruby/lib/bugsnag/configuration.rb:55: warning: method redefined; discarding old track_sessions=
/home/pocke/.rbenv/versions/trunk/lib/ruby/gems/2.6.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:288: warning: method redefined; discarding old max_attempts
/home/pocke/.rbenv/versions/trunk/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/core_ext/module/attribute_accessors.rb:67: warning: previous definition of max_attempts was here
/home/pocke/.rbenv/versions/trunk/lib/ruby/gems/2.6.0/gems/delayed_job-4.1.5/lib/delayed/worker.rb:292: warning: method redefined; discarding old max_run_time
/home/pocke/.rbenv/versions/trunk/lib/ruby/gems/2.6.0/gems/activesupport-5.2.2/lib/active_support/core_ext/module/attribute_accessors.rb:67: warning: previous definition of max_run_time was here

See the first two lines (other lines are dependency gem's warnings).
Changeset
This pull request does not change any interface.
Tests
No tests added.
Discussion
Alternative Approaches

Outstanding Questions
nothing

Linked issues
nothing
Review
For the submitter, initial self-review:

[ ] Commented on code changes inline explain the reasoning behind the approach
[ ] Reviewed the test cases added for completeness and possible points for discussion
[ ] A changelog entry was added for the goal of this pull request
[x] Check the scope of the changeset - is everything in the diff required for the pull request?
This pull request is ready for:

[ ] Initial review of the intended approach, not yet feature complete
[ ] Structural review of the classes, functions, and properties modified
[x] Final review

For the pull request reviewer(s), this changeset has been reviewed for:

[ ] Consistency across platforms for structures or concepts added or modified
[ ] Consistency between the changeset and the goal stated above
[ ] Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
[ ] Usage friction - is the proposed change in usage cumbersome or complicated?
[ ] Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
[ ] Concurrency concerns - if components are accessed asynchronously, what issues will arise
[ ] Thoroughness of added tests and any missing edge cases
[ ] Idiomatic use of the language

Thanks for the contribution @pocke


Update the picture..

Hi there,
Any possibilities to updating this picture:
https://docs.microsoft.com/en-us/microsoftteams/media/direct-routing-media-bypass-6.png
To something like this:

Not sure if you agree, but in my mind the line coming from user is not crystal clear where it actually goes.

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

ID: 10b198f4-9576-a14d-4359-1e8cc0319cda
Version Independent ID: ba7c3252-21d4-9be1-2a84-de2d51646f7b
Content: Plan for media bypass with Direct Routing - Microsoft Teams
Content Source: Teams/direct-routing-plan-media-bypass.md
Service: msteams
GitHub Login: @CarolynRowe
Microsoft Alias: crowe

Hi @get-itips,
Excellent point, and no I did not thought that option at all :D
But how about the text below that picture: "...with TR use..". Also the whole section was speaking about MR and TR use. In that sense is the direct connection out of subject?

Honestly, I do not think is out of subject, I think that it is included for completeness to clarify that scenario were it might not be in the path (look in the table under the graphic)


Faq updated?

Hello i have tried to add some notifications but no files are existing in /include
I want to add notification for email..but the code is updated and faq is not...
Help me
https://filegator.io/faq/

Can I add some actions after file is uploaded? like send an email notification or change the file-name?
Yes, look for this line in filegator/include/blueimp/server/php/upload.class.php
move_uploaded_file($uploaded_file, $file_path);
and add you custom code after or before that line, something like this email notification:
<EMAIL_ADDRESS>'Subject', 'New file uploaded');
You can access current user’s parameters such as username, email, homedir or permissions via $_SESSION[‘simple_auth’] variable. See this example:
<EMAIL_ADDRESS>'Subject', 'New file uploaded by the user: '.$_SESSION['simple_auth']['username']);
More complex example using current SMTP configuration:
$gator = new gator();
<EMAIL_ADDRESS>'Notification', 'New file uploaded by the user: '.$_SESSION['simple_auth']['username']); // admin
$gator->sendEmail($_SESSION['simple_auth']['email'], 'Notification', 'New file uploaded: '.$file->name); // user

This faq is for filegator older versions <7.0

I know that the FAQ for older filegator versions <7.0 lists a method of sending notifications that no longer works ... BUT, how should (or can) email notifications be implemented now?
It looks like the MonoLog system could be used to send such emails, but I am not a developer and have no idea how to implement such a function.
To be clear, all I want to do is send an email to an admin that says the equivalent of "Some files have been uploaded to your repository". I do not need the files or the user to be identified since I am using Filegator for Guest uploads only.


sub-container assignment

e.g. u1.params() = u2.params()
We might be able to do segments generically.

Does this already work?

Let me check

It doesn't work yet :(

No custom operator= is defined and assign(other.begin(), other.end()) doesn't work because *other.begin() is a different type.
The default operator= will just copy the underlying pointer to the URL, which I think is expected behavior?
We can't delete operator= because params is a reference-like type. So this is going to be the final behavior.

can we put & or && on operator= to prevent this from compiling:
u1.params() = u2.params();

But still allow this to compile:
auto p = u1.params();
p = u2.params();

?

A single & works: https://godbolt.org/z/xxbbEMMx1


CLOUD-795: Reserved ip on gcp is not unique, if two cluster created with the same name

@doktoric pls review

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/1248/


Slap-editor can't install on RHEL 5

I'm trying to run slap-editor on RHEL 5, but I get the following error when running npm install -g slap@latest:
npm ERR! Linux 2.6.18-164.el5
npm ERR! argv "node" "/usr/bin/npm" "install" "-g" "slap@latest"
npm ERR! node v0.10.41
npm ERR! npm  v3.5.3
npm ERR! path /usr/lib/node_modules/.staging/abbrev-974dd79d
npm ERR! code ENOENT
npm ERR! errno 34

npm ERR! enoent ENOENT, rename '/usr/lib/node_modules/.staging/abbrev-974dd79d'
npm ERR! enoent ENOENT, rename '/usr/lib/node_modules/.staging/abbrev-974dd79d'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! Please include the following file with any support request:
npm ERR!     /home/my-user/Downloads/node-v5.4.0/npm-debug.log

Figured it out, I had upgraded my npm using npm, and I think that was causing issues on RHEL5. So I re-installed Node and NPM to 0.10, and then attempted to install slap again and it worked.

Glad to hear it @didibus!


fix: A "less ugly" loading card for the carousel

Hi everyone,
The carousel will soon leave us…
… but less try to de-uglify the loading state:

Top indicator added
Top margin was missing
Card shadow was missing

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

Project coverage is 7.01%. Comparing base (4d9c7fc) to head (b5fb7e8).
Report is 455 commits behind head on develop.

Files with missing lines
Patch %
Lines

...rds/product_cards/smooth_product_card_loading.dart
0.00%
64 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##           develop   #5835      +/-   ##
==========================================
- Coverage     9.54%   7.01%   -2.54%
==========================================
  Files          325     413      +88
  Lines        16411   22535    +6124
==========================================
+ Hits          1567    1580      +13
- Misses       14844   20955    +6111

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

When the product is loading, it should be gray, not orange.
You can add some other animation if you want.

After discussing this morning, I will implement another card


fix(releases_test.go): uncomment integration tests for releases

makes progress on #183

note that it's expected that these pass before merge


feat: support 'chevron' library for templating as jinja alternative

SUMMARY
chevron is a python implementation of mustache.js, and seems much safer by scope (project tagline is "Logic-less templates" !) than jinja2 could ever be.
While the library is not super active lately, it appears to be feature complete and is easy to review from a security standpoint as it's a few short-ish modules. Overall the whole library is <1k lines.
This PR adds support for the chevron library behind a feature flag.
SHORTCOMINGS

one shortcoming is the html escaping that we have to work around using triple curlies ie:{{{ ... }}}. I submitted a PR to enable turning this off in our context here https://github.com/noahmorrison/chevron/pull/81
accessing a position in an array seems impossible in the release using the undocumented {{mylist.0}} mustache feature, but works in chevron's master, highlighting the fact that the lib hasn't released to PyPI in a long time
given the security risks here, we should do a full audit of chevron's [small] codebase, and pin the lib. Bumping the lib should force a deep analysis of the changelog/changeset to make sure there are no security regressions

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

Codecov Report

Merging #11617 (0d682a0) into master (92a9acd) will decrease coverage by 8.11%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #11617      +/-   ##
==========================================
- Coverage   62.26%   54.15%   -8.12%
==========================================
  Files         873      406     -467
  Lines       42238    14289   -27949
  Branches     3959     3679     -280
==========================================
- Hits        26301     7738   -18563
+ Misses      15757     6375    -9382
+ Partials      180      176       -4

Flag
Coverage Δ

cypress
54.15% <ø> (?)

javascript
?

python
?

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

Impacted Files
Coverage Δ

...uperset-frontend/src/dashboard/util/dnd-reorder.js
0.00% <0.00%> (-100.00%)
:arrow_down:

...rset-frontend/src/dashboard/util/getEmptyLayout.js
0.00% <0.00%> (-100.00%)
:arrow_down:

...dashboard/components/resizable/ResizableHandle.jsx
0.00% <0.00%> (-100.00%)
:arrow_down:

.../src/dashboard/util/getFilterScopeFromNodesTree.js
0.00% <0.00%> (-93.48%)
:arrow_down:

...src/dashboard/components/gridComponents/Header.jsx
10.52% <0.00%> (-86.85%)
:arrow_down:

...rc/dashboard/components/gridComponents/Divider.jsx
13.33% <0.00%> (-86.67%)
:arrow_down:

...ontend/src/dashboard/util/getDashboardFilterKey.ts
14.28% <0.00%> (-85.72%)
:arrow_down:

...set-frontend/src/views/CRUD/welcome/EmptyState.tsx
5.71% <0.00%> (-82.10%)
:arrow_down:

...et-frontend/src/components/ListView/ActionsBar.tsx
11.11% <0.00%> (-81.20%)
:arrow_down:

...et-frontend/src/components/Menu/LanguagePicker.tsx
0.00% <0.00%> (-80.00%)
:arrow_down:

... and 773 more

Continue to review full report at Codecov.

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

This looks good upon cursory review. I'll look into the lib a bit more deeply.

FYI, offered help to maintain chevron here: https://github.com/noahmorrison/chevron/issues/82

On another note, have you looked into JinjaSQL? I've used it in some Python scripts before, but not sure whether it is safer than the raw jinja.

@ktmud Thanks for the suggestion! It seems with JinjaSQL "You can use the full power of Jinja templates," which is what we're trying to move away from (the ability to execute arbitrary python code in user-generated input).

@ktmud didn't spend much time but that lib seems to be doing very little on top of jinja as highlighted in the single, very simple <200 LoC module here:
https://github.com/hashedin/jinjasql/blob/master/jinjasql/core.py

It seems the only thing it does it to parameterize SQL queries, which at least reduces the risk of SQL injections (if there's ever such risk within Superset).

I think one thing we can do is to limit the things we expose to Jinja context---and the first thing we should do is to always expose raw functions instead of class objects (i.e., replace hive.latest_partition and presto.latest_partition with latest_partition).

One concern with chevron is that it allows loading of "partials" from the filesystem. ex:
chevron.render('Config: {{> superset_config }}', {}, '.', 'py')
>>> 'Config: import os\nfrom superset.stats_logger import DummyStatsLogger\nfrom cachelib.file...'

While this can be mitigated since we control how chevron.render is called, it does not appear that it can be disabled.

@ktmud The intention is the prevent security issues like CVE-2020-13948. We should absolutely move away from exposing class objects to the Jinja context, but this doesn't prevent access to Python internals. We're relying heavily on Jijna's Sandboxing to prevent RCE, which feels very brittle.

@ktmud The intention is the prevent security issues like CVE-2020-13948. We should absolutely move away from exposing class objects to the Jinja context, but this doesn't prevent access to Python internals. We're relying heavily on Jijna's Sandboxing to prevent RCE, which feels very brittle.

I think CVE-2020-13948 has the same root cause as the other security bug we had, which is exposing class objects or modules that allow unsafe chained access to things we don't want to expose. As long as we stop doing that, is there anything else we should worry about?
A lot of OSS use Jinja as their template engine, including Airflow and dbt, is there anything we can learn from them to make Jinja more secure?

@ktmud The difference here is that we're processing user-generated input, while Airflow and dbt are operating on templates defined in code. Unclear how the hosted versions of these apps (Astronomer and dbt Cloud) handle Jinja security.

To be fair dbt is also very much user-generated input. Anyone can login to the dbt and write templated code in the IDE: https://docs.getdbt.com/docs/running-a-dbt-project/using-the-dbt-ide

Looks like jinja changed their narrative around the sandboxed mode recently (?). I'm pretty sure they used to advise against using Jinja to execute untrusted strings not that long ago.

Out of curiosity we could look at DBT's code to see how they secure their sandbox.

Clearly the compatibility with DBT AND Airflow through Jinja is a really important factor. People want to be able to iterate and go back and forth between these tools.

I'll take a stab at making the jinja implementation more secure in a separate branch.

Attempt at making Jinja more secure: https://github.com/apache/incubator-superset/pull/11704

Superseded by #11704


WIP: Calibration Interrupt

I'd attempted this before and it was surprisingly messy so guidance/debate is welcome. @larsoner @drammock @rkmaddox
The goal is to be able to re-calibrate during an experiment when a given key is pressed.
Things to consider:

ec has the button press info but el needs to be called -- so which should the function live in? I'd previously gotten it to "work" with the function living in ec and importing el to ec after both were initialized but it was pretty gross.
Which functions (if any) should automatically check for re-calibration? We'd want to be able to re-calibrate before a trial if the subject isn't able to get fixation (and then probably abort the rest of the trial after calibration) and also between trials (so we could re-calibrate after a break).
Any key press functions in input controllers like _retrieve_keyboard_events or _correct_presses will need to recognize the calibration key.

@larsoner It looks like circle build is working

Which functions (if any) should automatically check for re-calibration? We'd want to be able to re-calibrate before a trial if the subject isn't able to get fixation (and then probably abort the rest of the trial after calibration) and also between trials (so we could re-calibrate after a break).

I don't think any should, I think you should make a function to do this.
It should probably be a method of EyelinkController, because it already contains a reference to its parent ec, so it can call the proper ec polling function.

Any key press functions in input controllers like _retrieve_keyboard_events or _correct_presses will need to recognize the calibration key.

This sounds too messy, as it requires burdening generic press-event code with paradigm-specific checks. A cleaner design is probably to know that there is some interval during which a recalibration can be requested, and press the button then.

Codecov Report

Merging #359 into master will decrease coverage by 17.78%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           master     #359       +/-   ##
===========================================
- Coverage   89.07%   71.28%   -17.79%
===========================================
  Files          44       44
  Lines        5682     5683        +1
  Branches      917      917
===========================================
- Hits         5061     4051     -1010
- Misses        426     1453     +1027
+ Partials      195      179       -16

Have not tested this with an actual eyelink connected yet and have not added tests.
I've started with what I think the minimum scope of ec.on_every_wait() should be -- it's only included in wait_secs in _utils. To my knowledge this gets called for ec.wait_secs() and at the beginning of functions that have a min_wait parameter. The next thing is whether we want wait functions to be called by ec.screen_prompt(), ec.wait_one_press(), etc. The only other place I can think to include it would be during el.wait_for_fix() but doing so would call for aborting a trial and probably should be done on an experiment by experiment basis.

Have not tested this with an actual eyelink connected yet and have not added tests.
I've started with what I think the minimum scope of ec.on_every_wait() should be -- it's only included in wait_secs in _utils. To my knowledge this gets called for ec.wait_secs() and at the beginning of functions that have a min_wait parameter. The next thing is whether we want wait functions to be called by ec.screen_prompt(), ec.wait_one_press(), etc. The only other place I can think to include it would be during el.wait_for_fix() but doing so would call for aborting a trial and probably should be done on an experiment by experiment basis.

My feeling is that putting the functions into the base waiting function (which I think is wait_secs ?) is the way to do it. That way every function that waits at all, including the ones you listed, calls the on_every_wait functions at some interval.

Ahh, I see what you're saying. Functions like wait_one_press don't use wait_secs, so they'll also require modification. That's a tough one. I think those should also do the on_every_wait functions? Or maybe have a flag that defaults to True? Is there ever a reason we wouldn't want them to run?

Yes, wait_secs is called during those functions in _init_wait_click or _init_wait_press for the duration of min_wait but then the remainder of the waiting is controlled by a while loop that depends on whether there has been a click/a live key pressed and the max_wait.
Upshot, it should check at the beginning of those functions (but actually doesn't in my test script).

Another question is whether the recalibration should show the calibration prompt or not. Since the default behavior of el.calibrate() is to show the prompt, that is what I have for the moment.
@larsoner @drammock Any concerns so far?

Tested with real eyelink and seems to behave


Faas 402

Allows support for copying resources into the container via the func.yaml file.
Eg.
copy_resources:
  - resource:
      from: build-resource/wallet
      to: /wallet
  - resource:
      from: test.sh
      to: /

Any chance you could look at writing an end-to-end test for this:
See https://github.com/fnproject/cli/tree/master/test for examples

I'm not convinced of the utility of this addition.  It only works for dynamically generated Dockerfiles which we've previously discussed removing in favour of using init-images.   Also, the currently generated Dockerfiles have inconsistent semantics, some copy all resources into the container image  (Node), and some don't (Java).
I'd prefer we move in the direction of having the CLI invoke standard init-images in response to "--runtime" and remove the hard coded Go code that generates the dynamic Dockerfiles.


Can't build the project

I want to install Brooklyn service broker, as it was described in this tutorial. After cloning the repo I run gradle clean build and it fails with an error:
FAILURE: Build failed with an exception.

A problem occurred evaluating root project 'brooklyn-service-broker'.
> org.gradle.api.tasks.TaskContainer.create(Ljava/lang/String;Ljava/lang/Class;)Lorg/gradle/api/Task;

If re-run this task with --debug option I see NoSuchMethod exception.
My environment:
$ gradle -v

------------------------------------------------------------
Gradle 1.4
------------------------------------------------------------

Gradle build time: Monday, September 9, 2013 8:44:25 PM UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.9.3 compiled on April 8 2014
Ivy: non official version
JVM: 1.8.0_40 (Oracle Corporation 25.40-b25)
OS: Linux 3.13.0-43-generic amd64

Have you installed Apache Brooklyn?
git clone git@github.com:apache/incubator-brooklyn.git
cd incubator-brooklyn
mvn clean install -DskipTests

It is compiling now. Do I need to compile SB on the same host as Apache Brooklyn installed?
I thought it is runtime dependency.

no you don't need to run it there, it's just that the service broker has a dependency on Brooklyn's client library in the snapshot version which you need to in able to build it.  By running mvn install, you are putting that dependency into your local maven repo.

Oh! Hard to guess this)
I managed to get Brooklyn compiled and running,
[INFO] BUILD SUCCESS

Started Brooklyn console at http://<IP_ADDRESS>:8081/

but still have the same error.
Maybe the problem is in Java version? I use Oracle Java 6u45 for building Brooklyn and Oracle Java 8u40 for building SB.

I don't think so, the wrong java version usually complains about unsupported major.minor version.
Could be a gradle or groovy thing?
$ gradle -v

Gradle 2.2.1
Groovy:       2.3.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_31 (Oracle Corporation 25.31-b07)
OS:           Linux 3.13.0-46-generic amd64

I have update my Gradle and Groovy environment to latest versions.
$ gradle -v

------------------------------------------------------------
Gradle 2.3
------------------------------------------------------------

Build time:   2015-02-16 05:09:33 UTC
Build number: none
Revision:     586be72bf6e3df1ee7676d1f2a3afd9157341274

Groovy:       2.3.9
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.6.0_45 (Sun Microsystems Inc. 20.45-b01)
OS:           Linux 3.13.0-43-generic amd64

SB was more specific this time:
* What went wrong:
Could not resolve all dependencies for configuration ':compile'.
> Could not find org.apache.brooklyn:brooklyn-rest-client:0.7.0-SNAPSHOT

The problem is that I used Brooklyn 0.7.0-M2-incubating.

that's why I got you to get Brooklyn from github and compile it to your local maven repo - did you get it from the Brooklyn website instead?

Yes, the previous version was from the site as I want to actually run it.
Now I am compiling from GitHub as you advised.

you should be able to use 0.7.0-M2-incubating as your running Brooklyn, it's just you have to compile the service broker with the snapshot version

Am I right that I need different Java versions for compiling both? Java 6 for Brooklyn and Java 8 for SB?

No, you can compile Brooklyn with Java 8 if you wish, but Service Broker must use Java 8.  That's because the Parent project uses it.

Ok, now I have built brooklyn form snapshot. SB prints following error during compilation:
/home/ubuntu/work/brooklyn-service-broker/src/main/java/org/cloudfoundry/community/servicebroker/brooklyn/service/BrooklynServiceInstanceBindingService.java:6: cannot access org.cloudfoundry.community.servicebroker.exception.ServiceBrokerException
bad class file: org/cloudfoundry/community/servicebroker/exception/ServiceBrokerException.class(org/cloudfoundry/community/servicebroker/exception:ServiceBrokerException.class)
class file has wrong version 52.0, should be 50.0

Actually, I had an error while compiling Brooklyn with Java 8:
Compilation failure:
[ERROR] no more tokens - could not parse error message: Annotation processing got disabled, since it requires a 1.6 compliant JVM

After downgrading java to 6u45 Brooklyn compiles normally. So I end up with bi-java environment on poor ubuntu node :)

weird, I compile Brooklyn with Java 8

regarding SB error - are you sure javac and java are using java 8?

I've got the following and that is sufficient to compile both Brooklyn and SB:
$ javac -version
javac 1.8.0_31

$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

Great! SB is finally compiling without errors.
BUILD SUCCESSFUL

Last problem was in gradle using java 6.
Thank you for help, Robert!

I will come tomorrow with pull request documenting detailed prerequisites for building SB on clean Ubuntu 14.04 machine.
Also I will try to build Brooklyn with Java 8u40 as it is more convenient to use one version for all the stuff.

great, thanks!

The results of Brooklyn compilation with Java 8.
0.7.0-SNAPSHOT compilation OK.
0.7.0-M2-incubating compilation fails.


checkify: initial style

Why?

because initial style transforms are easier to write and maintain
because we don't have to rely on data dependence anymore, and can delete all of the data-dependence work-arounds
...?

Any down-sides?

we now stage out always, but assume checkify (functionalizing error values) is mainly useful in a staged-out environment

Thanks for the review! I've squashed the changes and will test internally.


for loop should use proper variable semantics

currently it's counting down because I have no comparison ops

joa, this code is quite terrible

done, logic is much more clean now


fix issue #1916

This PR tries to fix the issue #1916.
Here is the purpose of each change:
-  return {'tab': tabpagenr(), 'win': winnr(), 'cnt': winnr('$'), 'tcnt': tabpagenr('$')}
+  return {'tab': tabpagenr(), 'win': winnr(), 'winid': win_getid(), 'cnt': winnr('$'), 'tcnt': tabpagenr('$')}

Inside fzf.on_exit(), this test wrongly succeeds when fzf has been invoked from a popup terminal:
  if s:getpos() == self.ppos

This is because a popup window does not have a number and winnr() always evaluates to 0 in a popup terminal.  By including win_getid() in the dictionary, the test correctly fails when fzf is invoked from a popup terminal.

+        if !has('nvim') | call term_sendkeys(bufnr('#'), "exit\<cr>") | endif

This line terminates the sh job bound to the !sh terminal buffer which was originally created by fzf.
It's necessary so that Vim automatically wipes out the buffer when the window is closed.  There's already a one-shot autocmd with the same purpose, but imo, it's better to rely on Vim's builtin mechanism than create an ad-hoc one.

-      execute 'tabnext' self.ppos.tab
-      execute self.ppos.win.'wincmd w'
+      silent! execute 'tabnext' self.ppos.tab
+      silent! execute self.ppos.win.'wincmd w'

Here, silent! suppresses E994 which is raised when we're still in a popup terminal; commands like :tabnext and :wincmd are forbidden then.

-    let buf = is_frame ? '' : term_start(&shell, #{hidden: 1})
+    let buf = is_frame ? '' : term_start(&shell, #{hidden: 1, term_finish: 'close'})

For some reason, term_finish: 'close' is necessary for the !sh buffer to be automatically wiped out by Vim.  Not sure why; it's not necessary to close the window, since the exit callback already executes :close; it could be a bug.

-    else
-      execute 'autocmd BufWipeout * ++once bwipeout! '..buf

This one-shot autocmd is not necessary anymore; Vim automatically wipes out a terminal buffer when:

its associated job is finished (hence the previous term_sendkeys(...exit...))
it's hidden
it's not modified

See :h E947.

When the job has finished and no changes were made to the buffer: closing the
window will wipe out the buffer.

Ah, I think something is still wrong.  I need to check that the user is using Vim's popup windows before invoking term_sendkeys().

The last commit invokes win_gettype() to make sure that the user did configure fzf to use Vim popup windows.

In the last commit, I found a way to get rid of win_gettype().

Sorry for the delay, merged to master. Thanks!


Contact BCBS Foundation about sponsorship

They don't think their grantees are ready to take advantage of the process, so they're not going to sponsor this year.


gitlab-mr-discussion reporter 401

Hi,
I've used reviewdog with GitHub before without any issues but I seem to getting authentication issues on Gitlab..
I'm using this command reviewdog -reporter=gitlab-mr-discussion -f=psalm. REVIEWDOG_GITLAB_API_TOKEN is set.
The error is
reviewdog: fail to get diff: GET https://gitlab.com/api/v4/projects/bluefuse-systems/endsleigh/project-x-api/merge_requests/2: 401 {message: 401 Unauthorized}
I've tried calling that API endpoint myself and get the same response if the token header is set. However, if the URL is changed to https://gitlab.com/api/v4/projects/34546595/merge_requests/2 (swapping the org structure for the project ID) it works. Is the URL used correct? Should we be able to override the entire URL except the path? I know we can override the base already via an env var.

Seems to be working fine for me. I wonder if proper permissions are not given.

+1


Worker stats

Enchancement.
Expand API to send stats for each worker. To be able site like https://miningpoolhubstats.com/ track stat for each miner.

I am not sure what's needed here, the existing call getuserworkers already lists every single worker of the API Key account - extracting information from there isn't too hard. But should you really trust your API Key with a third party? Granted, MPOS is not allowing much with those keys (for good reason) but I wouldn't do that.