BUG: Fixing schema validation failure on large errors

What is the context of this PR?

Currently large errors on schema validation hangs as its not able to properly extract the response body and apply formatting on it. As a part of this change provided proper regex to extract the response body and then applied formatting to print pretty.
Trello

How to review

To review this run the validator
Add phm_with_answer_code.json to the schemas
and then run scripts/validate_test_schemas.sh to validate the schemas.

Attempted to test this with a large schema with lots of errors and can't see too much difference between this and master - unless I am doing something wrong 😅 Did you see a larger hang on master? It hangs for a few seconds on both for me

Hi @berroar - Yes it does hang for me on master. Do you mind if I am able to show you this please


Chain mode: not all tracks progress together

It's a little bit confusing, not all tracks progress together in chain mode. I'm applying loop=4,row=(cur+1),apply=(1-20) to a row, and after 4 bars only some tracks progress to the next row:

the result is fascinating though.. the pattern never repeats

Can you confirm chain mode == AUT (automatic)

Like this:

Hmm.
That looks correct.
I can't replicate your behaviour. Which branch are running off?
The transition step for each track is calculated using the internal sequencer track length, and the number of loops you have set in the slot settings.
So if all tracks are to transition at the same time, they must have the same track length + number of loops.
665 void MCLActions::calc_next_slot_transition(uint8_t n) {
666
667   DEBUG_PRINT_FN();
668   uint16_t len;
669   DEBUG_PRINTLN(n);
670   //  DEBUG_PRINTLN(next_transitions[n]);
671   next_transitions_old[n] = next_transitions[n];
672
673   if (n < NUM_MD_TRACKS) {
674     len = chains[n].loops * mcl_seq.md_tracks[n].length;
675   } else {
676     len = chains[n].loops * mcl_seq.ext_tracks[n - NUM_MD_TRACKS].length;
677   }
678   if (len < 4) {
679     len = 4;
680   }
681   next_transitions[n] += len;
682
683   // check for overflow and make sure next nearest step is greater than
684   // midiclock counter
685   while ((next_transitions[n] >= next_transitions_old[n]) &&
686          (next_transitions[n] < MidiClock.div16th_counter)) {
687     next_transitions[n] += len;
688   }
689   DEBUG_PRINTLN(next_transitions[n]);
690 }

If track length is consistent across slots, can you upload your project file so I can take a look.

Uploaded the projects here:
https://www.yadli.net/index.php/s/89tGf5fWRQ6Kmjj

yat_md808 project.
Looks like your track lengths are different for each slot in row 0.

Use chain mode to write 16 tracks from row 0. This will load the slot(s) sequencer data in to the MCL internal sequencer.

Once the tracks are loaded, open the Step Sequence Page for each track and you will see that some track lengths are 16, and others are 64.

In Step Edit Page, you can set all 16 tracks to be the same track length by holding shift 2 and rotating encoder 3.

Then you must save these slots again from the Save Page.

Saving slots overwrites the chain settings for each slot, so you must configure chain settings again from the slot menu.

You will see some tracks have track length 16, others have track length 64.

I double checked my procedure:

I uploaded the md808/md909 kits and patterns with C6; Patterns in bank F,G,H; Kits from 001 to 013.
Switch to pattern F01 on MD (md909 pattern 1); Kit "MD909HOUSE2" is automatically loaded. Scale=64, plays fine on MD.
Now, on MC, create a new project. Push Save button, then Shift2 to pull the entire pattern down.
On MD, switch to an empty pattern (say B01), clear the pattern to double check.
Play. The pattern is streamed back from the internal sequencer. All good.
On MC, check the slots individually. Track1 scale=64, track2 scale=16, ...

I checked F01 and found that, despite Scale=64, some tracks are empty (no active triggers in 64/64) so, during [Save] it is converted to Scale=16?

Okay, your procedure looks right. And I think i know the problem.
With Seq Merge == AUTO, the MC should merge all MD sequencer data to the internal sequencer on Save. The track length for each internal sequencer track should be set to the MDPattern length.
However, i added a fix recently to prevent the internal sequencer length changing, if the MD track is empty.
I think i need to change this, to check to see if the internal sequencer  is also empty, if it's empty then still use MD->track length.
390 void MDSeqTrack::merge_from_md(MDTrack *md_track) {
391   DEBUG_PRINT_FN();
392
393   if (md_track->trigPattern == 0) {
394   //If the MD sequencer data is empty, abort merge.
395   //This will prevent unnecessary length change of internal seq pattern
396   return;
397   }
398   set_length(md_track->length);
399

can you change line 393 to:
if ((md_track->trigPattern == 0) && (pattern_mask != 0)) {

Yep that works. 💃

as this is a minor touch, I'm pushing it up to the sysex branch.

Cool. Small fixes like this can go on dev, or in this case I will cherry-pick on to master.

how do I mute the internal sequencer on MC?
I applied "clear" on a row, and cleared the MC sequence, and then chain-write it back so there's nothing on MD. But it kept streaming row0.

You can quickly clear all MD internal Sequencer tracks by entering a sequencer page.
and [ holding down shift 2 ] + [ press write ].
But let me check to see if i can replicate your behaviour

could you please try this:

clear a row in MC
observe that it kept streaming row0
manually edit the sequence to clear it
observe that nothing remains while playing, looking good
chain-write the empty row
row0 is back

yeah i just noticed.

ha! i think it's the track-cache buffer. let me try and work out why this is happening

it's not the buffer. i can have two empty rows still load up sequencer data.

okay. i'm not checking to seee if the slot is empty.
This was sort of done intentionally, as I want the chain data for empty rows to still be loadable.

I guess it's yet another check during write.
"if the slot is empty then ... "

Switching off chain mode does not affect this behavior.

this issue has a few dependencies. i'm going to need to think it through.

emm, I save the empty row and then it can be written properly.

So this is actually a behavior not covered in the manual:
Internal sequencer tracks are linked to the slot positions in the Grid.

When storing a track within the Save menu, the internal sequencer data for that track is
stored along with the track data in the specified slot.
Internal Sequencer tracks are loaded when tracks are sent to the MD or A4 in the Write
page.

But what I'm actually doing is to chain-write without first saving the row into the grid.
I do have auto save=ON, not sure if it's for this purpose.

So this is actually a behavior not covered in the manual:

Which behaviour?

I'm looking in to this issue. The fact that it's also appearing in Write mode, with chain mode disabled is perplexing.
For instance...
 27                                        A4Sound *analogfour_sound,
 28                                        EmptyTrack *empty_track) {
 29
 30   //       if (Grids[encodervaluer] != NULL) {
 31   MDTrack *md_track = (MDTrack *)empty_track;
 32   A4Track *a4_track = (A4Track *)empty_track;
 33   ExtTrack *ext_track = (ExtTrack *)empty_track;
 34
 35   DEBUG_PRINT_FN();
 36   if (column < NUM_MD_TRACKS) {
 37
 38     if (md_track->load_track_from_grid(column, row)) {
 39       memcpy(&(chains[column]), &(md_track->chain), sizeof(GridChain));
 40
 41       grid_page.active_slots[column] = row;
 42       if (md_track->active != EMPTY_TRACK_TYPE) {
 43         md_track->place_track_in_sysex(curtrack, column);
 44         return true;
 45       }
 46     }

Line 43 should place the slot/track in to the MD pattern+kit sysex and ALSO load the sequencer data.
But it shouldn't do that if the guard statement on line 42 fails.

Found one of the problems...
587 void GridPage::apply_slot_changes() {
...

625   for (uint8_t track = 0; track < count && track + getCol() < 20; track++) {
626     if (slot_clear == 1) {
627       grid.clear_slot(track + getCol(), getRow());
628       reload_slot_models = true;
629     } else if (slot_copy == 1) {
630       SET_BIT32(slot_buffer_mask, track + getCol());
631     }
632     slot.active = row_headers[cur_row].track_type[track + getCol()];
633     //  if (slot.active != EMPTY_TRACK_TYPE) {
634     slot.store_track_in_grid(track + getCol(), getRow());

Clears the slot, but then saves it again. d'oh

632     else {
633     slot.active = row_headers[cur_row].track_type[track + getCol()];
634     //  if (slot.active != EMPTY_TRACK_TYPE) {
635     slot.store_track_in_grid(track + getCol(), getRow());
636     }

fix ^

that's some intense logic.. that fixes it up :)

Yeah, that looks like the culprit. The other behaviour should be explained from this.

looks like now it doesn't write back to MD?

what do you mean?

there's another scenario currently if you're in write mode (or chain mode and sequencer stopped)
the empty row won't be loaded. ill probably fix this

what do you mean?

Both [Write] and [Chain] now clears MD sequence data.

oooh I know now, it's because the stored track data is stale.

not sure that I follow. can you explain in more detail.

it's more of a UI issue.
I had an empty row pulled down from MD, and the machine names were displayed in the grid slots (IM, B2, SD etc)
Then, I started programming on the MC internal sequencer, thinking that a [Write] would send it back to the MD sequencer.
What actually happened is that the old empty tracks are sent back to MD, right?

So in other words, MC internal sequencer data -> MD sequencer is impossible?

Yeah that's not supported.

Got it, thanks!
I'll think about how to make improvements to the UI.
For example, the grid slots should ideally provide info about both MD sequencer and internal sequencer. "Unsaved changes" would be cool too.
Also, There's space left on the save/write/chain page so I'll probably draw some pixel icons to fill it :p

"So in other words, MC internal sequencer data -> MD sequencer is impossible?"
I guess to better appreciate why, you have to understand how the firmware evolved.
Originally Write mode was the only mode available. You would save and write tracks too and from the MD.
When the internal sequencer was added we started saving internal sequencer data along side the MD pattern + kit information.
Finally, I worked out that chain mode was possible, but in order to do it, we couldn't transmit pattern data back to the MD. So SEQ MERGE was invented to import your MD pattern data in to the internal sequencer.
Write mode still has its uses. For instance, when the sequencer is stopped and chain mode is active, write mode is used behind the scenes to send the full kit information including Kit Name and Master FXs.
--
I think in the future write mode might become inaccssible to users. But for the time being it's useful to have both.

Yeah I understand this (did my homework and read the manual!). To chain it smoothly we even need to swing across multiple patterns (P+/P-) to get the kit information right.
I use write mode as a poor man's PlusDrive :p

I'm imagining the following workflow:

Create some sequence data on MD. Currently it's still more accessible because the correspondence between the screen and the parameters, easier to jump between tracks etc.
Save and merge it with MC like committing from working set into a version control system.
After that the MD pattern can be cleared & to be sketched for something else.

(I wouldn't bother using these anymore unless you insist on using write mode)
Chain mode does seamless transitions by interleaving Machine/Sound data in between 16th notes. There's no pattern switching on the MD, just reassigning Machines to Tracks.

That workflow is valid, and similar to how I use it.
Sometimes I will work with the internal sequencer. But most times I'll use the MD sequencer for quick work, and then save + merge when I'm satisfied.

a quick question: with MC connected, can I tweak the parameters on MD while playing?
I'm getting some kind of cross-talking with parameters, between tracks.

Did you accidentally select voices in polyphonic mode? Parameter changes on one voice will automatically update the others.

You can tweak parameters, provided the trigger interface is not active.
The current page will close automatically if you try and tweak a parameter with the trig interface active. This is because the trigger exploit fails when the MD display is updated.

I'm leaving the default settings for poly mode (first 4 tracks) but I'm not actually using this feature.
Should I disable the poly voices?

eek. are those default values ?

yeah. :D

82   poly_mask = 0;
default should be no tracks selected. unless there is a bug somewhere?

i wonder if there is overflow
 14 class MCLSysConfigData {
....
 28   uint8_t cur_row;
 29   uint8_t cur_col;
 30   uint16_t poly_mask;

hmm, it should not overflow in that way.. right?

I might have something weird like mcl_config.cur_col = (uint16_t) val;
somewhere

perhaps I did change the settings but I'm not sure how I picked up the number 4.
I was like "ooh brilliant 4-voice poly mode!" :D

i'm suspicious because i think i may have seen this before, but ignored it for same reason.
will  need to investigate.

I'll disable the poly voices and test for a while.
Let's see if the problem can be contained in the config initialization stage.


[crio] does not work when /etc/containers/policy.json is unavailable on the host

[kubelet-crio] E0824 07:42:07.848387   13836 pod_workers.go:186] Error syncing pod f2bae4d7-a770-11e8-8182-7a7eddbf465f ("foo-7b675c6d5-trfmv_default(f2bae4d7-a770-11e8-8182-7a7eddbf465f)"), skipping: failed to "CreatePodSandbox" for "foo-7b675c6d5-trfmv_default(f2bae4d7-a770-11e8-8182-7a7eddbf465f)" with CreatePodSandboxError: "CreatePodSandbox for pod \"foo-7b675c6d5-trfmv_default(f2bae4d7-a770-11e8-8182-7a7eddbf465f)\" failed: rpc error: code = Unknown desc = error creating pod sandbox with name \"k8s_foo-7b675c6d5-trfmv_default_f2bae4d7-a770-11e8-8182-7a7eddbf465f_0\": open /etc/containers/policy.json: no such file or directory"

workaround #31: create ~/.local/share/usernetes/_etc_containers/policy.json on the first boot and bind-mount ~/.local/share/usernetes/_etc_containers/ on /etc/containers
@giuseppe @rhatdan
Could you modify rootless crio (and podman/skopeo perhaps) to use ~/.config/containers instead of /etc/containers?
Also, it would be great if crio can generate default policy.json automatically.

I've opened a patch for podman: https://github.com/containers/libpod/pull/1336
Going to take a look at the CRI-O side now

thanks!

@AkihiroSuda should be enough to override this setting crio --signature-policy=..  What do you think?

Yes, probably it is ok for now

I'll prepare a PR soon


Ability to extend required and order of sections rules

After reviewing the source code for these 2 rules, I was wondering if there could be a way to extend the options to allow other sections to be required and be in a specific order?
In our specific use case, we want all of our README files to have a "Troubleshooting" section and have it be in a specific order.
Any help would be greatly appreciated! Thank you!

There should be a way! But I don't know what it is at the moment, and I'm so far removed from this project in time that I'm not sure it makes sense for me to dive back into it to find it. Good luck if you end up doing so!


Stomp client is not always fetching data even if the connection is established

Hello everyone, i'm using stomp client websocket for building a constant connection between my front-end layer and the integration layer. Sometimes in about 50/50 when i login the websocket does not fetch data to the console. Let me share you my code:
import SockJS from 'sockjs-client';
import { Stomp } from 'stompjs/lib/stomp';
import authTokenHandler from './authTokenHandler';
export const SockJSWrapper = {
init: endpoint => SockJS(endpoint)
};
/**

Manages the stomp client connection.
SockJS is used as a websocket abstraction.

@type {{connect, disconnect}} the exposed connect and disconnect methods
*/
const stompClient = (() => {
// The interval in seconds that re-connection will be
// attempted in case of connection failure.
const reconnectInterval = 10;

// An array of endpoints that the stomp client will subscribe.
let subscriptions;
// A function to be called when authorization fails.
let onNoAuthCallback;
// The sockJS object.
let socket;
// The stomp client.
let client = null;
// The ID of the function that will execute the client re-connection.
// Needed in order to cancel the re-connection attempt.
let reconnectID;
// The function to be executed when the connection is lost.
// Attempts to re-connect.
let stompDisconnectCallback;
// When connection fails this will be checked before trying
// to reconnect.
let reconnectOnFailure = true;
// The function to be executed when the connection is established.
// Subscribes the client to the predefined end points.
const stompConnectCallback = () => {
subscriptions.forEach((r) => {
client.subscribe(r.route, r.callback);
});
};
// Initializes the stomp client connection. If the
// endPointsToSubscribe param is provided, initializes the
// predefined endpoints where the client will subscribe.
// Same for the no auth callback.
const connectClient = (noAuthCallback, endPointsToSubscribe) => {
// When the user is not authenticated run this callback
if (noAuthCallback) {
onNoAuthCallback = noAuthCallback;
}
// Create the subscriptions array with the endpoints that we will listen to
if (endPointsToSubscribe) {
  subscriptions = endPointsToSubscribe;
}

if (client !== null && client.connected) {
  clearInterval(reconnectID);
} else {
  // A get request is performed in order to identify session
  // timeout and act accordingly.
  const websocketEndpoint =
    `/edge/websocket?x-auth-token=${authTokenHandler.getAuthToken()}`;
  fetch(websocketEndpoint).then((httpResponse) => {
    if (httpResponse.status === 401) {
      /* Probably session time out */

      // Do not retry
      clearInterval(reconnectID);

      // Do whatever you are told to do when authorization fails
      onNoAuthCallback();
    } else {
      // Attempt websocket connection
      socket = SockJSWrapper.init(websocketEndpoint);
      client = Stomp.over(socket);
      client.connect(
        {},
        stompConnectCallback,
        stompDisconnectCallback
      );
    }
  });
}

};
stompDisconnectCallback = () => {
clearInterval(reconnectID);
if (reconnectOnFailure) {
reconnectID = setInterval(connectClient, reconnectInterval * 1000);
}
};
// Do not reconnect the client after connection failure.
const abortReconnect = () => {
reconnectOnFailure = false;
subscriptions = null;
onNoAuthCallback = null;
socket = null;
client = null;
};
// Expose only a connect and a disconnect method.
return {
connect: connectClient,
isConnected: () => (client !== null && client.connected),
abortConnection: abortReconnect
};
})();
export default stompClient;
When i login i dispatch an action which is used to establish a solid connection. The code is here:
import { channel } from 'redux-saga';
import { put, take } from 'redux-saga/effects';
import { hashHistory } from 'react-router';
import {
setAlertsNotifications,
showNotification,
setCurrentValue
} from '../actions';
import stompClient from '../stompClient';
// Runs whenever a message is received form the web socket
const onWebSocketMessage = (wsChannel) => {
function wsMessageCallback(message) {
const content = JSON.parse(message.body);
const originatingService = message.headers.ocp_serviceName;
switch (originatingService) {
case 'insertNotifications':
wsChannel.put(setAlertsNotifications('newNotifications', content.notifications));
wsChannel.put(setCurrentValue('unreadAlertsNum',
content.unreadAlerts));
wsChannel.put(setCurrentValue('unreadNotificationsNum',
content.unreadNotifications));
wsChannel.put(setCurrentValue('newAlertsNum', ''));
wsChannel.put(setCurrentValue('newNotificationsNum', ''));
// } else {
//   // error arrived
//   wsChannel.put(
//     setAccountInfo(
//       undefined, undefined, undefined,
//       content.ocp_errorCode, content.ocp_errorDescription)
//   );
break;
default:
wsChannel.put(setAlertsNotifications('newNotifications', content.notifications));
wsChannel.put(setCurrentValue('unreadAlertsNum',
content.unreadAlerts));
wsChannel.put(setCurrentValue('unreadNotificationsNum',
content.unreadNotifications));
wsChannel.put(setCurrentValue('newAlertsNum', ''));
wsChannel.put(setCurrentValue('newNotificationsNum', ''));
}
}
return wsMessageCallback;
};
// Runs whenever a user is not authorized to view the system
const onNoAuthCallback = (wsChannel) => {
function wsNoAuthCallback() {
hashHistory.push('/login');
wsChannel.put(
showNotification('Session timeout', 'danger')
// TODO clear store here
);
}
return wsNoAuthCallback;
};
export default function* setupWebsocket() {
const wsChannel = channel();
const messageCallback = onWebSocketMessage(wsChannel);
const noAuthCallback = onNoAuthCallback(wsChannel);
stompClient.connect(
noAuthCallback,
[
{
route: '/user/queue/command_response',
callback: messageCallback
}
]);
/* eslint-disable no-constant-condition /
// Whenever an action is triggered from the callbacks
// that belong to the wsChannel take it and dispatch it
while (true) {
/ eslint-enable */
const action = yield take(wsChannel);
yield put(action);
}
}
As a result, when a message arrived it should be pushed through the websocket. But sometimes, it is working properly, and sometimes even if the connection is established no data are pushed. Why is this happening? I 'm giving a lot of effort to solve the issue but nothing works
Last but not least, when the service status for the websocket is OK, the data are not fetched. When, the status is OK and the auth-token is changed the data are fetched
In the console, it also shows me this:
Web Socket Opened...
stomp.js:134 >>> CONNECT
accept-version:1.1,1.0
heart-beat:10000,10000
<<< CONNECTED
version:1.1
heart-beat:0,0
user-name:gpat
connected to server undefined
stomp.js:134 >>> SUBSCRIBE
id:sub-0
destination:/user/queue/command_response

Hi,
it can happen if you are connected to a queue ('/user/queue') and have more than one client listening to it.

I have a similar problem. If I reload the page (triggering a new connect) less than one minute after I loaded it, the STOMP connection will connect successfully, but I don't receive any data from the queue I subscribed to. No error handler is called. If I wait more than one minute before reloading, I receive data normally after the reload. I am unsubscribing the topic and disconnecting the STOMP connection when the page is unloaded. I know that only one client is connecting to the server.
Did you find a solution to your problem?

It sounds like you have an asynchronous problem, like for example you send unsubscribe after reconnecting... Best might be verifying on the server what it receives and in which order...
If this is not already the case, using Promise or observables could help ;)
(for example library https://github.com/fpozzobon/webstomp-obs :p )

i've seen similar behavior against a spring (5) backend

I have had similar problems.
Most of the time a server or even OS restart was the solution. The stomp client seems to get kinda buggy as soon as you ran more than one or two extra connections in one session.


Make initializer and properties of types to be public

To use the CGTCalcCore with custom input, these need to be public.

Codecov Report

Merging #3 (44b2a48) into master (0391b99) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master       #3   +/-   ##
=======================================
  Coverage   99.49%   99.49%
=======================================
  Files          16       16
  Lines         790      790
=======================================
  Hits          786      786
  Misses          4        4

Impacted Files
Coverage Δ

Sources/CGTCalcCore/Models/AssetEvent.swift
100.00% <100.00%> (ø)

Sources/CGTCalcCore/Models/Transaction.swift
100.00% <100.00%> (ø)

Sources/CGTCalcCore/Parser/DefaultParser.swift
100.00% <100.00%> (ø)

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 0391b99...44b2a48. Read the comment docs.

Replaced by #6


TypeScript Error: Unable to Find Declaration File for @viselect/react Module in Next.js Project

What is the problem?
I'm trying to use @viselect/react in my Next.js project with TypeScript. However, I'm encountering an issue where TypeScript is unable to find a declaration file for the @viselect/react module. This is causing my build to fail.
What is the current behavior?
When I try to import @viselect/react into my project, I get the following error:
Could not find a declaration file for module ‘@viselect/react’. <EMAIL_ADDRESS>implicitly has an ‘any’ type.
Please provide the steps to reproduce and create a CodeSandbox.
Unfortunately, I'm unable to provide a CodeSandbox link as this issue is occurring in my local development environment. However, here are the steps to reproduce:

Create a new Next.js project with TypeScript.
Install @viselect/react using npm or yarn.
Try to import @viselect/react into a component.

What is the expected behavior?
I expect to be able to import @viselect/react without any TypeScript errors.
Your environment:
Toolset: vite
Version (@viselect/react): 3.4.0
Browser: Chrome (latest)
OS: Windows
Framework: ReactJS
Library: NextJS
Language: Typescript

Fixed in #213 :)


Error in svg_to_npz.py

When I try to run the script svg_to_npz.py using the sample input (I tried both default parameters and custom ones), I get the following error:
ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (59,) + inhomogeneous part.

You could try a lower version of python (mine is 3.7.12) to see if it works


Evaluate plugin managers

It is a waste of time to write our own modules/plugins while there is many projects dedicated just to provide a flexible plugin management for zsh.

I agree that we should look into these. I was just discussing this with a former Prezto user on a recent issue: https://github.com/zsh-users/prezto/issues/24#issuecomment-284137400.
If Prezto provided a path to load external plugins, we'd get access to a wealth of independently maintained plugins. Adding external submodules for all of these would blow up our maintenance. OMZ has almost 700 open pull requests. It's clear that model doesn't work.
One of the weaknesses of plugin managers is slow startup time. A few active projects are aiming to do it faster. Hopefully these efforts will be successful. As a stopgap, we could write our own integration for fast loading, while letting the plugin deal with installs and updates and the like.
 I'd like to hear from other people what they think about plugin managers, their experiences with them, success stories, pain points.
Let's post nominations in this thread. If folks could thumbsup the ones they use we could get some informal votes on where to focus.
For background, this is a blog post about Antigen from 2014, and another by the author of zplug from 2015.

Nomination for zplug

Fairly popular and easy to use. ✔
Supports function-only modules, like Prezto does. ✔
Actively maintained. ✔
Has a cache mechanism which speeds up loading a little. ✔

I've played around with it a bit, so I'll volunteer to experiment with a Prezto integration. In my experience it was impossibly slow (at least by my standards). Though I've got a few tricks up my sleeve. 😏

@belak could you evaluate zplug? we can share our thoughts later

@belak Would be great if you could do that!
I've got a branch with a "zplug" module that loads configured modules from the zplug cache. It's kind of a hack, but it's working okay. Let me know if there are problems on your system.
It doesn't update dynamically, though it averages about 600 ms faster 💨  than loading zplug directly. Promising.

Current candidates: antigen, zplug, zgen. I'm working on a summary of each of them and I'll post that when it's ready.

antigen
https://github.com/zsh-users/antigen
Advantages

Also falls under the zsh-users umbrella
Existing support for prezto
Fairly active and maintained
Largest community of the 3

Disadvantages

Not as full featured as zplug

zgen
https://github.com/tarjoilija/zgen
Advantages

Existing support for prezto
Very small and simple (2 files, around 500 lines)

Disadvantages

Smallest community
Updates aren't as frequent

zplug
https://github.com/zplug/zplug
Advantages

Very full featured
Still fast (according to their benchmarks)
Very actively maintained

Disadvantages

Fairly complex (Over 5000 lines across many files)

Hey guys, sorry for perhaps a dumb question, but I really want to clarify this for myself... If a plugin manager is a way to extend zsh, what remains of a prezto then, what is its purpose? In other words, why would I install prezto, if I could simply install antigen and use it to get all the plugins that I want? Will I even need to install prezto, or I will just install antigen and reference those prezto modules those I need?
 I imagine the prezto/modules folder is going to be cleaned up a lot, because when using antigen we could install all external modules from their original repositories.

What I was told when I asked pretty much the same question in gitter is that a plugin manager would just be a convenient way for users using zprezto to install external plugins without too much configuration. There are a few PoC branches lying around which add antigen or zplug as a plugin of zprezto.

Just as a side note, it seems zim is quite fast, too: https://github.com/Eriner/zim/wiki/Speed

I didn't include Zim in my list above because it looked more like a collection of modules with a plugin loader than just a plugin loader. I'd be happy to do a quick comparison if it's wanted though.

I would love a quick comparison. To me speed is n. 1 priority. Looking at the benchmarks on that page, it is even slightly faster than Prezto.
Thanks!

I honestly think zim is out, because (as far as I can tell) it's a replacement for zprezto and can't load external plugins which is most of the reason for this issue to exist.

In #44 thread, @malikoth put out a great tagline for his vision of Prezto: Make common things easy, and rare things possible.
He identified the plugin manager as the second part, making rare things possible. That's exactly how I see it.

As current user of this fork of Prezto, I am happy with all decision will be made. I just hope speed will be kept also high in the priorities.

The rationale behind not using plugin managers is that plugins will conflict making them notoriously difficult to debug. By approving each module via merging, one can guarantee that it has been tested not to conflict with other modules. Of coarse, manually testing a new, complex module against all other modules is time consuming.
Pick one:

Plugin manager.
Conflict-free setup.

Thank you. Personally, I prefer a highly curated, fast, productive zsh than do-it-yourself approach.

@sorin-ionescu, it’s good to hear your rationale. And nice to see you in these discussions! You're a wealth of knowledge on the consequences and tradeoffs of these proposals.
I understand and agree with your point. If a user installs external stuff it can’t be tested with the rest of the distribution. These conflicts could be difficult to debug. Though, a standard install method for externals would make that process more efficient.

Pick one:

Plugin manager.
Conflict-free setup.

Couldn’t we have both? The plugin manager wouldn’t replace the module system. The default setup is conflict-free. The plugin manager could be a module. If they want the convenience they turn it on.
I'm championing this idea because Prezto shouldn't try to be all things to all people. Rejecting a new feature is straightforward when there's an easy workaround for the 1% of users who want it. I emphasize easy because it means there's no downside to the decision. The best ideas float to the top as they organically gather popularity. This can be judged by stars, activity, maintenance, which is the best kind of voting since it covers quality and reflects what people actually use, not just what they think they want. When one of these ideas has crossed the threshold, it can be merged in. By that point the debates have occurred and the dust has settled, so there's no thrashing. ESLint handles this well. Very little of what's proposed gets added to core, and what does has often been proven out in plugins.

 I'd like to hear from other people what they think about plugin managers, their experiences with them, success stories, pain points.

The way I use Prezto is by loading it and some of its modules via zgen. This is not a nomination for using zgen as Prezto's plugin manager, I don't know enough about it to put that opinion forward.
Two main reasons why I did this:

I didn't want to maintain a fork.
Easy to bring in other plugins.

I'm happy with this setup, and I did spend some time researching it. zplug was too young when I was choosing a plugin manager, it looks more mature now. zgen seemed lightweight, simple, and stable. I haven't had any issues with my setup.
If Prezto brings in a plugin manager, as long as it's an optional module then that's fine. Even if it's enabled out of the box that would be fine for users like me since I'm not actually using zpretzorc.

Figured referencing this issue in my comment over on #44 would create a reference here but I don't and I think it's relevant here too so: https://github.com/zsh-users/prezto/issues/44#issuecomment-288005715

I've been thinking about this quite a bit lately... and at the end of the day, I'm not sure a plugin manager belongs as a plugin in a configuration framework. If a user wants external plugins, it's already fairly easy to use something like antigen or zplug along with prezto... and those integrations are already maintained by those plugin managers. It seems like additional complexity we'd end up taking on and having to maintain in the future which would only provide limited flexibility for users.


Add crypto_auth

This builds on heaps of work by @chm-diederichs and is basically just
the cherry on top that exposes all of the underlying work that they've
done. The changes from this commit:

Write sodium_memcmp()
Expose crypto_auth() and crypto_auth_verify()
Fix 'crypto_auth_hmacsha512_BYTES' typo.
Change output in crypto_auth_hmacsha512256()
Change vn() to return boolean rather than 0/-1.

I'm thinking we should only expose crypto_auth and crypto_auth_verify and keep the hmac methods internal in order to keep parity with sodium-native, in which case we can remove crypto_auth_hmacsha256 and crypto_auth_hmacsha512 methods entirely

depends on https://github.com/sodium-friends/sodium-javascript/pull/33

Thanks for pointing out that stray || -- I've rebased to fix that, new commit is 2da3ae2.

Awesome! Thanks for catching this!
I'm going to make an issue on this, because we've been making sure new methods return booleans, but really we should go through the whole library and make sure we return booleans where and checking subsequent logic.
In this specific case, I think we can even remove the call to sodium_memcmp because under the hood, both methods call vn(correct, 0, h, 0, 32) in crypto_verify.js, whereas in libsodium sodium_memcmp has some concurrency logic as far as I can make out

It looks to me like libsodium's sodium_memcmp is the same as our sodium_memcmp and our vn (crypto_verify_n), but libsodium's version of crypto_verify_n is... interesting. I'm not sure why libsodium does both, but if we're confident that only one is necessary then it seems reasonable to remove the other.

Just pushed a commit removing the extra API. I think this is the right move since it isn't supported in Sodium-Native and is untested.

I hadn't realised crypto_auth unlike the crypto_auth_sha* methods only accepts keys of crypto_auth_KEYBYTES length, so I just added assertions for that


add exception handling for getting token

Codecov Report

Merging #11 into master will increase coverage by 0.69%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #11      +/-   ##
==========================================
+ Coverage   92.58%   93.27%   +0.69%
==========================================
  Files           8        8
  Lines         364      372       +8
  Branches       48       50       +2
==========================================
+ Hits          337      347      +10
+ Misses         19       18       -1
+ Partials        8        7       -1

Impacted Files
Coverage Δ

anymotion_sdk/auth.py
95.74% <100.00%> (+0.62%)
:arrow_up:

anymotion_sdk/client.py
94.88% <100.00%> (+1.20%)
:arrow_up:

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 297a30e...af5fac7. Read the comment docs.


Should DELETE artifactory/config/admin cleanup all leased tokens?

If you DISABLE the plugin mount, vault will try to cleanup all the leased tokens.
However, if you vault delete artifactory/config/admin, we could potentially leave behind a bunch of leased (generated) tokens in Artifactory, which by default, never expire.
Should the plugin be cleaning all of those up?
I am wondering if we provide this  "DELETE" endpoint, if that means that we need to code in the cleanup?

On first read, this make senses. I'm trying to think through if there're other scenarios in which deleting any tokens in Artifactory is undesirable.

Right, I am not sure if it is even possible to do. I am not sure if we should even provide the endpoint. We should probably look at other plugins?

Maybe we only cleanup if the token has been rotated? Once it has been rotated, it is under vault's control, so it should be revoked on deletion. If the token has not been rotated, there is a small possibility, that they got a single admin token and used it for more than one thing (bad practice), or they could be planning to maintain the admin token using another system.


Evaluate & optimize code sharing between IDPE & OSS (notebooks)

It is likely that some of the service and storage code will be identical between the IDPE and OSS implementations of notebooks. Measures should be taken to ensure that this shared code is managed in a sustainable way.

Since the current IDPE notebook service is in a different langage than Go, there are limited opportunities for code sharing at the moment. This may be able to be re-evaluated in the future.


Add alternative for 'Gmail less secure apps'

I found a way to avoid use of Gmail less secure apps

Please check my English's spelling! :-)


Get-SqlDatabase and Invoke-Sqlcmd Piping

Is it possible to do the below?
$Database = Get-SqlDatabase -ServerInstance $Server -Name $Name
$Database | Invoke-Sqlcmd -Query "Insert Into..."

Hi @van-thieu, that is not supported (at least today).
Have you considered something like:
$Database = Get-SqlDatabase -ServerInstance $Server -Name $Name
$Database | % { Push-Location (Convert-UrnToPath $_.Urn); Invoke-Sqlcmd -Query  "Insert Into..." -SuppressProviderContextWarning; Pop-Location }

or
$Database = Get-SqlDatabase -ServerInstance $Server -Name $Name
$Database.Parent | Invoke-Sqlcmd -Query '...' -Database $Database.Name

I suppose I could make the cmdlet a little bit more tolerant and accept a SMO Database object (the type returned by Get-SqlDatabase) and not just SMO Server or string.
The "problem" is that today we are stuck with -ServerInstance being the argument from the pipeline... and changing that would be a breaking change for many people.
Perhaps, we could just keep the -ServerInstance name as it is and accept the database object as well. or something like that... it would be a bit (or a lot) confusing though...

Thanks.
Hopefully, it could be more dynamic in the future.


It shows the notion logo in the notion-topbar div

When I implement hte worker script on Cloudflare, it still shows the notion logo in the top right next to the light/dark toggle. Similarly on mobile the 3 menu dots appear.
How do I get rid of this for a cleaner design like on Fruition.com and other sites in the gallery like https://lettersfromquarantine.xyz/98b41102d1b947508c6735e6476de983 ?

hi, does the worker with the new notion work for you ? it does not work anymore for me. I get "ERR_TOO_MANY_REDIRECTS" as info when visiting my domain

I have the same issue on https://notionsite.xyz. Managed to fix this on my other site with additional CSS updates. The mobile nav is also broken. It shows the toggle without padding and more menu with all the notion features and logo.

::-webkit-scrollbar, div.notion-topbar, div.notion-topbar-mobile, div.notion-topbar > div > div:nth-child(3), div.notion-topbar > div > div:nth-child(4), div.notion-topbar > div > div:nth-child(5), div.notion-topbar > div > div:nth-child(6), div.notion-topbar-mobile > div:nth-child(3), div.notion-topbar-mobile > div:nth-child(4) { 	display: none !important; } div.notion-topbar > div > div:nth-child(1n).toggle-mode, div.notion-topbar-mobile > div:nth-child(1n).toggle-mode { 	display: block !important; } /* * { 	font-family: sans-serif !important; } [class~='header'] { 	font-family: serif !important; } .notion-page-content { 	font-size: 20px !important; } */


Cluster health monitoring

There does not seem to be any out-of-the-box cluster health monitoring options that come with Azure\OMS\Service Fabric Analytics. There seems to be a lot of options for monitoring applications themselves with custom coding, but what is the recommendation for cluster health monitoring at an enterprise level.
Is it possible to get cluster health data into OMS?
What are the suggested metrics for health monitoring?
Can data from Service Fabric Explorer be aggregated into OMS?

Service Fabric exposes a set of events from the platform today that include health events for health reports emitted by various entities in the platform. On Windows today, these events are available via an ETW provider, through the operational channel - detailed, and the base operational channel as well in version >=6.2 (just being released at the time of this comment). Specifically:

Yes - via the operational channel. Modify the WadCfg in your cluster's ARM template based on this file (https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-diagnostics-event-aggregation-wad#log-collection-configurations) to include<PHONE_NUMBER>427387912 as the scheduledTransferKeywordFilter if your cluster is below version 6.2. 6.2 onwards, the default setting should work.
Would be good to track % of time healthy, for an app, service, or node, since that may impact availability of your deployed workloads. I would also recommend setting up an alert if any nodes, cluster, or application goes unhealthy for more than 1min in your cluster.
Health report data visible in SFX results in corresponding health events that can be pushed into OMS / Log Analytics. What other data would you like to see in OMS?

We're also working to bring the same experience to Linux in the near future.

Regarding #1, are there specific queries that you would recommend? Is the same level of data that is available via the REST API (https://docs.microsoft.com/en-us/rest/api/servicefabric/sfclient-index) available via this logging?

I believe you get slightly less information than from the REST API, but you should have all the important bits (entity and health state), as well as info on the health report in there. I would suggest querying based on HM being the task for the event, i.e., with something like: ServiceFabricOperationalEvent | where TaskName  == "HM"

This answers my question - thank you


Error 10

hi argon
I'm glad you can pay attention to this issue, i catch a error ,code 10. i fond "apnsShutdown": 10 in lib/error.js ,but i don't quite understand this mean. is apns shut down server? or other mean?

It indicates that the APN gateway is shutting down and needs to close the connection. To continue sending notifications node-apn needs to reconnect. It is not an error which you usually need to worry about.

On 3 Nov 2015, at 02:06, zhaoxuan<EMAIL_ADDRESS>wrote:
hi argon
I'm glad you can pay attention to this issue, i catch a error ,code 10. i fond "apnsShutdown": 10 in lib/error.js ,but i don't quite understand this mean. is apns shut down server? or other mean?
—
Reply to this email directly or view it on GitHub.

thank you again, will node-apn can reconnect by itself? should i need do something? or ,i have to do like this:
apnConnection.on("transmissionError", function (errorCode, notification, device) {
console.error('[job server] transmissionError is ', errorCode, notification, device);
//目前只能对无效token进行有效过滤
if (errorCode === 8) {
var token = device.toString().replace(/(.{8})(?=.{8})/g, "$1 ");
MongodbClient.updateIosPushToken(mg4, [token], function (err, num) {
if (err) {
console.error('update token false. err is', err);
return false;
}
console.log('update %d invalidToken success.', num);
});
} else if (errorCode === 8) {
process.kill(process.pid);
}
});then, pm2 can restart push process.

thank you again, will node-apn can reconnect by itself? should i need do something? or ,i have to do like this:
apnConnection.on("transmissionError", function (errorCode, notification, device) {
console.error('[job server] transmissionError is ', errorCode, notification, device);
//目前只能对无效token进行有效过滤
if (errorCode === 8) {
var token = device.toString().replace(/(.{8})(?=.{8})/g, "$1 ");
MongodbClient.updateIosPushToken(mg4, [token], function (err, num) {
if (err) {
console.error('update token false. err is', err);
return false;
}
console.log('update %d invalidToken success.', num);
});
} else if (errorCode === 8) {
process.kill(process.pid);
}
});then, pm2 can restart push process.

node-apn will always reconnect when a transmissionError occurs.
If you kill the process like that you will lose notifications.

On 3 Nov 2015, at 07:34, zhaoxuan<EMAIL_ADDRESS>wrote:
thank you again, will node-apn can reconnect by itself? should i need do something? or ,i have to do like this:
apnConnection.on("transmissionError", function (errorCode, notification, device) {
console.error('[job server] transmissionError is ', errorCode, notification, device);
//目前只能对无效token进行有效过滤
if (errorCode === 8) {
var token = device.toString().replace(/(.{8})(?=.{8})/g, "$1 ");
MongodbClient.updateIosPushToken(mg4, [token], function (err, num) {
if (err) {
console.error('update token false. err is', err);
return false;
}
console.log('update %d invalidToken success.', num);
});
} else if (errorCode === 8) {
process.kill(process.pid);
}
});then, pm2 can restart push process.
—
Reply to this email directly or view it on GitHub.

node-apn have retry times? because my process is blocked. is this Restart exceed the upper limit?

Could you please provide more explanation, I don't understand your question.

On 4 Nov 2015, at 06:25, zhaoxuan<EMAIL_ADDRESS>wrote:
node-apn have retry times? because my process is blocked. is this Restart exceed the upper limit?
—
Reply to this email directly or view it on GitHub https://github.com/argon/node-apn/issues/328#issuecomment-153594000.

of course, i use node-apn send notice for ios, i received some transmissionError, for example, code = 8, or code = 10. when code = 8, i deal invalidToken and the process continue work well. but when code = 10, i find the process can't continue work and blocked.  when apn shut down, can node-apn reconnect? or need myself. to do something ?

Error 10 is treated in exactly the same way as error 8. If error 8 reconnects correctly there is no reason an error 10 would not. Could you share more of your code showing

How you are creating the apn Connection
How you are now handling the errors

/**
 * Created by 10000489 on 2015/7/20.
 */
'use strict';

var apn = require('apn');
var async = require('async');
var MongodbClient = require('../connect/mongodb');
var redisConnect = require('../connect/redis');
var brain = require('../tool/brain');
var conf = require('../conf/config');
var Key = require('../conf/configKey');
var mg2 = conf.mongodb.mg2;
var mg4 = conf.mongodb.mg4;

var apnConnection = new apn.Connection({maxConnections: 10, minConnections: 3});

var jobRedis = {
    ip: process.argv[2],
    port: parseInt(process.argv[3])
};
var jobInfo = {
    ip: process.argv[4],
    port: parseInt(process.argv[5]),
    type: 'JNode',
    id: 'jn_' + process.argv[4] + '_' + process.argv[5]
};
var client;

brain.add(jobInfo.type, jobInfo.id, jobInfo.ip, jobInfo.port);

redisConnect.connect(jobRedis.port, jobRedis.ip, function (_client) {
    client = _client;
    dealPushNotifyJobs();
});

function dealPushNotifyJobs() {
    client.select(0, function () {
        client.brpop('pushStack', 0, function (err, job) {
            dealPush(JSON.parse(job[1]));
        });
    });
}

function dealPush(notice) {
    async.waterfall([
        function (cb) {
            MongodbClient.findPushSetting(mg2, notice, cb);
        }, function (filtered, cb) {
            if (filtered) return cb(null, {});
            MongodbClient.findIosPushToken(mg4, notice.uid, cb)
        }
    ], function (err, res) {
        if (err) {
            console.error('[job server] find mongodb false, err is', err);
            return false;
        }
        //因为web端安卓用户也有token，而ios端token为64+7空格
        if (res.token && res.token.length === 71) {
            sendNotification(notice, res.token, res.hiddenPushMsg);
        } else {
            dealPushNotifyJobs();
        }
    });
}

function sendNotification(notice, token, hidden) {
    var notify = new apn.Notification();
    notify.sound = "default";
    notify.expiry = Math.floor(Date.now() / 1000) + 3600 * 5;//推送5小时后失效
    notify.device = new apn.Device(token.replace(/\s/g, ""));
    notify.badge = notice.count;
    notify.alert = hidden ? "你收到一条新消息" :
        (notice.message.length < 50 ? notice.message : notice.message.slice(0, 50) + "...");
    notify.payload = {
        aps: {
            content: {
                "poster"  : notice.poster,
                "userkind": notice.userkind
            }
        }
    };
    //1 2 3 为群组类型，4 5 6 为用户类型
    if (notice.userkind <= 3) notify.payload.aps.content.togroup = notice.groupId;
    apnConnection.pushNotification(notify, notify.device);
    dealPushNotifyJobs();
}

apnConnection.on("connected", function (openSockets) {
    console.log('[job server] @__@!connected is ', openSockets);
});

apnConnection.on("transmitted", function (notification, device) {
    //console.log('notification is', notification.toJSON());
    //console.log('device is', device.toString());
});

apnConnection.on("disconnected", function (openSockets) {
    console.log('[job server] $__$!disconnected is ', openSockets);
});

apnConnection.on("err", function (err) {
    console.error('[job server] err is', err);
});

apnConnection.on("socketError", function (err) {
    console.error('[job server] socketError err is', err);
});

apnConnection.on("cacheTooSmall", function (sizeDifference) {
    console.error('cacheTooSmall is ', sizeDifference);
});

apnConnection.on("transmissionError", function (errorCode, notification, device) {
    console.error('[job server] transmissionError is ', errorCode, notification, device);
    //目前只能对无效token进行有效过滤
    if (errorCode === 8) {
        var token = device.toString().replace(/(.{8})(?=.{8})/g, "$1 ");
        MongodbClient.updateIosPushToken(mg4, [token], function (err, num) {
            if (err) {
                console.error('update token false. err is', err);
                return false;
            }
            console.log('update %d invalidToken success.', num);
        });
    }
});

//每五分钟获取一次feedback
var feedback = new apn.Feedback({interval: 300});
feedback.on("feedback", function (devices) {
    if (!devices.length) return true;

    //数据库中token均为每8字符加空格格式，故转换token格式
    devices = devices.map(function (item) {
        return item.device.toString("hex").replace(/(.{8})(?=.{8})/g, "$1 ");
    });

    MongodbClient.updateIosPushToken(mg4, devices, function (err, num) {
        if (err) {
            console.error('[job server] feedback update token false. err is', err);
            return false;
        }
        console.log('update %d invalidToken success.', num);
    });
});

How often do you see error 10 occurring? I have tried your code and I agree it works correctly when error  8 occurs. There is no difference in connection handling in node-apn between error 8 and error 10 so I do not understand why the process would block. Could you please run your service with DEBUG=apn,apn:trace set and post the log output when error 10 occurs, including the messages before and after the error so I can see what is happening.

ok, but apn shut down is not often broken. so I can not guarantee that can be displayed immediately.
i guess, node-apn have some count number of count reconncet false. if have no retry times, node-apn would block?

There is a connection retry limit of 10. If it is exceeded then a socketError event is emitted. You can disable this by passing connectionRetryLimit: 0 in the options and see if that helps.

Thank you very much so careful to explain. I will continue to focus node-apn module :)


Error on run

I get the following error when I try to run my test:
Request failed for http://www.exploreconsulting.com/runtest.php?url=http%3A%2F%2Fwww.exploreconsulting.com%2Fresources%2Fnetsuite-customization-tips-and-tricks%2F&k=xxx&f=json&location=Dublin%3AChrome&runs=1&video=0&fvonly=1 returned code 404. Truncated server response:    <html lang="en-US" prefix="og: http://og... (use muteHttpExceptions option to examine full response)
Settings
Name	Location	Runs	Video	First View Only
Dublin, Chrome, Cable	Dublin:Chrome	1	1	1
Example URL:
URL	Scenario	WPT ID	Status	TTFB (ms)	Render Start (ms)	Visually Complete (ms)	DCL End (ms)	Load TIme (ms)	Speed Index	Requests
http://www.exploreconsulting.com/resources/netsuite-customization-tips-and-tricks/	Dublin, Chrome, Cable

It looks like you've put www.exploreconsulting.com as the WPT server address in the settings tab (B10) rather than http://webpagetest.org
Can you confirm what's in cell B10 on the settings tab?

 Thanks I fixed that.
Now however all I get back are 400 status with no results. Doesn't matter what URL I put in. I've tried about 30 different websites, they all come back 400s

Someone else found this issue the other day - the WPT agent location names changed a while back - so Dublin wasn't a valid location.
If you use v0.4 of the sheet (linked in the readme) it should be OK now.


Not folder only file?

Hi how can optimize specific file? Not complete directory? Also script can dedect its jpeg or png?

This script can only work with directories.


What does the match function means？

match = re.match(r'([A-Za-z_]+)(_[0-9]+.jpg)', file_name, re.I)
What does this sentence mean？

This filters out two regex match groups from the filename: the file name and number, e.g. if you have files like dog_1.jpg, do_2.jpg, dog_3.jpg, etc., it filters out the _[number] from it and takes the file name (which is treated like the class name, so name the files like you named your classes in your label_map.pbtxt)

this isn't working, the match is showing NoneType.

patterns are grouped into parenthesis, match function searches and returns the match-object according to the aforementioned pattern string. Here first group says it consists of string pattern group in which each character can be either A to Z, or a-z or _ any number of times. Second group says it has to be started with _, then a string of characters each 0 to 9 any number of times, followed by '.jpg'


adds arm64 support

testing in #1260

@HomerSp does it it seem good enough to merge?
I'll still wait until travis builds it successfully in my personal branch

Looks good I think. Tried deploying and it worked so I think it should be fine to merge.


APEXMALHAR-2424 Extra null field getting added to columnDataTypes

@shubham-pathak22  please review and merge.  Have rebased the code

Fix looks good. Will merge it.

Reopening PR to run Jenkins build again.


No matching distribution found for setup.py

Hi there,
I'm running into some trouble with installing the mob-suite.
pip install setup.py

Collecting setup.py
  Could not find a version that satisfies the requirement setup.py (from versions: )
No matching distribution found for setup.py

What am I doing wrong here?
Thanks!

I've installed mobsuite as above, but ran into a few other errors:
sander@Unif-Antwerpen[AMB-F197] mob_recon --infile AMB-F197.fna --run_typer                                                                                [ 1:23]
Traceback (most recent call last):
  File "/home/sander/miniconda3/bin/mob_recon", line 11, in <module>
    load_entry_point('mob-suite==0.0.1', 'console_scripts', 'mob_recon')()
  File "/home/sander/miniconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 480, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/sander/miniconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2693, in load_entry_point
    return ep.load()
  File "/home/sander/miniconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2324, in load
    return self.resolve()
  File "/home/sander/miniconda3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2330, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/sander/miniconda3/lib/python3.6/site-packages/mob_suite-0.0.1-py3.6.egg/mob_suite/mob_recon.py", line 237
    os.mkdir(args.outdir, 0755)
                             ^
SyntaxError: invalid token

I'm guessing that the code has been written in Python 2 and that this is causing the problems?
Anyway I then tried reinstalling using python2.7 setup.py install which failed with the following errors:
EOF
warning: no previously-included files matching '*.pyo' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
warning: no previously-included files matching '*.swp' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
warning: no previously-included files matching '*~' found anywhere in distribution
numpy/core/src/npymath/ieee754.c.src:7:29: fatal error: npy_math_common.h: No such file or directory
 #include "npy_math_common.h"
                             ^
compilation terminated.
numpy/core/src/npymath/ieee754.c.src:7:29: fatal error: npy_math_common.h: No such file or directory
 #include "npy_math_common.h"
                             ^
compilation terminated.
error: Setup script exited with error: Command "x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibuild/src.linux-x86_64-2.7/numpy/core/src/npymath -Inumpy/core/include -Ibuild/src.linux-x86_64-2.7/numpy/core/include/numpy -I/usr/include/python2.7 -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/npymath -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/npymath -Ibuild/src.linux-x86_64-2.7/numpy/core/src/private -Ibuild/src.linux-x86_64-2.7/numpy/core/src/npymath -c build/src.linux-x86_64-2.7/numpy/core/src/npymath/ieee754.c -o build/temp.linux-x86_64-2.7/build/src.linux-x86_64-2.7/numpy/core/src/npymath/ieee754.o -MMD -MF build/temp.linux-x86_64-2.7/build/src.linux-x86_64-2.7/numpy/core/src/npymath/ieee754.o.d" failed with exit status 1

Any suggestions for what to try next?

Looks you have python 3 default. Try to create a virtual env of python 2 using conda, and then reinstall mob-suite again within the new env again.

Hello,
MOB-suite is written in python 2.7, I will be working to port it to 3 fix some of these incompatibilities. I have corrected the documentation for the install.   In the meantime make sure you are using a 2.7 python environment.
% git clone https://github.com/jrober84/mob-suite
% pip install mob-suite/

MOB-suite conda package for python version 3.6 is now available on Anaconda Cloud. Following commands creata a new conda environment and install MOB-suite package and its dependencies for Linux or OSX.
conda create --name mob_suite python=3.6
conda install -c kbessonov mob_suite

Great! would be nice to have it on bioconda channel

The tool has been added into the Bioconda channel now thanks to the work of kbessonov1984

I was literally just installing it again using @kbessonov1984 commands.
It works perfect now; thanks!


Compare floating point with tolerance in space age test.

The test for space age seems to do a direct comparison of floating point numbers. I don't know swift very well at all, but with IEEE 754 floating point numbers one typically needs to compare them with a tolerance of error to account for small rounding errors introduced through arithmetic operations. This just adds such a tolerance to each of the XCTAssertEqual calls in the SpaceAge tests.

Thanks @kellegous! This is a good improvement to these tests


When hovering Pokemon with mouse no longer displays details

Used to be able to hover Pokemon with the mouse to get details and now i have to click again like older versions. Not a huge deal just a quality of life one.

There is already a ticket for this opened please refer to #304
Please close this ticket and use that one to +1 or comment.


Fix how we return loid of an user

We should return LoID in this order (fallback to the next one if it's
empty):

The logged in user id from the JWT token
The loid from the thrift payload
The loid from the JWT token

👓 @spladug @pacejackson

what's the impact on applications with this change? how should we document this?

For that part, I plan to have a meeting with experiment council next week to understand more.

just to follow up here: was there ever a decision from experiments council?

just to follow up here: was there ever a decision from experiments council?

experiments council is fine merging this. but doing it now has a potential to break some other thing. we plan to fix the other thing towards the end of Q3, after that's fixed we could merge this PR.

ok, thanks for the update! i'll pop this in the milestone for v1.5 (which would be released the first week of december)

@fishy should this still be on track for v1.5 (releasing Nov 30) ?

@fishy should this still be on track for v1.5 (releasing Nov 30) ?

Unfortunately no. New ETA is sometime Q1 2021 :(

Understood. Thanks for the update. I've bumped it to 2.0's milestone. Let me know if there's anything I can do to help.

I think we can close this PR in favor of https://github.com/reddit/edgecontext.py/pull/2 now?

I think we can close this PR in favor of https://github.com/reddit/edgecontext.py/pull/2 now?

Sounds good, thanks!

Sounds good, thanks!


update: Add some new Chinese translations of documents

Finish baseui's new text
Finish achievements's text
Complete part of the main file translation, the rest of the follow-up slowly improve

Uh uh, it's the same problem again. I reported an error in merge check after I made it into Chinese. Build error message: I can not adjust the text, can only add text?
PLZ check and merge, thanks

Then I explain that there are some problems with the old achievement translation.So I do it again.
1, Some old translation has been changed too much, and the meaning of the Original English is quite different. Here, refer to the English original, retranslated and combed again.
2. In terms of the local translation dictionary established according to other translation contents, it unified all the commonly used words in the whole translation contents. Consistency has been maintained, so achievements have varied considerably.
3, part of the translation content, no special treatment. As a result, numbers and text together look tired. Resize the spacing of some text.
4, in the old translation, some misplaced translation, omission translation, re-translation adjustment.

Also, if possible, could you please not merge the resource/ reactiveDrop_sChinese.txt file. There's a lot of content in this file, so if this file gets passed as well. My contribution will always be in the single digits. (I don't know why I didn't submit this file, so it just came up.)
I hope to pass this file through my OWN PR, so as to enhance my PR contribution. (Otherwise, in the long run, someone might think MY contribution is too low, and something bad might happen.)

GitHub doesn't know that the email address used in the commits that don't have a picture next to them is yours. You just need to add<EMAIL_ADDRESS>as one of your email addresses in the GitHub email settings.

As for the check failure, there are two things happening:

achievements/563560_loc_schinese.vdf needs to match the achievement names and descriptions in resource/reactivedrop_schinese.txt exactly
There were some duplicate translation keys in basemodui causing weirdness. I've removed them from all languages, so that part is fixed now.

As for the check failure, there are two things happening:

achievements/563560_loc_schinese.vdf needs to match the achievement names and descriptions in resource/reactivedrop_schinese.txt exactly
There were some duplicate translation keys in basemodui causing weirdness. I've removed them from all languages, so that part is fixed now.

Ok ,thanks ,I have added a new Email. (Because this email cannot be pushed to Git normally, I have changed it.)
Achievement translation, I have translated this for some time, in order to unify the whole style, has not submitted. I'm gonna recalibrate that one. Thanks.

更加机翻了 很难绷得住

哪里的机翻？你是指还原了英文本意？那翻译的信达雅，首要的就是保证可信度。保证了可信度，才去考虑达、雅。
集体换英语什么东东？没懂这个是什么？

I have been busy recently, so I haven't dealt with this proofreader for the time being.

更加机翻了 很难绷得住

哪里的机翻？你是指还原了英文本意？那翻译的信达雅，首要的就是保证可信度。保证了可信度，才去考虑达、雅。 集体换英语什么东东？没懂这个是什么？

如果是房主改成队长还改了原始V社的翻译能达到你的准确度，那我确实没话说了。 包括UI、武器名、一些老成就都是从AS带过来的。老玩家都是用习惯的了你突然改了没有怨言？

Leader本来就英文没有房主这个意思，纯粹是你们自行根据游戏自行修改的；其次UI、武器、成就，本来就是你们一开始就翻译错误的了。
那这种把乱反正如果有问题的，可以找 BenLubar 定夺下，这个有问题的话，回滚回去就完事了，问题不大的。

@BenLubar hello, now we have some differences, if it's convenient for you, we need your help to decide : Which translation mode should be used.
In Dumbstep's opinion, the translation needs to retain the translation of the old version (including the translation of some inaccurate words, and the translation of some words that are not related to the original meaning of English). The advantage is that it is friendly to old players. Players from Alien Swarm are more accustomed to these translations. The not good thing is that there are semantic problems in part of the translation, which is very different from the original text.
As far as i'm concerned, i prefer the new translation direction (keep the old translation on the premise that it is consistent with the English meaning; at the same time, try to use unified vocabulary to accurately translate the English text as much as possible). In doing so, old players need to get used to new accurate translation, which will cause learning costs for old players.
Thanks anyway.

更加机翻了 很难绷得住

哪里的机翻？你是指还原了英文本意？那翻译的信达雅，首要的就是保证可信度。保证了可信度，才去考虑达、雅。 集体换英语什么东东？没懂这个是什么？

如果是房主改成队长还改了原始V社的翻译能达到你的准确度，那我确实没话说了。 包括UI、武器名、一些老成就都是从AS带过来的。老玩家都是用习惯的了你突然改了没有怨言？

Leader本来就英文没有房主这个意思，纯粹是你们自行根据游戏自行修改的；其次UI、武器、成就，本来就是你们一开始就翻译错误的了。 那这种把乱反正如果有问题的，可以找 BenLubar 定夺下，这个有问题的话，回滚回去就完事了，问题不大的。

什么叫我们自行修改的，你不知道AS的翻译是V社请专业翻译做的本地化处理吗？我就觉得你现在改的有点生硬啊。流行、惯用词玩家才能一眼知道是什么意思。

OK 那我close了，我不参与了。


Repeated error by 3DCityDB_rasterize_lod2_roof_heights.pgsql

Dear Markus,
I am a PhD Student at the University of Trier and want to use the published tool for all of the Trier city area.
Therefore I portioned and sorted the datasets into 130 tiles according to DTK5_UTM. During server based processing with the 3dcitydb docker setup from TUM the '3DCityDB_rasterize_lod2_roof_heights.pgsql' script recurrently throws the same error in line 180:
psql:/data/3dcity_impexp/3DCityDB_rasterize_lod2_roof_heights.pgsql:180: ERROR:  function st_3dintersection(geometry, geometry) does not exist
As far as tested, running the pgsql in pgAdmin works.
Can you tell why?
Attached you find the associated files with terminal prompts and one of the gml files as .zip.
psql_script_error.zip
Kind regards

Dear Utbock,
I apologize for the late reply. Were you able to resolve the issue? Unfortunately, I couldn't reproduce the error on my end, but one possible cause might be a missing SFCGAL backend when setting up your database with the 3DCityDB Docker. The ST_3DIntersection function requires this backend.

Dear Markus,
thank you for your reply. Pointing out the SFCGAL backend was the solution. The parameter was not set for the docker.
Kind regards

Sehr geehrte Damen und Herren,
vielen Dank für Ihre E-Mail.
Ich bin bis einschließlich Freitag, den 04.11.2022, nicht im IÖR.
Ich melde mich gerne danach bei Ihnen.
Mit freundlichen Grüßen
Markus Münzinger

Dear Sir or Madam,
thank you for your e-mail.
I'm out of office until November 4th, 2022.
I'm happy to be in touch with you afterwards.
Kind regards,
Markus Münzinger


[Bug] Compendiums with tables of content have a semi transparent background

When I open a compendium with a table of content, the page has a semi transparent background, which makes it hard to read:

Without PF2e Dorako UI the same page looks normal:

The individual pages f.e. for edges looks normal with PF2e Dorako UI:

I just discovered the problem today. I'm not sure, if it came with 2.2.4, but I didn't had this problem a few weeks ago.
Please let me know, if I'm just missing an option in PF2e Dorako UI.

Foundry VTT: 11.304
PF2e Dorako UI 2.2.4
Swade System: 3.0.4
Savage Pathfinder 3.0.0
Browser: Google Chrome

Should be fixed in 2.2.5, let me know if it isn't

Thanks, works like a charm!

Right now with PF2e Dorako UI v3.1.10 I have the same problem again. Let me know, if you need more information.

Foundry VTT: 11.315
PF2e Dorako UI v3.1.10
Swade System: 3.2.5
Savage Pathfinder 3.2.0
Browser: Google Chrome

Hi, Dorako UI 3.0 split the module in two (Dorako UI and UX), and the 3.1 series of releases are essentially getting rid of all legacy styling (of which the SWADE styling qualified).
If I was you, I'd lock the Dorako UI version to the last 3.0 release. There's no real reason to update it anyway, since there's no SWADE related content in the updates, and potential "feature" style features are in Dorako UX.

Thanks, that worked! Hopefully it will also work with FVTT12. Let's see...

Feel free to let me know if it doesn't - I can't promise I will fix it, but I would definitely consider it.


Dynamic container property name

@object Currently if you want to use an open type and return the properties you must pass the dynamic container name as part of the command.
The problem arises when you want to expand relations of this entity which are themselves open types, since there's no way of telling the interior calls what to use.
With the introduction of ITypeCache we can add a Register method which can take the dynamic properties container name and then this can be retrieved in the ToObject from wherever it is called.
Additionally, we can extend ITypeCache with an ITypeConverter property which allows registration/retrieval of custom converters - this then allows for different converters per OData schema.
This should address #360 and #365
The public changes to the API are to expose an ITypeCache on the ODataClientSetttings class - this provides an entry point to the appropriate objects which are created behind the scenes.
Can you take a look at this and see if you're happy with the proposed changes - I've tried to ensure they are non-breaking for v5 but marked some as obsolete ready for v6.  I also need a few more tests but I want to ensure the API is acceptable first

Sorry for the late response. Can you give an example of how the revised API will look, also some code examples of how the client would use it? And if this helps addressing issues you mentioned, can you think of tests we can add to verify they are addressed?

@object The current code is on 564_ContainerName, I still need to write some tests but I need to make sure you like the direction of the API changes...
Basic changes are...

Introduce ITypeConverter which has the same signature as CustomConverters but is per OData schema
Extend ITypeCache with Register methods, which can take the container name and also expose the relevant ITypeConverter instance.
Expose the relevant ITypeCache on ODataClientSettings, this allows us access to the registration of both container names and custom converters on a per schema basis

Remainder are adjustments to ToObject etc as we don't pass the container name anymore but retrieve it from the ITypeCache. I've kept the existing signatures the same so that it if you pass a container name on one of the methods it performs an automatic registration of the type for you.

@object Issued a pull request with the code, take a look and let me know if you need any changes


Use Che Code in test cases instead of Theia

Now that Theia will no longer be officially supported, the test data we use should aim to use Che Code instead of Theia.
@nickboldt has identified the following test data as needing to be updated:

[ ]  pkg/library/flatten/testdata/container-contributions/
[ ]  pkg/library/flatten/testdata/implicit-container-contributions/
[ ]  pkg/library/flatten/testdata/implicit-spec-contributions/
[ ]  pkg/library/flatten/testdata/k8s-ref/
[ ]  pkg/library/flatten/testdata/spec-contributions/
[ ]  pkg/library/lifecycle/testdata/postStart/

After some thought, I don't think it's necessary to remove the test data listed in the issue description: the tests are still valid even if Theia is no longer officially supported.
However, we should probably remove the theia-latest sample, as the URL it's using for the theia editor devfile is down, and I can't seem to find a replacement URL.

given use of theia was...

deprecated in DS 3.5 (Che 7.60), and
removed/sunset in DS 3.6 (Che 7.64),  and that
the current release is 7.70...

I would argue that having any mention / use of theia in tests/code is no longer recommended. Updating the tests to focus on vscode would be better than keeping them and having them still mention theia, which is no longer a supported editor in Che.


Thingifapi builder

Improve ThingIFAPI.Builder.build to check actionTypes and stateTypes
Add tests for ThingIFAPI.Builder

If ActionTypes and StateTypes are mandatory for ThingIFAPI. ThingIFAPI.Builder should receive them at newBuilder() method.
There are 2 newBuilder factory methods:

one receives these 2 parameters.

one without these 2 parameters. For the purpose of use chain to register one by one

ThingIFAPI.Builder builder = ThingIFAPI.Builder.
       newBuilder(context, app, ower)
       .registerActionType("airConditionerAlias", AirConditionerAction.class)
       .registerActionType(...);


Problem handling an ipuz crossword.

Hi, having installed crossword and ipuz-0.1.4, I tried to load an ipuz crossword file found on this page
http://www.ipuz.org
Here is a sample Crossword in ipuz format:
{
"version": "http://ipuz.org/v2",
"kind": [ "http://ipuz.org/crossword#1" ],
"dimensions": { "width": 3, "height": 3 },
"puzzle": [ [ { "cell": 1, "style": { "shapebg": "circle" } }, 2, "#" ],
[ 3, { "style": { "shapebg": "circle" } }, 4 ],
[ null, 5, { "style": { "shapebg": "circle" } } ] ],
"solution": [ [ "C", "A", "#" ],
[ "B", "O", "T" ],
[ null, "L", "O" ] ],
"clues": { "Across": [ [ 1, "OR neighbor" ],
[ 3, "Droid" ],
[ 5, "Behold!" ] ],
"Down": [ [ 1, "Trucker's radio" ],
[ 2, "MSN competitor" ],
[ 4, "A preposition" ] ] }
}
It fails with this error
Traceback (most recent call last):
File "", line 2, in
File "/usr/local/lib/python2.7/dist-packages/ipuz-0.1.4-py2.7.egg/ipuz/core.py", line 53, in read
validate_version("version", json_data["version"], IPUZ_VERSIONS)
File "/usr/local/lib/python2.7/dist-packages/ipuz-0.1.4-py2.7.egg/ipuz/validators.py", line 100, in validate_version
raise IPUZException("Unsupported version value found")
ipuz.exceptions.IPUZException: Unsupported version value found
When replacing v2 by v1, no more error.
My question is
Is  there a module corresponding to the v2 specifications ?
Thanks
A+

@JujuLand hi there, thanks for your issue!
Currently this Python package supports validating ipuz puzzles that match V1 of the ipuz specification.
I haven't worked on this for a while and it indeed doesn't support the changes made in V2 of the ipuz specification. So that's why it raises an error as it only knows about the elements included in V1 of the ipuz file format.
I'm not sure when I can get around to updating this package to include them. If you're interested, I'd be happy to merge a pull request that adds those changes.

Thanks for your answer.
I would be happy that my question can be transform as a request.
For now, is there a page which describe the v1 spécifications ?
Thanks
A+

Yeah, the http://www.ipuz.org website documents the ipuz file format.
It also shows the differences between V1 and V2.
These have been marked using green, orange and purple colors:

This is an addition in 2.0 (green)
This has been changed since 1.0 (orange)
No change has been made, but it was moved in the spec (purple)

FWIW, there are no changes in the crossword spec -- for crosswords it should be sufficient to just accept v2.

@JujuLand @rcoh I admit it has been a while but there is now version 1.0 of the ipuz library with support for ipuz v2 puzzles, thanks to @maiamcc :tada: https://pypi.org/project/ipuz/ If anything doesn't work, please let me know.


2.0.18 never returns anything

I'm running a selfbuild extension on Linux system with Firefox and Chromium with latest app. Whenever I click on the extension symbol it shows me which URL it searches for, but never returns anything. As long as the popup is active it only shows that turning circle symbol but never any password entry. And also no error message, just nothing.
I've double checked the app version, it is up-to-date.
Any idea how to debug? Or even better, any idea what might be going on?

Check the developer console for both the popup window, and the background page. Do you see an error message in the console?

Not sure if I used it correctly, but I do see this:
TypeError: Cannot read property 'autoSubmit' of undefined
Whether I have auto submit configured or not does not make a difference.

Do you see in which file this happens, maybe even a line number?
I suspect it's this line:
https://github.com/dannyvankooten/browserpass/blob/22e8af03308ca489beeb51f6bf66714b14240740/chrome/script.browserify.js#L41

@maximbaz I haven't been able to reproduce this issue, but the line you've flagged is an issue - it's trying to access an object which may sometimes be uninitialised.
I've just opened PR #246 to ensure that the settings are always present - I don't know whether that's enough to fix this bug, as I've not been able to reproduce it here.

I was unable to reproduce it too, I like the idea in #246 - merged.
@meskes could you try to reproduce the issue with the latest master?

Current master works a little bit longer. If I access e.g. github it now shows me my github entry, but as soon as I click on it I get the neverending circle again. New error message is:
content.html:1 Error in event handler for (unknown): TypeError: Cannot read property 'error' of undefined
at chrome-extension://cbfnbkdnigbahbkcikfppmaonggdbcpa/script.js:314:20
The line in questions is the "if (response.error)" in
function getLoginData() {
searching = true;
logins = resultLogins = [];
m.redraw();
chrome.runtime.sendMessage(
{ action: "login", entry: this, urlDuringSearch: urlDuringSearch },
function(response) {
if (response.error) {
return resetWithError(response.error);
}
window.close();
}
);
}

Hmm, something is very wrong with your extension. Just curious, does it reproduce with extension in the webstore? Could you try to clone the repo from scratch, and then build the extension with $ make command?

No, it does not. I'm working on the Debian package for it and am trying to figure out why it worked correctly with 2.0.11 and 2.0.13 but not with 2.0.18. The build process is different because Debian does not have browserify, but only browserify-lite. I cannot see any functional differences in the js files, though.
Also, I did try copying the 2.0.18 files from firefox.zip to the location the package resides in, to no avail, some problem. However, this obviously was before the patch.

@meskes

The build process is different because Debian does not have browserify, but only browserify-lite.

Are you able to explain how you have changed the build process? If the 'official' builds are working, but yours is not, that might give us a clue as to where the problem might be.
If a reference would be helpful, I can confirm that builds via docker (see CONTRIBUTING.md) are working correctly against the current master.

@meskes One other thing that may be relevant if you're building the browserify bits differently: as of 2.0.18, options.js is now also generated via browserify (from options.browserify.js). This required a makefile change, so if you're using a custom makefile, perhaps that change was missed?

The sources are in https://salsa.debian.org/webext-team/browserpass
The makefile is debian/rules.
Chances are I missed something, but then why didn't copying the files from the zip file help?

The makefile seems OK. I'll try building from your sources and see what happens, hang on.

I can confirm that building from the master branch of the debian repo you have linked above works normally, and results in a usable extension. However, there is a unit test failure when building the host app, and that failure is also present for the master branch of this repo - I've opened #248 for this.
If you run the 2.0.18 browser extension that you have built, but use the host app binary from the github release, does it work correctly?
steve@neith /tmp/browserpass $ docker run --rm -v "$(pwd)":/browserpass browserpass-dev
yarn
yarn install v0.23.3
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 5.01s.
dep ensure
node_modules/.bin/prettier --write chrome/styles.css chrome/script.browserify.js chrome/otp.js chrome/otp.css chrome/options.browserify.js chrome/inject_otp.js chrome/inject.js chrome/background.browserify.js
chrome/styles.css 322ms
chrome/script.browserify.js 565ms
chrome/otp.js 73ms
chrome/otp.css 55ms
chrome/options.browserify.js 97ms
chrome/inject_otp.js 18ms
chrome/inject.js 106ms
chrome/background.browserify.js 103ms
node_modules/.bin/browserify chrome/background.browserify.js -o chrome/background.js
node_modules/.bin/browserify chrome/script.browserify.js -o chrome/script.js
node_modules/.bin/browserify chrome/options.browserify.js -o chrome/options.js
cp chrome/host.json chrome-host.json
cp firefox/host.json firefox-host.json
cp chrome/policy.json chrome-policy.json
cp chrome/{*.html,*.css,*.js,*.png,*.svg} firefox/
go build -o browserpass ./cmd/browserpass
go test
PASS
ok      github.com/dannyvankooten/browserpass   0.003s
go test ./pass
--- FAIL: TestDefaultStorePath (0.00s)
        disk_test.go:16: user: Current not implemented on linux/amd64
        disk_test.go:27: 1: '/root/.password-store' does not match ''
FAIL
FAIL    github.com/dannyvankooten/browserpass/pass      0.016s
make: *** [Makefile:62: test] Error 1

Nope, same effect. Hmm, it seems like you build from my source but not with my makefile, right?

I built using the default makefile (i.e. the makefile from the master branch root). Does yours live elsewhere?

Unit test fails because it cannot retrieve the "current user" in the docker environment, I don't think that is relevant to this issue.
@meskes in order not to deal with browserify or other dependencies, just grab the browserpass-src.tar.gz from the releases, that archive is built specifically for package maintainers. However firefox.zip also has pre-compiled javascript sources, so it should work just as well...

@meskes I've diffed your master against 2.0.18 of this repo - the only difference is the presence of a debian/ subdirectory, and I can't find a custom makefile in there. Everything else is identical.
Could you please advise how you're building this?

@erayd you missed above:

The makefile is debian/rules

@erayd the makefile is called debian/rules
@maximbaz the problem with testing from your tarball now is that it does not contain the latest patches, so chances are I run into #246 again

Oops - I did indeed miss that. Thanks :-).

Here you go: release.zip

this seems to work, let's see where the difference is ...

It seems to be background.js

It became to be "browserified" only recently 😉 So... problem solved?
P.S. Will you please submit a PR to the README.md when it will be possible for Debian users to install browserpass via official package management tools?

@maximbaz Might be worth rolling 2.0.19, if the changes in master have solved a packaging problem. That way the debian package version will be properly in sync with the repo release tags. Otherwise if someone reports a problem, and the debian version of 2.0.18 contains more than what's actually in the 2.0.18 release...

Will do once @meskes confirms that the issue is solved and this ticket can be closed 👍

@maximbaz problem is not solved, I just noticed that it works with your background.js but not with mine, why is a different matter
As for the package, it is already available since 2.0.11, but I can surely do a PR for that

background.js is an generated script via browserify, if you don't want to use the pre-generated one from browserpass-src.tar.gz or firefox.zip, double check how you are generating the file.

browserify-lite $$(pwd)/chrome/background.browserify.js --outfile $$(pwd)/chrome/background.js
If it's just browserify-lite that's not working correctly, it's not an issue here, but if it's coming from someplace else ...

Just curious, why not use pre-generated sources and avoid having troubles with browserify and other dependencies alltogether? It is also a burden for you to maintain, for example a week ago background.js did not require compilation, now it does, but browserpass-src.tar.gz contained and will contain sources that work "out of the box" with no extra effort required.

The idea behind this is to compile everything from sources and by doing so getting the latest version of the dependencies as well.

That's not very good, we have yarn.lock and Gopkg.lock to make sure everyone is using the same versions of everything to avoid issues that cannot be reproduced by everyone.
If a dependency needs to be updated, I'd much prefer seeing a PR that updates the lock files, and then everyone is using the code that is built using the same version of tools.

Yeah, that's the difference between the software development and the distribution approach. There is actually a long thread on debian-devel about finding ways to make both work at the same time. Historically the problem was solved by introducing shared libraries. Anyway, I'm just trying to cope

6b5b236 updated all dependencies, so you can feel better at using the pre-compiled sources 😉
The decision is up to you of course, but I'm afraid I won't be able to support multiple build configurations, if a bug report would say "it works fine with the official release or when built from master, but doesn't work via the debian package", I'm afraid I would just have to close those bug reports with "use the official builds".

Fair enough, I'd prefer using your build system, too, but unfortunately it's not (yet) possible in Debian. Anyway, thanks for your help. If I find something not related to the Debian build itself, I'll open a new ticket.


Add dwarf line-number information

Add dwarf line-number information to improve the debugging experience

Added map files support as a stop-gap in #33


Catch "ctrl" + "+" keys

Hello,
I'm trying to catch the CTRL + + keys, I tried "ctrl++" but it don't work and create a Javascript error:
react-keyboard-event-handler.js:358 Uncaught TypeError: Cannot read property 'indexOf' of undefined
    at p (react-keyboard-event-handler.js:358)
    at react-keyboard-event-handler.js:261
    at Array.find (<anonymous>)
    at t.findMatchedKey (react-keyboard-event-handler.js:260)
    at t.value (react-keyboard-event-handler.js:183)

Event available in #13 with "ctrl+more"


🚀 Feature: Implement

🛠 What's Change:
Added Navbar into Welcome Page
📊 Impact
We can be seen a beautiful responsive navbar

Added


drop indent tool

This issue has been resolved by https://github.com/alibaba/inclavare-containers/pull/1060/commits/7ecc39d4f26b71857cf975e848fb93d401d93613


CR - 2

Fix all issues in CR - 2

[x] EventManager should not be a singleton
[x] Rename NBSSong to NBSSequence or NBSNoteSequence or something
[x] Move state out of NBSSong - make the class an immutable record
[x] Unused type arg P on AbstractSong - add suppress warn
[x] Add KyoriPlatform marker iface
[x] Rename SongTick#future to completionSignal

Closes #33

Missing writerside docs


Initial Transfer Issue

Expected Behavior
Initial transfer is supposed to respect -c for the max CP limit
Actual Behavior
Error: ambiguous option: -c could match -camp, -cp
Steps to Reproduce
Run with -it flag set and a -c value
Other Information
OS: OS X

Use -cp.

Let's fix it in the read me doc.
On Mon, Aug 1, 2016 at 2:06 PM, Eric Ahn<EMAIL_ADDRESS>wrote:

Use -cp.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/OpenPoGo/OpenPoGoBot/issues/163#issuecomment-236691630,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AR31NnULDMhR6CHh05rX0b-D5bIPwqMuks5qblG7gaJpZM4JZ6Y_
.


installation at non root location

Hello
Thanks for ABBA that i start to use. I face a small problem.
I use it at a non root location. I mean that i use it to browse documents located on my web site at "/documents" not located at "/". I patched foooter.shtml and header.shtml but i have just realised that the house icon in the  breadcrumb line points to "/" which is not a good thing in my case. I would prefer to control where it has to go ("/documents" or maybe something else depending on other things).
If you know where to fix this in the code, i can go for a patch that is not committed to the distrib due to lack on general interest.
I don't know if it is due to the non root location but i don't get file icons as well. For example PDF files don't get the fa-file-pdf icon. I must precise that i use ABBA disconnected from internet (I know it loads "Source Sans Pro" font from google which fails on my system but i get another font instead and it is ok ; i will probably fix the google font by my own later).
Thanks in advance for any idea. Best regards,
Thierry

Hi Thierry,
I had a similar request in the past (see #17) which have been closed due to inactivity and lack of time.
Apache is behaving correctly (you can disable abba by renaming the .htaccess and check it), the issue is the dynamically generated breadcrumb.
When I first saw the issue, I was thinking of creating a root_dir variable which can be used by the js (like the server_date that uses the mod_include module to get its initial value).
If you have something that works. Please post a pull request, I will be happy to merge it.
I think the "non root location" also leads to the issue with the icons, because they are stored in a font which is installed with abba (check .abba/webfonts). This is definitely something to fix to have a working  "non root location" feature.
The google font is from bootswatch (see here). It will be hard to fix.


ci(workflow): add documentation workflow

This commit adds a workflow that builds the crate's documentation on every master push and uploads those to the gh-pages branch, providing an up-to-date version for the master branch on GitHub Pages.
The workflow is taken from SirWindfield/zerotask-rust-lib-template.
To make this completely work, we'd have to enable GitHub Pages inside the repository settings once this is merged.

Yikes, not sure why I can't reach the page, maybe the organization needs a site as well. But that limitation is something I wasn't aware of. I'll fix this later :)


[Event Request] Report 1306 "Standard Sales - Invoice" GetUOMText

Please change following procedure in the way that we can manipulate/translate the description based on Language code:
    local procedure GetUOMText(UOMCode: Code[10])**UOMDescription**: Text[50]
    var
        UnitOfMeasure: Record "Unit of Measure";
    begin
        if not UnitOfMeasure.Get(UOMCode) then
            exit(UOMCode);
        **UOMDescription := UnitOfMeasure.Description**
        **OnAfterGetUOMText(UOMCode,UOMDescription);**
        **exit(UOMDescription);**
    end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 46955.


Build test projects concurrently once forc supports it

The code on the SDK side is ready. We only have to change a default value in buils-test-projects once forc supports concurrent builds.
Issue to track: https://github.com/FuelLabs/sway/issues/2603

I think this could be attempted again once https://github.com/FuelLabs/sway/pull/3484 is resolved and merged :)

https://github.com/FuelLabs/sway/pull/3592 got merged! Thanks tooling team!
I will update the default number of concurrent projecets.


[tests-only] Add feature to be able to run only specific part(s) of test suites in CI

This PR adds the feature to be able to run only the certain part(s) of the test suites.
E.g;
ocisIntegrationTests(6, [1, 4]) will run only 1 and 4 parts out of 6
Part of https://github.com/owncloud/QA/issues/670

@labkode @ishank011 we have done similar in owncloud repos to make it easy to cut-down CI  when someone wants to run just some specific part in order to investigate test fails.


enable neg92, neg93, neg94 tests

Some tests were not enabled in the F# test driver code
cc @enricosada

I'm not certain the tests were passing, we should keep an eye on the CI


Double scroll bar on certain browser heights

Describe the bug
There are two scrollbars now for different components of the side panel on the Explore the Tool page, but ONLY for under a certain height.
To Reproduce
Steps to reproduce the behavior:

Make your browser window be smaller than 9 inches high (the height of a 13in macbook pro)
Go to Explore the Tool page.
See double scroll bar in side panel

Expected behavior
There should only be one scroll bar
Screenshots
https://user-images.githubusercontent.com/25443529/145618531-13c6419f-92d1-4b19-b187-d314ff0a4567.png
Desktop (please complete the following information):

OS: [e.g. iOS] - MacOS
Browser [e.g. chrome, safari] - Chrome
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.

@vim-usds will do some cross browser/device testing


Support Apicurio with Confluent compatibility api.

Describe the bug
Using Apicurio Registry with Confluent compatibility api, /subjects/{subject}/version/latest returns an element called references that's is not recognized in SubjectSchema
To Reproduce
Run jikkou apply with apicurio registry, using /apis/ccompat/v7 , trying to update an schema
Expected behavior
Update the schema
Runtime environment

OS: [e.g. Ubuntu]
Jikkou: [e.g. 0.24.0]

[Bug] reference list should be type of SubjectSchemaReference

fix: https://github.com/streamthoughts/jikkou/pull/321

@fhussonnois may i need to do smt more?

Fixed in v0.33.0


When "isPartial" is returned by Google Trends GPT interprets this is a niche and starts hallucinating suggestions

Closed by f8237e2


Add eslint-plugin-react-with-styles

These eslint rules will help protect this project from bad
react-with-styles usage.
@majapw

Coverage remained the same at 86.733% when pulling 3d69f90493b84077524e93318bd6dc20159a4a88 on eslint-rws into 9786c7734c442f61a75173a131af0ff0d7f9aefc on master.

Coverage remained the same at 86.733% when pulling 3d69f90493b84077524e93318bd6dc20159a4a88 on eslint-rws into 9786c7734c442f61a75173a131af0ff0d7f9aefc on master.

Coverage remained the same at 86.733% when pulling 5b7afeee53f06a764f564de53738eff65eaebd52 on eslint-rws into 9786c7734c442f61a75173a131af0ff0d7f9aefc on master.


Run all specs filtered by tags

Add function RunAllSpecsFilteredByTags
Add key mapping example
Add a section in README.md to explain how to use it

👍  Just been looking at how to do this in vim-rspec and came across your PR.

@adamgeorgeson Thanks! It has been so long that I almost forgot this PR if it's not your comment. Glad it helps.

@NicholasTD07 && @adamgeorgeson :) was just looking for this functionality.
Anything I can do to help this get merged in?

@thewatts To be honest, I have no idea since no maintainer has said anything about this PR yet. When I was using RSpec, I used my own fork.

I'm hesitant to add support for tags to the plugin that requires this much code. The purpose of the plugin is to be simple, yet usable. Can this be achieved similar to how --only-failures has been customized here: https://github.com/thoughtbot/vim-rspec/pull/125#issuecomment-274349145 ?

Sorry guys... I haven't been using vim-rspec for years and thus just never came back to this PR. Closing this PR for now.


Different breakpoint for right sidebar

I'm using left and right sidebar at the same time.
Would it be possible to add a feature to set a different breakpoint for the right sidebar?
That way you could display the left sidebar up to md and the right one only up to sm.

Hi,
I guess this is a special use case, and adding it as a feature is not something that I have on my todo list. Do you have an idea how to solve it? Using env variables would be such an elegant solution, but browser support is not so good :( https://caniuse.com/#feat=css-env-function
For sure there is a way to manage this by your own, changing the variables which are defined here https://github.com/mladenplavsic/bootstrap-navbar-sidebar/blob/master/src/_variables.scss and applying them where needed. Let me know if I can help!

As a workaround I copied the final css file from the node module into my own assets folder and changed the breakpoint manually.
Thats pretty much the best I can come up with, since I don't know very much about modern css features and scss.

If you don't plan to change it further, this solution is OK. Even if you used modern CSS, at the end it would generate something just like that :-)