provide general 'how does datajoint compare to '

a good clarifying pointer for people comparison shopping between various systems, software, etc.
thinking X might be best addressed categorically with examples
such as:
how does datajoint compare to a Laboratory Information System (LIMS, e.g: Alyx, mLIMS, etc)
and:
how does datajoint compare to a Object Relational Mapper (ORM, e.g: Django ORM, SQLAlchemy, etc)
and so on..

@dimitri-yatsenko Did you intend to close this when you referenced it in your PR last month?

This is addressed in the FAQ Section of the new documentation.  Let's close.


Different transition animation between pages

Hi everyone,
I need a solution for implement different animations between pages. For exemple, I have tree route:
RouteA <=> RouteB <=> RouteC
When I am on RouteA and I request RouteB or C, I want an animation which moves the pages on the right. But, when I am on RouteC and I request RouteA or B, I want an animation which moves the pages on the left.
For that, for each change, I think that I must analyse the current route and the next route and compare it with a route's list to see which route is before other route in the order (A -> B -> C).
There is a better solution for my problem ? Otherwise, how to do it ? I have no idea how to get the next or previous route. And it would be cleaner if I can get the order of the route (A -> B -> C) with the declaration of the router like that:
<Router history={browserHistory}>
        <Route path="/routeA" component={RouteA}></Route>
        <Route path="/routeB" component={RouteB}></Route>
        <Route path="/routeC" component={RouteC}></Route>
</Router>

Thank you in advance.

You can attach whatever metadata you need to the route object if you want to know more about which route you're on, and a parent can always see both the next and previous props in the React lifecycle hooks to see how e.g. the array of active routes changes upon transitions.

Can you give me more details on the parent whoo see both the next and previous props, please ?


Main.kt assumes that client suppports workspace/configuration.

  val scope = ConfigurationItem().apply {
       section = "kotlin"
  }
  launcher.remoteProxy.configuration(ConfigurationParams(listOf(scope)))

These lines near the bottom of Main.kt will not work in clients that do not support workspace/configuration and cause the server to fail. Tested with ycmd.
For the time being, I have commented them out, but I perhaps there must be a way to run these lines after we have gotten the client capabilities and checked whether "workspace/configuration" is even one of them.

Thanks for pointing this out, I have removed the section. This call turned out to be redundant anyway, since the server did not use the response.
There seems to be some discussion around the proper usage of workspace/configuration (see https://github.com/Microsoft/language-server-protocol/issues/567), so I have opened #131 to address this.

Great! Thanks for getting back about this so quickly!


Further encapsulated AnsiblePlaybook

We were having to add additional driver specific connection
params to ansible playbook before use.  This should live inside
the class and handled internally.

👍

  syntax: commands succeeded
  py27-ansible19-unit: commands succeeded
  py27-ansible19-functional: commands succeeded
  py27-ansible20-unit: commands succeeded
  py27-ansible20-functional: commands succeeded
  py27-ansible21-unit: commands succeeded
  py27-ansible21-functional: commands succeeded
  doc: commands succeeded
  congratulations :)


fix shellcheck hook for pre-commit 2.10

pre-commit 2.10 introduces stricter checks for hooks that don't use an environment - see https://github.com/pre-commit/pre-commit/pull/1771

This PR closes issue #82. Also #81is a duplicate of this PR.

Thank you!
I'm closing this as superseded by https://github.com/jumanjihouse/pre-commit-hooks/pull/81 which was slightly more complete.


Use gofumpt instead of gofmt

Codecov Report

Merging #119 (d00835a) into main (051b380) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #119      +/-   ##
==========================================
- Coverage   91.95%   91.95%   -0.01%
==========================================
  Files          59       59
  Lines        3791     3789       -2
==========================================
- Hits         3486     3484       -2
  Misses        233      233
  Partials       72       72

Impacted Files
Coverage Δ

cmd/pint/logger.go
86.95% <ø> (ø)

cmd/pint/scan.go
85.10% <ø> (ø)

internal/checks/alerts_for.go
100.00% <ø> (ø)

internal/checks/promql_aggregation.go
88.39% <ø> (-0.11%)
:arrow_down:

internal/checks/promql_comparison.go
100.00% <ø> (ø)

internal/checks/promql_syntax.go
100.00% <ø> (ø)

internal/config/prometheus.go
100.00% <ø> (ø)

internal/config/rule.go
100.00% <ø> (ø)

internal/discovery/glob.go
66.66% <ø> (ø)

internal/promapi/range.go
100.00% <ø> (ø)

... and 4 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 051b380...d00835a. Read the comment docs.


_1password-gui: 0.9.11-3 -> 0.9.12-3

Motivation for this change
Changelog:
https://releases.1password.com/linux/0.9/#1password-for-linux-0.9.12
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 112562 at de3bda4a run on x86_64-linux 1

1 package built:

_1password-gui

1 suggestion:

warning: missing-phase-hooks
installPhase should probably contain runHook preInstall and runHook postInstall.
Near pkgs/tools/security/1password-gui/default.nix:29:3:
   |
29 |   installPhase = let
   |   ^


Introduce derive(Aggregate) macro

Implementing the Aggregate trait it's pretty verbose as of now.
The more commands an Aggregate can handle, the longer the handle method ends up. Also, the number of domain events might linearly increase, thus making the apply method even longer.
It would be nice, instead, to have a derive macro to do the heavy-lifting job of defining the Aggregate trait:
#[derive(Debug, Aggregate)]
#[aggregate(
    state = ExampleState,
    event = ExampleEvent,
    command = ExampleCommand,
    error = ExampleError
)]
struct ExampleAggregate {
    // Some dependencies...
}

It'd be also great to have some procedural macros for making applying events and handling commands easier:
impl ExampleAggregate {
    #[command]
    async fn handle_create(
        &self,
        command: ExampleCommandCreate //should implement From<ExampleCommand> for conversion.
    ) -> Result<Vec<ExampleEvent>, ExampleError> {
       unimplemented!()
    }

    #[event]
    fn apply_created_event(event: ExampleCreatedEvent) -> Result<Option<ExampleState>, ExampleError> {
        unimplemented!()
    }
}

Would you like macros like this ?
use futures::future::BoxFuture;

struct ExampleError;
#[derive(Default)]
struct ExampleState;
#[derive(PartialEq, Eq)]
struct ExampleId;

#[derive(Event)]
#[event(aggregate = "ExampleAggregate")]
enum ExampleEvent {
    Empty,
    WithNamedFields { i: Option<String>, b: [u8; 1024] },
    WithUnnamedFields(i8, String),
}

#[derive(Command)]
#[command(aggregate = "ExampleAggregate")]
enum ExampleCommand {
    Empty,
    WithUnnamedFields(i8, Box<str>),
    WithNamedFields { i: i8, b: String },
}

#[derive(Aggregate)]
#[aggregate(
    state = "ExampleState",
    error = "ExampleError",
    id = "ExampleId",
    event = "ExampleEvent",
    command = "ExampleCommand"
)]
struct ExampleAggregate;

#[agrimpl(event = "ExampleEvent", command = "ExampleCommand")]
impl ExampleAggregate {
    fn apply_empty(state: ExampleState) -> Result<ExampleState, ExampleError> {
        todo!()
    }
    fn apply_with_named_fields(
        state: ExampleState,
        id: Option<String>,
        foo: [u8; 1024],
    ) -> Result<ExampleState, ExampleError> {
        todo!()
    }
    fn apply_with_unnamed_fields(
        state: ExampleState,
        id: i8,
        foo: String,
    ) -> Result<ExampleState, ExampleError> {
        todo!()
    }

    fn handle_empty<'a, 's: 'a>(
        aggregate: &'a ExampleAggregate,
        id: &'a ExampleId,
        state: &'a ExampleState,
    ) -> BoxFuture<'a, Result<Option<Vec<ExampleEvent>>, ExampleError>> {
        todo!()
    }
    fn handle_with_named_fields<'a, 's: 'a>(
        aggregate: &'a ExampleAggregate,
        id: &'a ExampleId,
        state: &'a ExampleState,
        foo: i8,
        bar: String,
    ) -> BoxFuture<'a, Result<Option<Vec<ExampleEvent>>, ExampleError>> {
        todo!()
    }
    fn handle_with_unnamed_fields<'a, 's: 'a>(
        aggregate: &'a ExampleAggregate,
        id: &'a ExampleId,
        state: &'a ExampleState,
        foo: i8,
        bar: Box<str>,
    ) -> BoxFuture<'a, Result<Option<Vec<ExampleEvent>>, ExampleError>> {
        todo!()
    }
}

Enums are destructured into fields so user can write short FNs without huge match expression.  All impl fns are moved into separate module so there is no way to use &self in parameters. Or we can store all fns in rust impl  but the whole world will see our fns

If we do want to support optional::Aggregate we will need to give user a way to set responses in macro to reduce boilerplate.
Example (note the lack of handle_first_with_unnamed_fields).
#[derive(Command)]
#[command(aggregate = "ExampleAggregate",
         default(handle_first = "Error::NotYetCreated")]
enum ExampleCommand {
    Empty,
    #[command(default)]
    WithUnnamedFields(i8, Box<str>),

}

#[agrimpl(event = "ExampleEvent", command = "ExampleCommand", optional)]
impl ExampleAggregate {
   fn handle_first_empty<'a, 's: 'a>(
        &'a self,
        id: &'s Self::Id,
    ) -> BoxFuture<'a, Result<Option<Vec<Self::Event>>, Self::Error>>
    where
        Self: Sized,
    {
          todo!()
    }
    fn handle_next_empty<'a, 's: 'a>(
        &'a self,
        _id: &'a Self::Id,
        _state: &'s Self::State,
        command: Self::Command,
    ) -> BoxFuture<'a, Result<Option<Vec<Self::Event>>, Self::Error>>
    where
        Self: Sized,
    {
       todo!()
    }

    fn handle_next_with_unnamed_fields<'a, 's: 'a>(
        &'a self,
        _id: &'a Self::Id,
        _state: &'s Self::State,
        foo: i8,
        bar: Box<str>,
    ) -> BoxFuture<'a, Result<Option<Vec<Self::Event>>, Self::Error>>
    where
        Self: Sized,
    {
      todo!()
    }
    ///the same for event
   ...
}

Also there is a bad side effect for moving impl functions into a separate module. Rust analyzer treats all declared in impl block functions as associated (procMacro.enable is true) because of it there are  apply_with_unnamed_fields, apply_with_unnamed_fields ... in suggestions  for ExampleAggregate:: in modules that are able to reach aggregates private functions (e.g. children, same module)

Hey @iunof, thanks for getting to work on this!
I'm a bit unsure about the design you posted here... It looks slightly messier than not using macros.
In general, to reduce boilerplating it would be nice to:

Gather all CommandType types from async fn handle_<command>(CommandType) as point above
Give the above generated types a name using a container attribute

The logic for applying events should be pretty straightforward, so boilerplate is not an issue.
But for commands, that would make a huge difference!
Something like this:
#[derive(Aggregate)]
#[aggregate(
    Id = "OrderId", // This type cannot be generated
    State = "OrderState", // This type cannot be generated
    Command = "OrderCommand", // This is the name of the enum generated by the proc macro
    Event = "OrderEvent" // This type SHOULD not be generated
)]
pub struct OrderAggregate {
    // ... dependencies
}

impl OrderAggregate {
     pub async fn handle_create(&self, id: &OrderId, state: &OrderState, command: CreateOrder) -> Result<Vec<OrderEvent>> {
     }

     ...

     pub fn apply(state: OrderState, event: OrderEvent) -> ... {}
}

Closing this issue due to inactivity and API change in v0.5.0


Regenerating session id

Hi,
Is it possible to regenerate the session id to prevent session id fixation attack?

Yes, of course. Here is an example.
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use \Workerman\Protocols\Http\Response;
use Workerman\Protocols\Http;
use Workerman\Protocols\Http\Session;

$worker = new Worker('http://<IP_ADDRESS>:1111');
$worker->onMessage = function($connection, $request)
{
    $new_sid = bin2hex(microtime(true).rand());
    $session = new Session($new_sid);
    $session->set('name', 'value');
    $session->save();
    $response = (new Response(200, [], 'hello'))->cookie(Http::sessionName(), $new_sid);
    $connection->send($response);
};

Worker::runAll();

Thank you.

There could be a problem with above snippet causing double session id in the cookid since the first session is sent with path=/ while above snippet omits the path.


USHIFT-2134: make sure greenboot report success after hostname change test

/lgtm

/cherry-pick release-4.15


how to use it on docker ?

[* ] Question or discussion

Question
On Windows/Mac/Linux,we can use it by
dotnet tool install -g SkyWalking.DotNet.CLI

but  docker dotnet-runtime not contains dotnet SDK.
that will get this error.
Step 11/12 : RUN dotnet tool install -g SkyWalking.DotNet.CLI
 ---> Running in b5e22d93ce49
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
  http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
The command '/bin/sh -c dotnet tool install -g SkyWalking.DotNet.CLI' returned a non-zero code: 145

What should I do?
Requirement or improvement

microsoft/dotnet:2.1.3-aspnetcore-runtime

same question  to me, dotnet tool command is only installed with .net core sdk.

Thank you @witskeeper . Using a two-stage build is a good solution.


Proposal: replace NanoID with UUID

Hi,
Would you please consider replacing NanoID with UUID?
There are some points worth considering:

Postgres & CockroachDB have native UUID type, so UUID columns can be processed in binary form and may be faster than text columns in some scenarios.
For UUID, users can choose either time-based UUIDv7 or random-based UUIDv4, but NanoID is always randomly distributed.
UUID PK can be easily integrated with different systems, such as financial system/CRM, etc. These systems are more likely to use UUID rather than NanoID.
Many old systems already use UUID, if Cella uses UUID, there will be less resistance for people to adopt it.
We don't need any libs to use UUID, even frontend can use window.crypto.randomUUID().
Some libraries (short-uuid) can shorten the UUID, NanoID doesn't really have an advantage in this regard.

I believe that in the long run, compared with NanoID, Cella should adopt industrial standards such as UUID, which is more beneficial to its future development. After all, its target group is enterprise users.
Anyway, Cella's tech stack shows great taste, I sincerely hope it will be widely adopted, thanks.

Hi @flipvh ,
Now I'm trying to use Cella to develop a web site (app) about animation.
I chose it because I think Next.js is overly complex, too difficult to debug, and Next.js is not suitable for independent backend web services.
As for SEO, I plan to prerender some pages, it would be great if Cella can help in this regard (SSR & SSG).
I have modified Cella's primary key code and changed the string to UUID or bigint. But if you use UUIDs instead, it will save me a lot of trouble.
For my new project, adjusting schema PK is relatively easy, so this is just a small problem for me. In fact, I'm more concerned about the overall development status of Cella.
But as I said above, UUID is more easily accepted by enterprise-level users. Because they have to consider the upgrade of various old systems, the collaboration of various systems, importing from various data sources to new databases, and may need to switch the database to CockroachDB/YugabyteDB in the future. In these cases, UUID is a safer choice.
The only advantage of NanoId is that it is shorter, but UUID can also be shortened easily.
BTW, UUIDv7 has many advantages compared to UUIDv4 & NanoID, and Postgres will support it natively. Here is an interesting article: https://ardentperf.com/2024/02/03/uuid-benchmark-war/.

I got it, great, thnks! Concerning SSR and SSG, we are waiting a bit for tanstack router, vite, hono to progress here. Each one of them is making big steps into improving SSR and SSG options, but I haven't had time to put it all together because it requires a deep dive. We are working on a blog section that will be built with honox: https://github.com/cellajs/cella/pull/11 You have explored honox already? Also, if we want to migrate to UUID, would you be interested in helping us with a PR or get involved in another way, for example to build support for SSR and/or SSG?

For the PR for UUID, I'd love to try it. But please note that I haven't tried converting varchar PK to UUID, maybe I can’t finish a full PR.
Another thing is how should UUID be generated? Postgres or JS.
If UUID is generated by Postgres, it's easier to change to new version UUID without introducing any libraries. The price is that sometimes developers need to get the inserted id first then they can continue other operations.
Generating UUID by JS will give developers more freedom in programming, but node & bun may not support the new version UUID for a long time, and Cella needs 3rd lib to support new version UUID.
As for SSR & SSG, since I am mainly developing the admin app at this stage, I have not thought too much about it. If I have new ideas in the future, I will open new issues, thanks.

Ok thnks, before we continue, let me discuss it with the others first ok?

Got it, thanks.

Hi @flipvh ,
I've almost done a preliminary PR.
Besides, I have some new ideas on how the PK is generated, and I suggest that the UUID PK should be generated by Postgres as much as possible. This way is easier to use UUIDv7 in the future, and it's more suitable for Cella to cooperate with other systems and other languages.
For example, I believe that most IT systems will have AI services, and many services will be developed by Python, so it is a simpler and more consistent solution for Postgres to generate PK for all languages.
Anyway, we can discuss it again after I submit the PR.

Hi @yunge we have come to conclusion that we will stay with nanoid for now. Uuid has some compatibility issues and its own complexities. I do still agree on your argumentation but for now i will close this issue. Thnks!

Uuid has some compatibility issues and its own complexities.

What compatibility issues and complexities do you mean? Your answer can help eliminate it


whisper-at does not recognize laughter

I was testing whisper-at on hugging face and I found out that it does not recognize laughter.
I'm specifically looking for a solution to recognize laughter.

Hi there,
Please check our Colab Tutorial. We provide functions to change the threshold and class of interest.
Specifically for your case, after install Whisper-AT,
import whisper_at as whisper

audio_tagging_time_resolution = 10
model = whisper.load_model("large-v1")
result = model.transcribe("audio.mp3", at_time_res=audio_tagging_time_resolution)

# ASR Results
print(result["text"])

# Audio Tagging Results
audio_tag_result = whisper.parse_at_label(result, language='follow_asr', top_k=1, p_threshold=-5, include_class_list=[16]))

Where [16] is the index of the laughter class, and please tune p_threshold.
-Yuan

@YuanGongND
I got this error installing whisper-at
on a new conda env with python 3.9
Collecting whisper-at
  Obtaining dependency information for whisper-at from https://files.pythonhosted.org/packages/72/d2/7042fbcaa69101b6dfc8623e9acb8420143417a0e6f1f55a7b5cee1d2f0f/whisper_at-0.4-py3-none-any.whl.metadata
  Using cached whisper_at-0.4-py3-none-any.whl.metadata (20 kB)
INFO: pip is looking at multiple versions of whisper-at to determine which version is compatible with other requirements. This could take a while.
  Obtaining dependency information for whisper-at from https://files.pythonhosted.org/packages/b2/d1/5fae993426fbbc92dffb1057f415ab464057e489df03203b408f31568a60/whisper_at-0.2-py3-none-any.whl.metadata
  Using cached whisper_at-0.2-py3-none-any.whl.metadata (18 kB)
  Obtaining dependency information for whisper-at from https://files.pythonhosted.org/packages/56/f4/891cae6f547cf395568226d15161e1df1abb62f5e4de62cb5eb4dd374080/whisper_at-0.1-py3-none-any.whl.metadata
  Using cached whisper_at-0.1-py3-none-any.whl.metadata (16 kB)
ERROR: Cannot install whisper-at==0.1, whisper-at==0.2 and whisper-at==0.4 because these package versions have conflicting dependencies.

The conflict is caused by:
    whisper-at 0.4 depends on triton==2.0.0
    whisper-at 0.2 depends on triton==2.0.0
    whisper-at 0.1 depends on triton==2.0.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

Please use this (see our readme).
# install all dependencies except triton
pip install numba numpy torch tqdm more-itertools tiktoken==0.3.3
# install whisper-at without any dependency
pip install --no-deps whisper-at

-Yuan

@YuanGongND
using the large-v1 model
it's giving this error
Traceback (most recent call last):
  File "N:\whisperat\main.py", line 4, in <module>
    model = whisper.load_model("large-v1")
  File "C:\Users\Admin\anaconda3\envs\whisperatenv\lib\site-packages\whisper_at\__init__.py", line 175, in load_model
    checkpoint = torch.load(fp, map_location=device)
  File "C:\Users\Admin\anaconda3\envs\whisperatenv\lib\site-packages\torch\serialization.py", line 797, in load
    with _open_zipfile_reader(opened_file) as opened_zipfile:
  File "C:\Users\Admin\anaconda3\envs\whisperatenv\lib\site-packages\torch\serialization.py", line 283, in __init__
    super().__init__(torch._C.PyTorchFileReader(name_or_buffer))
RuntimeError: PytorchStreamReader failed reading zip archive: failed finding central directory

similarly when I used the large model after downloading its showing the same error
100%|███████████████████████████████████████| 153M/153M [00:12<00:00, 12.5MiB/s]
Traceback (most recent call last):
  File "N:\whisperat\main.py", line 4, in <module>
    model = whisper.load_model("large")
  File "C:\Users\Admin\anaconda3\envs\whisperatenv\lib\site-packages\whisper_at\__init__.py", line 175, in load_model
    checkpoint = torch.load(fp, map_location=device)
  File "C:\Users\Admin\anaconda3\envs\whisperatenv\lib\site-packages\torch\serialization.py", line 797, in load
    with _open_zipfile_reader(opened_file) as opened_zipfile:
  File "C:\Users\Admin\anaconda3\envs\whisperatenv\lib\site-packages\torch\serialization.py", line 283, in __init__
    super().__init__(torch._C.PyTorchFileReader(name_or_buffer))
RuntimeError: PytorchStreamReader failed reading zip archive: failed finding central directory

using the medium model does not give any tags.

using the medium model does not give any tags.

audio_tag_result = whisper.parse_at_label(result,
language='follow_asr',
top_k=1,  # only care of 1 single class
p_threshold=-5, # please tune this param
include_class_list=[16])) # 16 is the index of Laughter.

Please check p_threshold= to a smaller value, you would need to tune it, i.e., you can start with a minimal value, e.g., -999, and observe the output p for your laugh/non-laugh input, and decide an appropriate value.

using the large-v1 model it's giving this error

This seems to be related to: https://github.com/YuanGongND/whisper-at/issues/3
Please check your download folder and see if there is a % or other invalid char for Windows.
Or use pip install --upgrade whisper-at to install the latest version.
-Yuan


Rewrite ActivityHandler for increased extensibility points

Description
This PR refactors the core logic in ActivityHandler and ActivityHandler.run() out into separate overrideable methods. This increases extensibility as developers can change the processing logic and reuse the base logic.
The original eventing logic is still included.
This PR might be changed again and a parent class (i.e. ActivityHandlerBase) with the overrideable methods may be added.
Specific Changes

Create "mid-level" overrideable methods that call the handlers for specific events:

handleActivity
handleActivity
handleMessageActivity
handleConversationUpdateActivity
handleMessageReactionActivity
handleEventActivity
handleUnrecognizedActivity

Create "dispatch" overrideable methods that dispatch specific activity types by additional properties on the incoming Activity. These methods are called by the "mid-level" overrideable methods.

dispatchActivity (called by handleActivity)
dispatchConversationUpdateActivity (called by handleConversationUpdateActivity)
dispatchMessageReactionActivity (called by handleMessageReactionActivity)
dispatchEventActivity (called by handleEventActivity)

Testing
Current ActivityHandler unit tests still work, will add new unit tests (and maybe a TypeScript test collection 🚀)
Todo:

[ ] Unit tests for refactored logic
[ ] Unit tests for subclassing ActivtityHandler (Possibly also include TypeScript tests)
[ ] Complete doc strings for new methods.

@kaiqb as FYI

Pull Request Test Coverage Report for Build 80893

34 of 35 (97.14%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 86.503%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

libraries/botbuilder-core/src/activityHandler.ts
34
35
97.14%

Totals

Change from base Build 80557:
0.02%

Covered Lines:
4470

Relevant Lines:
4987

💛  - Coveralls

FYI @daveta @tsuwandy


Add an ability to filter task list in the UI

Sometimes I'm interested in some specific task on some specific host that is unhappy. With current task list I have an unordered sequence of tasks spanning multiple pages. I think we can improve by adding a filter. To make it nice, I think we should do fuzzy filtering when you filter on all fields (id, host, ports), just like mesos ui.

If I want to find tasks on myhost1, I search for myhost1.
If I want to find task on myhost1:124, I search for myhost1:124

Virtual list of tasks for filtering could contain the following elements divided by spaces:

Task id
Host:port pairs for all ports
Health status (healthy / unhealthy)
Task state (staging, running, etc.)

Adding an ability to sort by host would be nice too. It could work by adding a title for the ID column:

@bobrik I completely agree with you that this UI view  is way too limiting, and a filter like you propose would be nice addition 👍
Unbelievable there was no progress on this since >1 year now :(
I created an issue (link -^)  to solve the most critical issue in our case, with the hope that this is less work and thus might be implemented faster.
ps: I think mesos, marathon... are quite nice frameworks , I'm just to grow more afraid that mesosphere(the community) cannot keep up with kubernetes.
And the UIs (marathon, mesos) are def. not getting 'enough love' . I'ld expect many more features going into the UI, that are exposed by the (REST) API's since long time.
For ex: Killing a mesos framework ..  (let me look up for an existing issue here)

Note: This issue has been migrated to https://jira.mesosphere.com/browse/MARATHON-2957. For more information see https://groups.google.com/forum/#!topic/marathon-framework/khtvf-ifnp8.


Feature: resolve year review dialog blocking issue

Changes
Navigate to target url by changing the url directly for resolving issue that clicking operation would be blocked by year review dialog.

@saury thanks! released v0.0.6


generating empty image

Hi.
I run
$ mossum http://moss.stanford.edu/results/XYZ
Generating image for moss_02-03-2018_223646
DONE

but it only generated a 11x11px white image, any idea what can be wrong?

Could it be that no matches fall within the default criteria of similarities accounting for at least 90% of either file? You can change that with the -p flag.

I have the same problem when comparing more than two files.

In my case, it was "probably" (I could not verify it as I did not have the dataset anymore but it worked later on another dataset) the case hjalti mentioned.

I had the same problem. Lower the -p flag value.
Also use -f svg as the image is much better.


Platform implementation not found

Describe the bug
i get error 'Platform implementation not found' if i debug this on windows machine

vs 2022 win 10
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Hello,
It is not clear if you are using Xamarin Forms or Maui.
But either way it seems that you are not targeting neither iOS nor Android devices when running on debug mode.
Please, try to start up your project in debug mode using either iOS or Android using the library for Xamarin Forms or Maui, and get me back the results.
If i'm wrong with my assumptions, please, provide me some more details and also a small sample solution so I can try to reproduce your issue here.
Thanks

I am using Maui, not sure what you mean targeting ?  when you debug in Visual Studio you can select between different Os but also you can select "Windows Machine" as on picture attached. It works fine if select Android Emulator but if i select "Windows Machine" if throws run time error as in my prev. post.

The library is intended to categorize physical screen sizes (not window sizes). As most Windows apps runs on large screens (monitors of any size, larger than a tablet), all of the Windows Apps would be categorized as Extra Large, so it makes no sense to have a windows support.

How about  OnScreenSizeMarkup.Core ? do i needs this as well ?
Regarding support for iOS and Android, i understand your point, but perhaps it should not fail the app or the error should say that it only supports iOS and Android, also if this i going to be ported to Maui Community Toolkit how is this going to work cause Maui does support windows, and finally you know it's quite handy to quickly test your app on Windows for basic stuff so that you don't have to load emulator or have phone connected, so would be nice if this had some default behavior for windows.

How about OnScreenSizeMarkup.Core ? do i needs this as well ?
The core projects, contains only reusable/shared code, not specific/targeted to any platform.
Regarding support for iOS and Android, i understand your point, but perhaps it should not fail the app or the error should say that it only supports iOS and Android...
Actually exception is not being thrown on my code, but on MAUI's code, when MAUI realize that there is no support for a platform other than iOS and Android.
'also if this i going to be ported to Maui Community Toolkit how is this going to work cause Maui does support windows'
You are right, on MCT it should work on Windows. But we don't know when it is going to happen, as I'm not having enough time to port following their coding standards and guidelines, and they are lacking of people to help.
But let me help you, I understood your point about running on Windows for quick touchups... I will try to create a windows implementation that always returns ExtraLarge.
Give me some minutes...
:D

Just published a new nuget version: https://www.nuget.org/packages/OnScreenSizeMarkup.Maui/2.0.3
It should be available in a few minutes.
Also, I implemented a way to specify the default categorization you want for Windows.
So, on the App.cs's constructor, set property DefaultScreenCategoryFallbackPlatform to the screen size you want for Windows. The default is ExtraLarge.
   Manager.Current.DefaultScreenCategoryFallbackPlatform = ScreenCategories.ExtraLarge;

Hope this helps.

Wow you are a start

I pulled the latest version and still get same error am I doing something wrong ?

Well, sorry about that.
it is not a problem on your code, but on how the library (nuget) was compiled/packaged.
I don't have any Windows machine here, even virtual ones, only a Mac. So when Ibuild/pack thelibrary it doesn't generates the windows version of the library inside the nuget file (I didn't remember that when I pack the latest version that could help you).
So the Library repo's has the fix, but not the latest nuget.
As I said, I don't have Windows machine here, but as you do, if you really want, you could download the repo's code, and Pack the Nuget on your own machine, by using the Dotnet Pack command inside the project's folder.
That way it will create a nuget file with the windows's version of the library.
We should have a CI that could to that here, but I don't have much free time to mess with CI, and also I'm not a DevOps-oriented person. So besides free time, I would need some help in order to do that.
But, as I said, you could create the nuget on your own computer.

And of course, after pack the nuget, you would need to create a local nuget repo/source pointing to the path where the generated .nupkg file is.

I'm assuming this issue should be closed, but if you still have problems let me know.

Well not sure as the nuget for windows is not availabe yet ? I can't do it either.

Hello,  I am trying to use the library but unfortunately as repported here it can not run on a Windows app. I read the discussion above and I was wondering if somebody had the chance to create a new nugget package available for windows, or another solution ? Thanks a lot for any input on this.


transformer with v2 + grpc is not work

/kind bug
What steps did you take and what happened:
iam trying to practice transformer example below:
https://kserve.github.io/website/latest/modelserving/v1beta1/transformer/torchserve_image_transformer/#create-inferenceservice
I only change the model pytorch to lgbm and it works when i use v1 + rest protocol.
But when i tried to practice {Deploy the InferenceService calling Predictor with gRPC protocol} example , error is occured.
Here are my files .
InferenceService
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: iris-lgbm
  namespace: datascience
spec:
  predictor:
    ports:
    - containerPort: 9000
      name: h2c
      protocol: TCP
    serviceAccountName: sa
    protocolVersion: v2
    model:
      modelFormat:
        name: lightgbm
      runtime: kserve-lgbserver
      storageUri: xxxxxxxx
      resources:
        limits:
          cpu: 1
          memory: 2Gi
        requests:
          cpu: 1
          memory: 2Gi
  transformer:
    containers:
      - image:  xxxxxxx
        name: kserve-container
        command:
          - "python"
          - "-m"
          - "transformer"
        args:
          - --model_name
          - iris-lgbm
          - --protocol
          - grpc-v2

transformer.py
import argparse
import polars
import numpy as np
from typing import Dict , Union

from kserve import (
    Model,
    ModelServer,
    model_server,
    InferInput,
    InferRequest,
    InferResponse,
    logging,
)
from kserve.model import PredictorProtocol, PredictorConfig

class Transformer(Model):

    def __init__(self, name: str, predictor_host: str, protocol: str, headers: Dict[str, str] = None):
        super().__init__(name)
        self.predictor_host = predictor_host
        self.protocol = protocol
        self.ready = True

    def preprocess(self, request: InferRequest, headers: Dict[str, str] = None) -> InferRequest:
        """
          v2
                {
          "inputs": [
            {
              "data": [[1.2, 2.3, 3.5, 4.1], [4.2, 0.3, 2.5, 5.1]],
              "shape": [-1, 4],
              "name": "test",
              "datatype": "FP32"
            }
          ]
        }
        """
        print("protocl is =",self.protocol)
        input_tensors = request.inputs[0].data
        input_tensors = [[x+1 for x in t] for t in input_tensors]
        input_tensors = np.asarray(input_tensors , dtype = np.float32)

        infer_inputs = [
                InferInput(
                    name="INPUT__0",
                    datatype="FP32",
                    shape=list(input_tensors.shape),
                    data=input_tensors,
                )
            ]
        infer_request = InferRequest(model_name=self.name, infer_inputs=infer_inputs)

        return infer_request

parser = argparse.ArgumentParser(parents=[model_server.parser])
args, _ = parser.parse_known_args()

if __name__ == "__main__":
    model = Transformer(args.model_name, predictor_host=args.predictor_host,
                             protocol=args.protocol)
    ModelServer(workers=1).start([model])

dockerfile
FROM python:3.11-slim

COPY . .

RUN python -m pip install -r requirements.txt

RUN useradd kserve -m -u 1000 -d /home/kserve

USER 1000

ENTRYPOINT [ "python","-m","transformer","--protocol","grpc-v2" ]

Error
error is too long the point is here .
details = "Received http2 header with status: 404"	debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-07-13T13:15:35.058449156+00:00", grpc_status:12, grpc_message:"Received http2 header with status: 404"}">protocl is = grpc-v2

and the weird thing is i set the port 9000 but the log said it start grpc server on port 8081
All log
2024-07-13 13:14:56.014 1 kserve INFO [model_server.py:register_model():384] Registering model: iris-lgbm2024-07-13 13:14:56.015 1 kserve INFO [model_server.py:start():254] Setting max asyncio worker threads as 52024-07-13 13:14:56.015 1 kserve INFO [model_server.py:serve():260] Starting uvicorn with 1 workers2024-07-13 13:14:56.060 uvicorn.error INFO:     Started server process [1]2024-07-13 13:14:56.060 uvicorn.error INFO:     Waiting for application startup.2024-07-13 13:14:56.063 1 kserve INFO [server.py:start():63] Starting gRPC server on [::]:80812024-07-13 13:14:56.063 uvicorn.error INFO:     Application startup complete.2024-07-13 13:14:56.063 uvicorn.error INFO:     Uvicorn running on http://<IP_ADDRESS>:8080 (Press CTRL+C to quit)2024-07-13 13:15:35.058 kserve.trace kserve.io.kserve.protocol.rest.v2_endpoints.infer: 0.0122404098510742192024-07-13 13:15:35.058 kserve.trace kserve.io.kserve.protocol.rest.v2_endpoints.infer: 0.0034659999999995252024-07-13 13:15:35.058 1 kserve ERROR [errors.py:generic_exception_handler():111] Exception:

Traceback (most recent call last):  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__    await self.app(scope, receive, _send)  File "/usr/local/lib/python3.11/site-packages/timing_asgi/middleware.py", line 70, in __call__    await self.app(scope, receive, send_wrapper)  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app    raise exc  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app    await app(scope, receive, sender)  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 758, in __call__    await self.middleware_stack(scope, receive, send)  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 778, in app    await route.handle(scope, receive, send)  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 299, in handle    await self.app(scope, receive, send)  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 79, in app    await wrap_app_handling_exceptions(app, request)(scope, receive, send)  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 64, in wrapped_app    raise exc  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app    await app(scope, receive, sender)  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 74, in app    response = await func(request)               ^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 299, in app    raise e  File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 294, in app    raw_response = await run_endpoint_function(                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 191, in run_endpoint_function    return await dependant.call(**values)

 File "/usr/local/lib/python3.11/site-packages/kserve/protocol/rest/v2_endpoints.py", line 169, in infer    response, response_headers = await self.dataplane.infer(                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/kserve/protocol/dataplane.py", line 343, in infer    response = await model(request, headers=headers)               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/kserve/model.py", line 201, in __call__    (await self.predict(payload, headers))     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/kserve/model.py", line 419, in predict    res = await self._grpc_predict(payload, headers)          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/kserve/model.py", line 387, in _grpc_predict    async_result = await self._grpc_client.ModelInfer(                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "/usr/local/lib/python3.11/site-packages/grpc/aio/_call.py", line 318, in __await__    raise _create_rpc_error(grpc.aio._call.AioRpcError: <AioRpcError of RPC that terminated with:	status = StatusCode.UNIMPLEMENTED	details = "Received http2 header with status: 404"	debug_error_string = "UNKNOWN:Error received from peer  {created_time:"2024-07-13T13:15:35.058449156+00:00", grpc_status:12, grpc_message:"Received http2 header with status: 404"}">protocl is = grpc-v2

What did you expect to happen:
request must be success
What's the InferenceService yaml:
[To help us debug please run kubectl get isvc $name -n $namespace -oyaml and paste the output]
Above!
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]
Another weird thing is
Environment:

Istio Version: 1.22.1
Knative Version:1.12.4
KServe Version: 1.3.0
Kubeflow version: 1.9.0rc2
Cloud Environment:[k8s_istio/istio_dex/gcp_basic_auth/gcp_iap/aws/aws_cognito/ibm]
Minikube/Kind version:
Kubernetes version: (use kubectl version):
OS (e.g. from /etc/os-release):

Is it not possible to use grpc-v2 in kserve-lgbserver?
there are only v1 and v2 on this page:
https://github.com/kserve/kserve/blob/master/config/runtimes/kserve-lgbserver.yaml

@todtjs92  You should pass the argument --grpc_port=9000 to the model server to change the port otherwise grpc server will listen on 8081

@todtjs92 Ensure that your service is correctly routing the traffic to the right endpoints. The 404 error indicates that the endpoint might not be found or correctly configured. Ensure that the gRPC server is correctly configured to run on the expected port. By default, it seems to start on port 8081. Update the command in your Dockerfile and InferenceService YAML to ensure that the server is listening on the correct port.

@sivanantha321 @LOADBC  Thanks all!! It seems like i set the wrong port for grpc... .I'll try to fix it. Thank you so much!..


Write documentation for methods in the admin panel

This includes:

new install - creating the tables for Team, Division and Conference information
New season or updating to a new year
adding players on NFL active rosters

Completed in the documentation


Fixed: grammer in README.md

Fixed: grammer in README.md

@erikspears Now changed,
development -> develop


Move example elsewhere

ack https://github.com/adtac/commento/pull/105/commits/1a201dc4d2dd438211fcc255a861210f49ba31fa


Market watcher creating duplicates

Is this a bug? If I create a new market watcher I see two in the list of gekkos.

Then I got a few ticker failures

Then I refreshed the gekko page, and the extra tickers went away. I click on local data, scan available datasets, and get a few more ticker errors the same as before. Refresh the page, scan available data again, and got this:

So there are 3 issues here:

I see two in the list of gekkos.

This is a known bug, see #894.

Then I got a few ticker failures

Please check out the link in the message (#514), it describes exactly why you got that message.

I click on local data, scan available datasets, and get a few more ticker errors the same as before.

Which one? And you can ignore the fact that some markets where unscannable, that's just a message.

I am closing this as a dup of #894, if you have more comments please put them there!


Update .gitattributes

There once was a man from Nantucket,
who developed on a Macintosh bucket.
He set up his ESLint to flag Prettier errors,
And Windows developers got CR* terrors.
The man was no fan, so he hatched up a plan:
He would ask Git to enforce LF** characters.
So now developers rejoice, because of his choice:
They can keep their Windows kit, not chuck it.

*Carriage Return, **Line Feed
Original poetry! Boom 💥
eslintrc.js
module.exports = {
  ...
  extends: [
    'plugin:prettier/recommended',
  ],
  rules: {
    'prettier/prettier': 'error',
  }
}

See discussion https://github.com/tailwindlabs/tailwindcss/pull/3760

New .gitattributes file
I updated the .gitattributes file to explicitly avoid changing binary files, based on best practices from https://gitattributes.io/
## Source: https://github.com/alexkaratarakis/gitattributes
## Modified * text=auto to * text eol=lf to force LF endings.

## GITATTRIBUTES FOR WEB PROJECTS
#
# These settings are for any web project.
#
# Details per file setting:
#   text    These files should be normalized (i.e. convert CRLF to LF).
#   binary  These files are binary and should be left untouched.
#
# Note that binary is a macro for -text -diff.
######################################################################

# Auto detect
##   Force LF line endings automatically for files detected as
##   text and leave all files detected as binary untouched.
##   This will handle all files NOT defined below.
*                 text eol=lf

The new .gitattributes file continues on for about 200 lines total while achieving the same result:
Windows developers will have LF line endings for text files, meaning they will not see ESLint "prettier/prettier" errors.
This improved .gitattributes file prevents corrupting binary files (e.g. .png or .woff), which can happen if git finds a false "CRLF" inside their binary code. Just ask my Vercel deploy about that 😄
Comparison with previous .gitattributes file
Compared to the default * text=auto setting, which results in Windows users checking out text files with CRLF line endings, the * text eol=lf setting results in LF line endings on Windows (the desired behavior per eslintrc.json).
However, a one-line .gitattributes file that only includes * text eol=lf tells git to treat all files as text, which can corrupt committed binary files.
Since there's no "auto" mode, it's left to the owner of the git repo to explicitly specify every possible non-text file -- which is why the best practice around line endings is to use a .gitattributes file specific for your type of project.
This updated .gitattributes file is a slightly modified version of the open-source, community-maintained "Web Project" .gitattributes file by @alexkaratarkis from @alexkaratarakis/gitattributes ... Thank you to the contributors.
Further Reading / References

https://gitattributes.io/ and https://github.com/alexkaratarakis/gitattributes
https://www.edwardthomson.com/blog/advent_day_1_gitattributes_for_text_files.html
https://markoskon.com/line-endings-in-vscode-with-git-and-eslint/

This is an update to PR #19, which may have caused issue #21.
Hey @timlrx you might want to check if your blog & this template are deploying to Vercel OK, because this was a pretty insidious bug.
My experience was:

Nothing happened at all
For no clear reason, all the .png files got corrupted
Vercel was cool with it, except all the images were broken
The images were not broken locally
I couldn't diff the images locally, even replacing them with the originals

Once I put in the new .gitattributes file, which protects .png files among others, and copied back in the original image files, everything works fine.
Hopefully you haven't seen that particular bug (broken images with no warnings -- fun! haha 😅😂), but either way this updated .gitattributes file will prevent it from happening.

Ok, thanks for finding out the root cause. I didn't sync the updates to the latest changes so no problems for me :)

Yep, nothing like seeing production look completely different than local
because of something I already know more about than any person really
should ever have to in one lifetime 🤣
On Thu, Apr 15, 2021, 10:16 AM Timothy @.***> wrote:

Merged #24
https://github.com/timlrx/tailwind-nextjs-starter-blog/pull/24 into
master.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/timlrx/tailwind-nextjs-starter-blog/pull/24#event-4599960206,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFZ3D4L7QT63V5X3IWMXALTI37MPANCNFSM427M4HVA
.


Allow a Karate scenario to be able to return values to the Gatling Simulation

SUMMARY
This is a "nice to have feature" as workarounds exist. This issue demonstrates a known difference between raw-Gatling and Karate-Gatling, and how fixing to match the behaviour could be useful in another scenario.
Allowing a Karate scenario to be able to return values to the Gatling simulation would allow for better code.
CURRENT ISSUE AND WORKAROUND
Consider the raw-Gatling simulation:
class CatsGatlingSimulation extends Simulation {

  MockUtils.startServer()

  val feeder = Iterator.continually(Map("name" -> MockUtils.getNextCatName))

  val create = scenario("createAndGet")
    .exec { session =>
      println(session.attributes.keys.filter { !_.startsWith("gatling") })
      session
    }
    .feed(feeder)
    .exec { session =>
      println(session.attributes.keys.filter { !_.startsWith("gatling") })
      session
    }
    .exec(
      http("POST /cats")
      .post("/")
      .body(StringBody("""{ "name": "${name}" }"""))
      .check(status.is(200))
      .check(jsonPath("$.name").is("${name}"))
      .check(jsonPath("$.id").saveAs("id"))
    )
    .exec { session =>
      println(session.attributes.keys.filter { !_.startsWith("gatling") })
      session
    }
    .exec(
      http("GET /cats/{id}")
      .get("/${id}")
      .check(status.is(200))
      .check(jsonPath("$.id").is("${id}"))
      .check(jsonPath("$.name").exists)
    )

  val httpConf = http.baseUrl(System.getProperty("mock.cats.url"))

  setUp(
    create.inject(atOnceUsers(1)).protocols(httpConf)
  )
}

The important line here is .check(jsonPath("$.id").saveAs("id")) which saves the id from the first REST call for use in the second. Looking at the session.attributes map keys (and ignoring the "gatling.*" keys), we see:

empty
"name"
"name" and "id"

Attempting to do the same with a Karate-Gatling simulation:
class CatsKarateSimulation1 extends Simulation {

  MockUtils.startServer()

  val feeder = Iterator.continually(Map("name" -> MockUtils.getNextCatName))

  val createAndGet = scenario("createAndGet")
    .exec { session =>
      println(session.attributes.keys)
      session
    }
    .feed(feeder)
    .exec { session =>
      println(session.attributes.keys)
      session
    }
    .exec(karateFeature("classpath:mock/create.feature@name=gatling"))
    .exec { session =>
      println(session.attributes.keys)
      session
    }
    .exec(karateFeature("classpath:mock/get.feature@name=gatling"))

  val protocol = karateProtocol(
    "/cats" -> Nil,
    "/cats/{id}" -> Nil
  )

  setUp(
    createAndGet.inject(atOnceUsers(1)).protocols(protocol)
  )
}

session.attributes in the Gatling simulation is __gatling in the Karate scenario (where the latter also includes "pause"). In create.feature@name=gatling we try to replicate the .check(jsonPath("$.id").saveAs("id")) from the former example:
Feature:

  @name=arg
  Scenario:
    * print 'Entered create.feature@name=arg __arg=' + __arg
    Given url karate.properties['mock.cats.url']
    And def name = __arg.name
    And match name != null
    And request { name: '#(name)' }
    When method post
    Then status 200
    And match response == { id: '#uuid', name: '#(name)' }
    And def id = response.id
    * print 'Exited create.feature@name=arg'

  @name=gatling
  Scenario:
    * print 'Entered create.feature@name=gatling __gatling=' + __gatling
    Given def name = __gatling.name
    When def result = call read('this:create.feature@name=arg') { name: #(name) }
    Then def id = result.id
    And def extra = { id: #(id) }
    And def updated = karate.merge(__gatling, extra)
    And karate.set('__gatling', updated)
    And print 'Updated __gatling=' + __gatling
    * print 'Exited create.feature@name=gatling'

When executed, this will output:
Set()
Set(name)
Entered create.feature@name=gatling __gatling={name=Bob, userId=1, pause=...}
Entered create.feature@name=arg __arg={name=Bob}
Exited create.feature@name=arg
Updated __gatling={name=Bob, userId=1, pause=..., id=...}
Exited create.feature@name=gatling
Set(name)
Entered get.feature@name=gatling __gatling={name=Bob, userId=1, pause=...}
Entered get.feature@name=arg __arg={id=null}

Although __gatling is successfully updated in create.feature@name=gatling to set the id, this change appears to only be within the scope of the scenario as it is not present in the Gatling simulation, and subsequently does not make it through to the next Karate scenario classpath:mock/get.feature@name=gatling.
The current workaround is to have the create and get within a single Karate scenario as per CatsKarateSimulation2.
These examples can be ran using:
mvn clean test -D gatling.simulationClass=mock.CatsGatlingSimulation

mvn clean test -D gatling.simulationClass=mock.CatsKarateSimulation1

mvn clean test -D gatling.simulationClass=mock.CatsKarateSimulation2

gatling.zip
MOTIVATION FOR FIX (AND CURRENT WORKAROUND)
Karate version 0.9.6 uses Gatling version 3.0.2. In Gatling 3.4.0, andThen was introduced which allows scenarios to be executed sequentially, whereas at the moment they can only be executed concurrently. There is already an issue to upgrade the Gatling version. Consider the case where I want to test first creating n cats, and then getting n cats. The create scenario returns an id which I can store e.g. save to a csv, and then later reuse as a feeder for the get scenario. It would be something like this:
class TestSimulation extends Simulation {

  MockUtils.startServer()

  val fileName = "ids.csv"
  val file = new File("src/test/resources/" + fileName)
  val writer = new PrintWriter(new FileOutputStream(file, false))
  writer.println("id")
  writer.close()

  val nameFeeder = Iterator.continually(Map("name" -> MockUtils.getNextCatName))

  val create = scenario("create")
    .feed(nameFeeder)
    .exec(karateFeature("classpath:mock/create.feature@name=gatling"))
    .exec { session =>
      val writer = new PrintWriter(new FileOutputStream(file, true))
      val id = session("id").as[String]
      writer.println(id)
      writer.close()
      session
    }

  val numUsers = 10

  val protocol = karateProtocol(
    "/cats" -> Nil,
    "/cats/{id}" -> Nil
  )

  def idFeeder() = csv(fileName)

  def get() = scenario("get")
    .feed(idFeeder())
    .exec(karateFeature("classpath:mock/get.feature@name=gatling"))

  setUp(
    create.inject(atOnceUsers(numUsers)).protocols(protocol).andThen(
      get().inject(atOnceUsers(numUsers)).protocols(protocol)
    )
  )
}

Due to the current limitation of being unable to retrieve value(s) from a called scenario, the workaround would be for the "create" Karate scenario to instead be responsible for appending the id to the file (by calling some Java code). From a development point of view, the workaround is not ideal because the Gatling simulation should be solely responsible for creating the list of ids from the "create" and supplying to the "get". This reduces coupling between the "create" and "get" Karate scenarios. Additionally, the workaround requires the use of some external storage mechanism i.e. a file, whereas were the fix to be implemented then we could probably just have the ids stored as some local variable within the Gatling simulation.

not reading all of this right now, my priority is the graal migration
I would be interested to hear thoughts of @sixdouglas

@theathlete3141 I think you try to do something you shouldn't. In my opinion tests are suppose to be independant, and should be executed in any order, as you would do with Unit Tests. Trying to retrieve data in scenario n+1, generated in test n is a bad idea.
@ptrthomas any additional thoughts on this would be appreciated.
Having said that, do you think you could do it this way:
Feature 1
Scenario Create object with condition A
   ...
Scenario Create object with condition B
   ...
Scenario Create object with condition C
   ...

Feature 2
Background
   Create object with condition B
Scenario Get object with condition B
   ...
Scenario Get object with condition B
   ...
Scenario Get object with condition B
   ...

This way, the Creation itself would be tested in its own Feature file.
And, as the Background steps will be executed before each scenario, you should be able to get a freshly Created result in your context for the Get.
Do you think you could give it a try?

Second thought about this issue:
My answer would be good for a classic karate test, it would not apply to the karate gatling tests.
In these tests, you're using karate to pilot Gatling and what you want is to load test the API. So normal rules may not apply here. This is why a single scenarion for a everything should work for you.

agree with @sixdouglas - especially: https://stackoverflow.com/a/46080568/143475
I still haven't read this in detail but because you can "call scenarios by tag": https://github.com/intuit/karate/tree/master/karate-gatling#tag-selector
this means you can "compose" a load test out of the universe of karate classic tests that you already have
so my thinking is you can easily write this one extra feature that does the exact "flow" you want, completely in karate
side note: I see that attempting "too much re-use" is the root cause of most of the problems I see on stack-overflow etc :)

Perhaps my original message was too verbose but my test case is:

Create n cats
AND THEN get each of the n cats
This is not the same as:
Create a cat and get the cat n times
This test case necessitates that the create and get be in different karate scenarios. Each of the creates returns an id which I need to be able to store to use in the gets.

I have now tried to write this using raw-Gatling
class CatsGatlingSimulation extends Simulation {

  MockUtils.startServer()

  val fileName = "ids.csv"
  val file = new File("src/test/resources/" + fileName)
  val writer = new PrintWriter(new FileOutputStream(file, false))
  writer.println("id")
  writer.close()

  val nameFeeder = Iterator.continually(Map("name" -> MockUtils.getNextCatName))

  val create = scenario("create")
    .feed(nameFeeder)
    .exec(
      http("POST /cats")
      .post("/")
      .body(StringBody("""{ "name": "${name}" }"""))
      .check(status.is(200))
      .check(jsonPath("$.name").is("${name}"))
      .check(jsonPath("$.id").saveAs("id"))
    )
    .exec { session =>
      val writer = new PrintWriter(new FileOutputStream(file, true))
      val id = session("id").as[String]
      writer.println(id)
      writer.close()
      println("wrote id " + id)
      session
    }

  def idFeeder() = {
    val feeder = csv(fileName)
    println("read " + feeder.readRecords.length + " records")
    feeder
  }

  def get() = scenario("get")
    .feed(idFeeder())
    .exec(
      http("GET /cats/{id}")
        .get("/${id}")
        .check(status.is(200))
        .check(jsonPath("$.id").is("${id}"))
        .check(jsonPath("$.name").exists)
    )

  val numUsers = 10

  val httpConf = http.baseUrl(System.getProperty("mock.cats.url"))

  setUp(
    create.inject(atOnceUsers(numUsers)).protocols(httpConf).andThen(
      get().inject(atOnceUsers(numUsers)).protocols(httpConf)
    )
  )
}

This will write the ids from the create step to a file as I want.
However, this fails to work as expected because the reading of (newly created) file is executed before the writing to the file, and therefore it fails to execute the get requests because the id feeder is empty.
SUMMARY
In karate-gatling, it would be good if we could get the output from a Karate scenario into the Gatling simulation so that I could, in this case, write to a file.
There is a separate issue in Gatling where I would need a lambda version of andThen for this to work as I would like.

you can call a scenario (by tag) and return data, I really don't understand what the problem is. writing to a file sounds like a made-up requirement, so maybe the right thing is indeed to write some extra java code: https://stackoverflow.com/a/54593057/143475
so far I consider this ask as very low priority

I was able to get my test case to work in raw-Gatling.
https://github.com/gatling/gatling/issues/4003#issuecomment-723977513
The important part being that I can get the id from the create output, add this to a queue, and use this as a feeder for my get input.
Is this possible in Karate-Gatling? (How) Can I access some output from a Karate scenario in a Gatling simulation?

@theathlete3141 I now this is a sample to illustrate what you want to achieve. But to be sure I understand well what you want to do, I'll try to explain it with my words.
In this Gatling test case, you do:

call 1 API, /cats to create one Cat and get its id back from the server
you run this call indefinitely
feed a Queue with the newly created IDs
read the Queue
call another API with the id from the Queue

Am I correct?
If so, I don't see why you want to dissociate the two calls. If what you want is to load test the server, there would not be any differences in doing the second call right after the first one. The calls would be the same, so the stressing would be the same too.

@sixdouglas almost - I only want to create a finite number of cats initially, rather than create them indefinitely.
The exact use case I was given (using generic terms):

Call the first API to create n objects. The response contains an id which is required in steps 2 and 3
Repeat across all objects at a rate r: call a second API to perform some modification to each object
Repeat across all objects at a rate r: call a third API to revert the action of step 2 for each object
Repeat steps 2 and 3 for a time t
In my simplified example, the get requests represent steps 2 and 3. Ignore step 4 - this is an additional complication which is separate to this main issue.

This test case is to load test each API individually. I know that it would be much simpler to develop a test where I didn't need to dissociate the calls for each object.

@theathlete3141 best thing is for you to contribute code. so far the only person who understands the gatling code (which is actually very few lines of code) is @sixdouglas - between you two I think you can figure it out. as I said, I don't see this as a priority for me any time soon.

1.0 released


Code CLI --clone command to clone a

Add support for opening a remote Git repository from the command-line:
~$ code --clone https://github.com/microsoft/vscode.git

Repository should be cloned into the current directory
New window should be opened on the folder of the cloned repository (e.g. ~/vscode)

Errors:

If the current folder is already a repository, show an error message.

I like this feature. How about just code https://github.com/microsoft/vscode.git?

Reason for the --clone is because it leaves room for other options in the future.

What if I want to open the Repo using GitHub Codespaces instead?
What if I want to open the repo just for read-only? Meaning: temporarily clone with --depth 1 to a temporary folder and open on Code for navigation.

All of these are interesting options as well.

This definitely feels like out of scope. I suggest to create an alias in bash which does this for you. Or even create a cli tool composing Code and git in such a way, if others are interested in such a feature.

@joaomoreno I think this is a shortsighted conclusion, considering the investment in Remote Development.
For similar reasons the CLI has:
  --folder-uri <uri>                Opens a window with given folder uri(s)
  --file-uri <uri>                  Opens a window with given file uri(s)

It wouldn't be hard to imagine the following either:
$ code --git-uri <uri>

@brunoborges here is a quick and dirty shell function that emulates the behaviour you are requesting:
code () {
        git clone --depth=1 $1
        code-insiders $(basename ${1%.*})
}

And then use it:
code https://github.com/microsoft/vscode.git


Pluggable sources

Do you have any plans to make sources pluggable?
I want to use other sources, like the S3, Cloud Storage, etc.
But it's needed to folk and add logic to Init sources and getSrc.

Hi. I belive this would be possible with #135 leveraging unstorage providers.

If you could give me a hint on how to make a S3 storage, I would appreciate it


BUG: kwargs were not passed correctly to ShellCommand.

The checks for the value of the key was checked with equality and not
identity leading to incorrect behavior.  Added simple tests for this.

Looks food, I agree it is always better to use is when comparing with Booleans.
Thanks for also writing the test, I think I'll merge this one right away.


Better integrating CSS by default

I write this issue for a problem that seems recurring, the "CSS". Indeed, I have seen many people unable to include CSS files in their projects (myself, using typeface-roboto and not wanting to change all the default configurations, I had to resolve to use a CDN). Next is really great, but I think a lot more documentation about CSS and ways to better integrated it would be appreciated by everyone.
Create-react-app creates a solid, durable webpack configuration for projects, why next would not do the same by default ? I think you could take example on their webpack cofigurations. 😄
In any case, good work, and incredible project! 👍 🎉
PS: I find your system very poorly designed, what are the differences between styles-jsx and CSS modules, which I find really better?

If you want to know more why CSS in JS (like styled-jsx) instead of CSS Modules and other alternatives check this awesome (and large) article by the creator of CSS Modules:

A Unified Styling Language

Using styled-jsx is not mandatory. You can add a stylesheet from the /static/ folder and don't use any kind of css in your components. Or have one stylesheet with global styles and the use styled-jsx just for the deep styles.

Hmm ... considering the benefits I see, I think change architecture for my styles and start working with the Next.js style system
Thank you !


[Bug] Error logged when deleting a template at the end of a round

In combat, when the actor that's going last also has placed a template that gets "deleted at turn end", when the "next turn/round" buttons are hit, there's a race condition because multiple hooks are trying to delete the templates at the same time (combat updated plus game time updated). So the first one that goes through deletes it, and the second makes an error show up in the UI.
This has been resolved for 1.0.1

Released in 1.1.0


[C++] Add C++ Solution for Problem Of The Day

Today's ques folder was not there.

@Rishav1707 always create the folder if necessary! I have created today's folder.


Fix broken clipboard after file copy

thx to amosbird in IRC for pointing out the error cause.

@mfleisz the error was the premature return

@akallabeth Yes I know - but I meant the DstSize = 0; line ... :-)


Long chromosome names cause silent problems in coarsegrain

Having  chromosome names which are longer than 32 characters leads to hard to detect problems in downstream analysis. When running cooler coarsegrain, the chromosome names that are obtained from the bins (via the special_dtype) don't match those in the chroms table, leading to incorrect bin_offsets and no coarse-graining.
The root cause appears to be the fact that chromosome names are truncated to 32 characters in _writer.py (e.g. CHROM_DTYPE = np.dtype('S32')), whereas they're kept in their original form in write_bins (e.g. enum_dtype = ...).
I've submitted a PR which errors out of the cload program when the chromosome names (sequence ids) are longer than 32 characters. Ideally this limit should be increased to 64 or 128 bytes as longer sequence ids are not uncommon, but I'm not sure if this will break backward compatibility with existing cooler files. In either case, there should be at least a warning or even an error because this will lead to downstream issues (as in coarsegrain) which are difficult to diagnose.

Thanks! This is a good fix for now. It will probably be better to make the chromosome names enums as they are in the bin table. There is a chance this can be done seamlessly with few backwards compatibility issues. I'll start a new issue.

See #46


doc: improve examples for syslog dest

:tada: This PR is included in version 2.3.2 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


This code in mj-hero makes no sense.

I could be really wrong of course but I do not understand this code:
From: https://github.com/mjmlio/mjml/blob/master/packages/mjml-hero/src/index.js#L49
I added my comments to the code.
getChildContext() {
    // Refactor -- removePaddingFor(width, ['padding', 'inner-padding'])
    const { containerWidth } = this.context
    const paddingSize =
      this.getShorthandAttrValue('padding', 'left') +
      this.getShorthandAttrValue('padding', 'right')

    // First we format the value to add "px" suffix.
    let currentContainerWidth = `${parseFloat(containerWidth)}px`

    // Now we parse the code again, but why?
    const { unit, parsedWidth } = widthParser(currentContainerWidth, {
      parseFloatToInt: false,
    })

   // We added the "px" suffix a few lines before, how can it ever be "%" unit?
    if (unit === '%') {
      currentContainerWidth = `${
        (parseFloat(containerWidth) * parsedWidth) / 100 - paddingSize
      }px`
    } else {
      currentContainerWidth = `${parsedWidth - paddingSize}px`
    }

    return {
      ...this.context,
      containerWidth: currentContainerWidth,
    }
  }

Yup some of the code are non-necessary today. It looks like we tried at somepoint to have a width attribute on mj-hero  so that's why we had to parse it back. This could be simplified easily now. Feel free to open a PR on this


Document push-config app in the snap

The push-config app in the edgexfoundry snap should be documented in the README to explain how to modify configuration files locally to push those changes in the files into consul.

As push-config has been removed as of the Geneva release, I'm closing this issue out.


Unable to create groups using sentry natively on php

I am using Sentry v2.1.4.
I using it natively on php through composer.
I am getting an issue while creating groups.
This is the error log
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.groups' doesn't exist (SQL: select * from groups where name = Moderator limit 1)
{My code}
$group = Sentry::createGroup(array(
'name'        => 'Moderator',
'permissions' => array(
'admin' => 1,
'users' => 1,
),
));
{/My code}
Can somebody please me help me ?

Well, I think that the error message speaks for itself:
 Table 'test.groups' doesn't exist

This tables does not exist in the database, probably because the necessary migrations were not run.

@stefanmajoor. Thanks for the response.
I solved it myself.
I knew from the error message that the tables were msiing and the necessary migrations were not run.
The official documentation at https://cartalyst.com/manual/sentry/2.1 does not mention how to perform migration when using sentry natively on php.
After digging the internet for close to three hours, I found the solution of how to run the migration
from the following links
http://www.ibm.com/developerworks/library/se-sentry/index.html
http://www.ibm.com/developerworks/library/se-sentry2/


Daemon_Conf: Investigate hard-coding addnode=*

Is this still needed to be hardcoded? what happens if one of these IPs is dead? We do not want to maintain a gross list of IPs if possible.

Looks like this PR will help us get this taken care of: https://github.com/RunOnFlux/fluxnode-multitool/pull/149


chore: go through generated rdocs and review formatting and doc strings

My hunch is that we haven't looked at the generated rdocs in a long time, and I'm spotting things like VersionInfo showing up despite having a :nodoc: declaration. Simultaneously, the VERSION constant doesn't show up, where I expected it to.
Let's set aside some time to review https://www.rubydoc.info/github/sparklemotion/nokogiri and find and fix some of those broken windows.

@flavorjones I looked into this and found out the following (which you may already be aware of):

...showing up despite having a :nodoc: declaration

I think this is because rubydoc.info uses yard, which does not support :nodoc: out of the box:
https://rubydoc.tenderapp.com/kb/getting-started-with-rubydocinfo/where-is-my-nodoc
grepping through nokogiri/lib there are some instances of @private use, but not as widespread as :nodoc: :
$ grep -r '@private' ./lib/ | wc -l
       3
$ grep -r ':nodoc:' ./lib/ | wc -l
      28

so if nokogiri actually wants to hide these instances on rubydoc.info they would need updating to yard tags, and include  yardopt of --no-private
note: spot checking locally generated rdoc does correctly produce the documentation you would expect:
$ rdoc lib
$ ruby -run -e httpd ./doc -p 9090

I briefly searched for an yardopt to fully support rdoc tags without luck

...fix some of those broken windows.

I am not sure what you meant here—didn't look into it.
so tl; dr: some options to consider:

support both. pros: rdoc and yard users both happy. cons: although yard is a superset of rdoc, it may be difficult to have consistent presentation between both without some case-by-case workarounds
standardize on yard tags. pros: more expressive documentation. yard features. better rubydoc.info presentation (caveat: comes with the yard private documentation philosophy). cons: ensuring rdoc users have useable documentation. losing rdoc features I am not aware of?
standardize on rdoc. pros: simple / already supported in code base. cons: live with worse rubydoc.info presentation
freeze rdoc usage, use yard going forward
something else?

I recommend figuring out the main use case for nokogiri's documentation and choosing the best option based on that.

@klandergren Thank you for spending time looking into this! I really appreciate your expertise, because I know next-to-nothing about Yard. Lots to think about here.


Query Chaining

Trying to chain some queries but I'm have some async issues. I need the use the result of the previous queries to perform 4 joins. Sometimes the result is as expected but other times the call finishes before all of the data is collected. Here is one of my recent attempts - this is all within a function that get's called to do a final fetch of my updated dated.
Any tips would be appreciated.

return db.with('stuff', result => {
    result.from('purchases')
    .where('user_id',userId)
    .andWhere('purchases.id',purchase_id)
    .whereIn('goals.id', goalIDs)
    .join('goals','purchases.id','goals.purchase_id')
    .orderBy('goals.purchase_id')
    .select('status','purchases.updated_at','url','name','goals.purchase_id','quantity','task','quantity_complete','goals.id as goal_id','user_id')
    })
    .with('stuff2', result2 => {
    result2.from('stuff')
    .leftOuterJoin('purchase_groups', function() {
      this.on('stuff.purchase_id', '=','purchase_groups.purchase_id')
     })
    .select('purchase_groups.group_id as purchase_group_id','status','updated_at','url','name','stuff.purchase_id','quantity','task','quantity_complete','goal_id','stuff.user_id')
    })
    .with('stuff3', result3 => {
    result3.from('stuff2')
    .leftOuterJoin('usergroups', function() {
        this.on('stuff2.purchase_group_id', '=', 'usergroups.id')
    })
    .select('title as purchase_group_name','purchase_group_id','status','updated_at','url','name','stuff2.purchase_id','quantity','task','quantity_complete','stuff2.goal_id','stuff2.user_id')
    })
    .with('stuff4', result4 =>{
    result4.from('stuff3')
    .leftOuterJoin('goal_groups', function() {
        this.on('stuff3.goal_id', '=', 'goal_groups.goal_id')
    })
    .select('goal_groups.group_id as goal_group_id','purchase_group_id','status','updated_at','url','name','stuff3.purchase_id','quantity','task','quantity_complete','stuff3.goal_id','stuff3.user_id','purchase_group_name')
    })
    .with('stuff5',result5 =>{
    result5.from('stuff4')
    .leftOuterJoin('usergroups', function() {
      this.on('stuff4.goal_group_id', '=', 'usergroups.id')
    })
    .select('title as goal_group_name','goal_group_id','purchase_group_id','status','updated_at','url','name','purchase_id','quantity','task','quantity_complete','stuff4.goal_id', 'purchase_group_name','stuff4.user_id')
    })

Query you have written should be single query sent to the DB without any async issues. Check what kind of query it outputs with .toSQL().

Just so I understand - is your snippet functioning differently than mine with the 'with' grouping?  I was able to write it all using knew.raw but it still required a setTimeout function to not return an empty response, which is why I assumed it was an async issue.

return db.raw(
        WITH pgsort AS(
        	SELECT purchases.status
        ,purchases.updated_at,purchases.url,purchases.name,goals.purchase_id,goals.quantity,goals.task,goals.quantity_complete,goals.id as goal_id,purchases.user_id
        	FROM purchases
        	JOIN goals ON goals.purchase_id=purchases.id
        	WHERE purchases.id=${purchase_id}
        ),pggroups AS (
        	SELECT pgsort.status,pgsort.updated_at,pgsort.url,pgsort.name,pgsort.purchase_id,pgsort.quantity,pgsort.task,pgsort.quantity_complete,pgsort.goal_id,pgsort.user_id,purchase_groups.group_id as purchase_group_id
        	FROM pgsort
        	JOIN purchase_groups ON pgsort.purchase_id=purchase_groups.purchase_id
        ),pggtitle AS(
        	SELECT pggroups.status,pggroups.updated_at,pggroups.url,pggroups.name,pggroups.purchase_id,pggroups.quantity,pggroups.task,pggroups.quantity_complete,pggroups.goal_id,pggroups.user_id,pggroups.purchase_group_id, usergroups.title as purchase_group_name
        	FROM pggroups
        	JOIN usergroups ON pggroups.purchase_group_id = usergroups.id
        ),gggroups AS (
        	SELECT pggtitle.status,pggtitle.updated_at,pggtitle.url,pggtitle.name,pggtitle.purchase_id,pggtitle.quantity,pggtitle.task,pggtitle.quantity_complete,pggtitle.goal_id,pggtitle.user_id,pggtitle.purchase_group_id, pggtitle.purchase_group_name,goal_groups.group_id as goal_group_id
        	FROM pggtitle
        	JOIN goal_groups ON goal_groups.goal_id = pggtitle.goal_id
        ),ggtitle AS(
        	SELECT gggroups.status,gggroups.updated_at,gggroups.url,gggroups.name,gggroups.purchase_id,gggroups.quantity,gggroups.task,gggroups.quantity_complete,gggroups.goal_id,gggroups.user_id,gggroups.purchase_group_id, gggroups.purchase_group_name,gggroups.goal_group_id,usergroups.title as goal_group_name
        	FROM gggroups
        	JOIN usergroups ON usergroups.id = gggroups.goal_group_id
        )
        SELECT *
        FROM ggtitle;

```  @elhigu

I just copied your query, and checked what was the query it outputted.
You problem is most probably elsewhere in your code. Try to create minimal test case which allows you to reproduce your problem.
I'm closing this issue, since this doesn't seem to be knex bug, but just an user error. Usually user problems should be asked in stackoverflow.

If I just do a simple Get Call with this query with no other functions - it will come up with an empty array unless I use a setTimeout
@elhigu

@bfletcherbiggs please send here an example code (one file) to reproduce the problem...

Here you go - not sure if you need more, but that's all the context of the function call.
knexRawExample.js.zip

yeah I cannot run that... its not even initializing knex and doesn't show the real place where the error in the code is. Complete test case should be runnable code, which creates table and inserts test data etc. anything that is required to really reproduce your specific problem.
Looking your code my best guess is that you are not waiting that query which initializes your DB is not completed and you try to query DB too early. There is no reason why that setTimeout is necessary.

I was able to solve it with a promise resolution
return new Promise(resolve =>             db.raw(             WITH pgsort AS(
SELECT purchases.status
,purchases.updated_at,purchases.url,purchases.name,goals.purchase_id,goals.quantity,goals.task,goals.quantity_complete,goals.id as goal_id,purchases.user_id
FROM purchases
JOIN goals ON goals.purchase_id=purchases.id
WHERE purchases.id=${purchase_id}
),pggroups AS (
SELECT pgsort.status,pgsort.updated_at,pgsort.url,pgsort.name,pgsort.purchase_id,pgsort.quantity,pgsort.task,pgsort.quantity_complete,pgsort.goal_id,pgsort.user_id,purchase_groups.group_id as purchase_group_id
FROM pgsort
JOIN purchase_groups ON pgsort.purchase_id=purchase_groups.purchase_id
),pggtitle AS(
SELECT pggroups.status,pggroups.updated_at,pggroups.url,pggroups.name,pggroups.purchase_id,pggroups.quantity,pggroups.task,pggroups.quantity_complete,pggroups.goal_id,pggroups.user_id,pggroups.purchase_group_id, usergroups.title as purchase_group_name
FROM pggroups
JOIN usergroups ON pggroups.purchase_group_id = usergroups.id
),gggroups AS (
SELECT pggtitle.status,pggtitle.updated_at,pggtitle.url,pggtitle.name,pggtitle.purchase_id,pggtitle.quantity,pggtitle.task,pggtitle.quantity_complete,pggtitle.goal_id,pggtitle.user_id,pggtitle.purchase_group_id, pggtitle.purchase_group_name,goal_groups.group_id as goal_group_id
FROM pggtitle
JOIN goal_groups ON goal_groups.goal_id = pggtitle.goal_id
),ggtitle AS(
SELECT gggroups.status,gggroups.updated_at,gggroups.url,gggroups.name,gggroups.purchase_id,gggroups.quantity,gggroups.task,gggroups.quantity_complete,gggroups.goal_id,gggroups.user_id,gggroups.purchase_group_id, gggroups.purchase_group_name,gggroups.goal_group_id,usergroups.title as goal_group_name
FROM gggroups
JOIN usergroups ON usergroups.id = gggroups.goal_group_id
)
SELECT *
FROM ggtitle;
         ).then(response => resolve(response))     )

That code is equivalent with return db.raw(...) except new promise wrapping causes rejections to be ignored.

Whatever the case - without the promise I couldn't get the query to work.  Typing in the raw SQL works great in Postico so I don't think it's a query issue.  Without the promise - I get an empty array. @elhigu

I don't believe it is the query either. Anyhow having to build up workarounds as you have added above means that you are doing something wrong in your knex code.
No one can help you to track out what it is because you are not providing runnable example code how anyone can reproduce the problem you are experiencing.


How to activate bg-mode?

How to activate background mode? :)
When I run app and then press "Home" device button, I get home screen, then I run another app, and do some other work. I see notification at the top of screen with title and text specified in code. I thought that bg-mode is activated. Because periodically bg still running (ajax calls), console.log working well (I see console output every 1 second), but:
document.addEventListener('deviceready', function ($http, FixRequest) {
  cordova.plugins.backgroundMode.enable();
  console.log('BG enabled');

  cordova.plugins.backgroundMode.configure({
      title: 'My Title'
  });

  cordova.plugins.backgroundMode.onactivate = function() {
    console.log('BG activated');
  };

  cordova.plugins.backgroundMode.ondeactivate = function() {
    console.log('BG deactivated');
  };

  cordova.plugins.backgroundMode.onfailure = function(errorCode) {
    console.log('BG failure');
  };

outputs only BG enabled and no more. Also, in every periodically function calling
          console.log('Is BG enabled ? ' + (cordova.plugins.backgroundMode.isEnabled() ? 1:0));
          console.log('Is BG active ? ' + (cordova.plugins.backgroundMode.isActive() ? 1:0));

result:
170   244750   log      Is BG enabled ? 1
171   244758   log      Is BG active ? 0

expected result:
170   244750   log      Is BG enabled ? 1
171   244758   log      Is BG active ? 1

How to activate background mode? Is a notification presence at the screen top is a sign of background mode? If so, why isActive() results false ?

Hi
I have the same problem. Basically, the code under the cordova.plugins.backgroundMode.onactivate function is never being executed, so I'm not able to do anything when app is in background.
I'm using Ionic 2 (2.0.0-alpha.40) and Angular 2 (2.0.0-alpha.46) and I noticed error in console every time my app goes from foreground to background and reverse.
Error: Uncaught TypeError: fnRef.apply is not a function
I did some debugging and found out that error is under the patchSetClearFunction function which, I think, is related to zone.js (used for Angular 2 change detection). Basically Angular2 is trying to call apply() on string: return fnRef.apply(this, arguments); where fnRef is a string ("cordova.plugins.backgroundMode.onactivate(null)")
I have not managed to solve the problem but I suppose the plugin isn't supported for Ionic 2 yet.
Any thoughts?

Hello,
I'm having the same problem now. Did any of you solved it? thank you

I'm having the same problem ... onactivate callback never gets called, and isActive() returns false no matter what i do ... please suggest a solution! thanks!

I'm having the same problem ...
platform verson cordova 6.1.1

I'm having the same problem...
Platform version Cordova 6.1.1

hi  @anteburazer
i using ionic2 too...and same problem with me ...
and i want to know , can i call a service(angular2) in the onactive function?

That shall be fixed in the meantime


[Feature] - fn key diff

Some way to the macOS app identifies when the FN key was pressed to dismiss the TouchBar, or activate the FN options from the system.

try shift + FN

Where is the option in settings to have it so that you hold fn and then lets say f7 to do the action, instead of just pressing it.

That's not there: this is just a demo app, not a fully featured application

If you keep on pressing FN btw, the Touch Bar will no disappear: it will only disappear after you released the FN key

Andreas, i got that only disappear when released, but that's what i'm suggesting, if you hold for 2-3 secs and than release, it not dismiss the TouchBar, only if pressed normaly.

there used to be a setting in mac os before searia, and it was under keyboard but now it's not their so I cant change it back.

We've just fixed this. Touch Bar toggles will now be ignored if:

A mouse click arrives during the toggle key keypress
The keypress takes too long (holding down the toggle key instead of pressing it)

Build the latest TouchBarServer from source code, or wait for the next release (1.6) which will include these improvements.


add the emNER eval scripts

Closing this PR, PRs should be against the develop branch: https://github.com/spacy-hu/spacy-hungarian-models/pull/28


hyprcursor-util ignores overrides

Hi,
When trying to build a cursor using hyprctl-util, all my define_override settings get ignored.
The log messages show overrides: 0 for every cursor.
This happens with v0.1.6 and v0.1.7.
The unzipped .hlc files contain a meta.hl where overrides are missing too.

meta.hl should be copied, so I am unsure how overrides can be removed?
Printing 0 is a bug yes

should be fixed with above

True, seems like I happened to look at a file without overrides.
However, the overrides don't seem to work for me.
When testing with this website, I see only the cursors where the directory name matches the requested cursor name.
Do you have any idea how I can debug this issue better?

seems to be working on my end. Can I get your theme?

posy.zip

I can see all cursors on the above website working fine. Latest hyprland and hyprcursor.

Interesting. I'm on current hyprland, using the nix flake from git.
Most cursors work, but some things (like ne-resize, s-resize, w-resize) don't. I'll try the tests.

It works for me in the tests. e.g. se-resize renders properly.
Seems to be an issue with chrome?

Just updated most hypr* apps' lockfiles, see if the issue still occurs.

Works now, thanks!


do not write syncLocalSettings.json if file has no change.

#363

@shanalikhan any plans to merge and release this?

@Stanzilla
https://github.com/shanalikhan/code-settings-sync/issues/363#issuecomment-316042977
@Cologler informed that this PR didnt fix the problem for him, if this PR fixed problems for you, let me know i will release it.

@shanalikhan The problem is proper-lockfile is cross process lock.
If start 2nd vscode process, the 1st vscode process will lose the lock because the 2nd run this code:
https://github.com/shanalikhan/code-settings-sync/blob/master/src/extension.ts#L29
code-settings-sync should be singleton instance on multi-process. 2nd vscode process should wait for lock instead of steal the lock from 1st vscode process.

@shanalikhan This PR remove some unnecessary write disk operation. Just an optimization.

Thanks, Merged ! @Cologler
Will release new version tonight.


cluster checks fail

I have following cluster checks failed with crate 0.54.9 on 4 nodes:

CRITICAL The setting 'discovery.zen.minimum_master_nodes' must not be less than half + 1 of eligible master nodes in the cluster. It should be set to (number_master_nodes / 2) + 1
CRITICAL The value of the cluster setting 'gateway.expected_nodes' must be equal to the maximum/expected number of master and data nodes in the cluster.

Although on all nodes I have following values in config:

discovery.zen.minimum_master_nodes: 3
...
gateway.expected_nodes: 4
gateway.recover_after_nodes: 3

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/36229510-cluster-checks-fail?utm_campaign=plugin&utm_content=tracker%2F505659&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F505659&utm_medium=issues&utm_source=github).

What output do you get if you query select settings['discovery'], settings['gateway'] from sys.cluster ?

settings['discovery'] -> {"zen":{"minimum_master_nodes":2,"publish_timeout":"30s","ping_timeout":"3s"}}
settings['gateway'] -> {"recover_after_nodes":2,"expected_nodes":3,"recover_after_time":"5m"}
Seems like settings were not taken by cluster. Restart?

How did you apply the settings?
gateway.expected_nodes and gateway.recovery_after_nodes are no runtime settings. You have to define them in the crate.yml or via command line argument.
discovery.zen.minimum_master_nodes can be set using the SET statement.

@eshubin i'm closing this ticket now. if this still is a problem, don't hesitate to open it again.


OOM when training SQuAD 2.0 on 8 V100 GPUs (32G) for batch_size 8

Hi,
We are very eager to try XLNet on machine reading datasets. Luckily, we have 8 V100 GPUs, each with 32G memory. According to the readme, it can hold the setting of batch_size=8 with seq_len=512.  Did we miss something to run it correctly? Or is the model just too large to run on these GPUs (unlike the readme says)?

train_batch_size is the per-gpu batch size.

I'm trying it on 4 P40 (22GB). Even with batch size 1 and max sequence length 128 OOM will occur. Do you have any progress on this problem?

I see. Thank you for your help! But we encountered another issue #127 . Could you please have a look at it?


Add a GitHub Actions workflow for Firestore

#no-changelog

I'll port the pod lib lint but separately.

SGTM


Added F2 shortcuts for renaming files & folders.

Closes https://github.com/godotengine/godot-proposals/issues/1916
There was no reason this could not have been done before it seems. 🤷
The only issue was that gui_input was not being accepted when the event was handled, so it kept propagating... That's all fixed now.

There was no reason this could not have been done before it seems. shrug
The only issue was that gui_input was not being accepted when the event was handled, so it kept propagating... That's all fixed now.

Do you think this can be safely cherry-picked to the 3.2 branch?

Yep, should be. Had a look at the 3.2 branch and the code is pretty much the exact same.

Thanks!

Cherry-picked for 3.2.4.


Removes the suppressLogging field

This PR fixes #104 by removing the suppressLogging field and related logic.

Thanks @kentcb !


editable="true" not  work

 i set this on  Labeling Interface but i can not edit table

Can you share your labeling interface configuration with us so that we can try and reproduce this? Also, the community slack is a great forum for getting help with project setup.


TextArea: errorState's border color is not working properly.

Describe the bug
The border color of textArea's errorState must be dangerColor. In some cases it does not work properly.
Expected behavior
The border color must be dangerColor until errorState is false.
Screenshots

Thats caused by checking focused state before error state.
Here is a PR for condition and test description
https://github.com/Trendyol/baklava-react-native/pull/66

Thanks for your contribution @yakupozbaydar 🎉

@pinarkizilarslan  thanks for merge,can you also check my other pr #65


dependency drift initial version

I added a first approach of a dependency drift function. That value can be used as quality metric for CIs

My initial thoughts are I don't think we should start incorporating analysis like this.
I think something like this would be better as a separate tool. Perhaps one that you can feed the JSON output to.
I'm thinking something that you could use like this in your builds:
dotnet-outdated --output-stdout ./ | dotnet-dependency-drift

Currently the output option only writes to a file. But I would be in support of adding functionality to support output to stdout to support usage like this.

You mean a tool for output analysis of a analysis tool, some kind of chain? I saw dotnet-outdated as a dependency analysis tool which reports everything around. You are right, if dotnet-outdated is a tool with strong focus on fixing outdated dependencies and adding additional functionality should bring value for the initial area.
I'm not sure if it make sense to put that 3 lines in a extra tool with much more glue code around. Furthermore the output file of dotnet-outdated needs to extend with some counters. For a good assessment of the situation I haven't enough  insights and trust your expertise.

I'm not necessarily against adding additional metrics as output.
But for CI use cases I'm thinking it's probably better to output more raw data in a machine readable format.
Maybe something like this as part of the JSON output?
stats: {
  totalDependencies: 10,
  outdatedDependencies: 3
}

And maybe additional stats on dependencies that have major/minor/patch versions available? (I haven't thought too much about how I would consume this information in a CI setting)
I guess percentage of outdated components is another stat. But it just feels like some assumptions are being made that any outdated component is equal.
A good example would be .NET Core versions. Even though 2.1 is an older version than 2.2 using the latest patch version of 2.1 is a much better place to be in than any of the 2.2 versions.
And for some dependencies being on a previous major version is a really bad place to be. Versus being on a previous patch version for a different dependency.

I think dotnet-libyear makes a better job.


switch from maintainer to label

hey there,
since maintainer is deprecated in favour of label, i suggest either you switch to the label command or remove the entire line.
source:
https://docs.docker.com/engine/reference/builder/#usage
greetings,
Benjamin

@kelseyhightower ping :)


Merge pull request #323 from supabase/fix/hidden-reveal

fix: only check hidden if reveal is true, to correctly handle reveal changes
What kind of change does this PR introduce?
Bug fix, feature, docs update, ...
What is the current behavior?
Please link any relevant issues here.
What is the new behavior?
Feel free to include screenshots if it includes visual changes.
Additional context
Add any other context or screenshots.
Good morning how’re you doing today

? wrong base ?


Bug Report Issue Template

Description 📜
Added Bug Report Issue Template
Fixes #314

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.

Please check this pull @ericdrosado !