text:
dockable console

Description
This PR makes the console dockable. Curious what your thoughts are @tlambert03 @AhmetCanSolak. The separation between the QtViewer and the Window class is breaking down here a little, particularly the line below blends them quite a bit
        self.console.parentWidget().setVisible(viz)

Curious if you have advice on implementation. Overall I like the functionality.
I will note that the dock widget doesn't seem to preserve memory of the size on hide / show when it is docked on the left, but does when it is docked on the bottom. Does that happen to you too @tlambert03, do you know why that is?
Here is a gif of the new behavior:

If we like this then after we merge I can do something similar for the layers list / layer control panel
Type of change

[x] New feature (non-breaking change which adds functionality)

Oh also, if you provide a name when adding the QDockWidget that now gets put in the window drop down menu and you can use that line to toggle on and off the widget visibility too

Thanks for the review @AhmetCanSolak I dropped those lines. I'll wait a bit if @tlambert03 or @jni want to comment and will then merge.
I actually like having the option to have widgets at the top - the usage I imagine is that I have the console open at the bottom, the image in the middle, and then a 1-D line plot at the top - I think it will still look quite nice, and feel like we should give users that flexibility.
After this goes in I can make a similar PR pulling out the layers list / layer controls

i think this is great!
One problem I noticed: if you float the console DockWidget, then close it, clicking the QtConsoleButton will make the console visible again, but it has lost the ability to be (re)-dockable... leaving you with a forever floating console.
one thought I had would be to subclass QDockWidget, and override it's closeEvent method, to hook into into the _toggle_console()... but that would then require adding more arguments to the add_dock_widget method to provide a custom dockwidget.  Can you think of a more elegant way to handle this?  perhaps by modifying Window.docked_console after instantiation and intercepting the close event?

also, I've wondered for a while whether there was a keybinding to toggle the console visibility... but I don't see one.  Can that be included in this PR, to make sure that it also works well with the dockwidget?

I have added shift-cmd-C as a keyboard shortcut for the console. One thing that is a bit odd right now is that we have a slight separation between keyboard shortcuts that we add via our own bindings or that appear in the drop-down menus, we should probably work to unify that stuff, but that is a separate PR.
I've also added the name with the appropriate stylings so that they don't normally appear.

if you float the console DockWidget, then close it, clicking the QtConsoleButton will make the console visible again, but it has lost the ability to be (re)-dockable... leaving you with a forever floating console.

Yikes, yes this is not very desirable. It's not quite clear to me the best path forward either, but agree we should try and fix this before merging. I don't actually understand why it happens this way @tlambert03 only when the dockwidget is floating, i.e. i'm suprised that we can ever click the x and then still recover the dock widget - i thought i was always going to have to intercept that event.
would we ever consider dropping the title bar entirely? so no x and no pop out? is that even possible / would that mean that you lacked a "handle" to use to drag the widgets around?

Yikes, yes this is not very desirable. It's not quite clear to me the best path forward either, but agree we should try and fix this before merging. I don't actually understand why it happens this way @tlambert03 only when the dockwidget is floating, i.e. i'm suprised that we can ever click the x and then still recover the dock widget - i thought i was always going to have to intercept that event.

my guess is that the close icon when the widget is docked is calling .hide(), whereas the close button on the floated window is actually a different system button that calls .close()... or something like that.  I think it will be easy enough to fix, just need to play with it a bit.  i'll look around tonight (if you haven't already found a solution)

would we ever consider dropping the title bar entirely? so no x and no pop out? is that even possible / would that mean that you lacked a "handle" to use to drag the widgets around?

we can consider hiding those buttons, and alternatively we may find some use in overriding the title bar widget... but i think it's probably of little more than aesthetic use.  I do think the title bar is the handle for dragging widgets.  but regardless of what the handle is... as long as there is any handle (which we of course need) it means that you can undock the widget by simply not dropping it back on the edges.  and once it's undocked, the system window close button will be visible, so i think we still need to intercept the close event.
more soon...

ok, I found one more issue, but have a possible general approach for you to consider.
the additional issue is that when the QDockWidget has focus, then none of the keybindings are passed through to the QtViewer, so no closing of the console with cmd-shift-c or any other of the keybindings.  There may be other ways to fix that, but the only way I've found so far is to just create our own QDockWidget subclass that has a viewer attribute to remember which viewer it's actually associated with, and pass keypress events to it:
class ViewerDockWidget(QDockWidget):
    def __init__(self, name, parent, viewer):
        self.viewer = viewer
        super().__init__(name, parent)

    def keyPressEvent(self, event):
        return self.viewer.keyPressEvent(event)

nice thing there is you can hide/show the console with the keyboard shortcut even if it's floated...
then change line ~212 to use our own class:
dock_widget = ViewerDockWidget(str(name or ''), self._qt_window, self.qt_viewer)

we can then either override the closeEvent on the ViewerDockWidget (which may be too general), or use QDockWidget.setFeatures to limit what can and can't be done with the DockWidget (list of possible features here).  I'm not sure we want to restrict those globally, but it might make sense to restrict the features for the docked_console widget, and perhaps the layers/controls... so after you instantiate self.docked_console... set features with:
        if self.qt_viewer.console.shell is not None:
            self.docked_console = self.add_dock_widget(
                'bottom', self.qt_viewer.console, name='console'
            )
            self.docked_console.setFeatures(
                QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable
            )
            self.docked_console.setVisible(False)

now the console can only be shown/hidden using either QtConsoleButton in the GUI or the keyboard shortcut.  However, that will then leave you with a float icon that hovers in space:

That's mostly because of the style overrides I added for QDockWidget::close-button and QDockWidget::float-button, which I originally included just to put some padding on the left.  For now though, I think you can just delete my styles:
\* delete these *\
QDockWidget::close-button {
    subcontrol-position: top left;
    subcontrol-origin: margin;
    position: z;
    top: 0px; left: 6px; bottom: 0px;
    width: 18px;
}

QDockWidget::float-button {
    subcontrol-position: top left;
    subcontrol-origin: margin;
    position: absolute;
    top: 0px; left: 24px; bottom: 0px;
    width: 18px;
}

which will leave you with buttons that auto adjust themselves... but have no padding on the left (not a huge deal... but I'll try to figure out how to add back the padding in a nice way):

Ok interesting @tlambert03 I need to digest that for a couple minutes - I also found a fix by adding the following to line 291 in qt_viewer.py that will now work just for the console
        if self.console.parentWidget().isFloating():
            self.console.parentWidget().setFloating(True)

This came from this post - https://www.qtcentre.org/threads/28562-Floating-QDockWidget-not-re-docked-by-QMainWindow-restoreState
Note my solution will only work for our console, and I really don't like the calls to console.parentWidget() inside qt_viewer.py - its really violating some separation of concerns between QtViewer and the Window and making assumptions about there being a parent window container.
Note that post also has some useful tips about having unique object names for our dock widgets for remembering size / state.
I can do this
        dock_widget.setObjectName(str(name or ''))

quite simply, but it doesn't force uniqueness
I will think on how to integrate this with what you posted above.

@tlambert03 if we create a custom class I think I'd rather it not take in parent as an argument so that we could create and control these things at the QtViewer level and then in the Window just set the parent and attach them - does that sound reasonable?
I think my solution of the setFloating(True) could mean that we can leave the close button there, which I think I prefer.
Forwarding the keypress events sounds good, but if someone has defined their own custom keypress events on the widget then we shouldn't overwrite them. There is a part of me that feels like maybe for the console we should just propagate our custom toggle keypress event, but not others. I'm open to either.
Finally are we absolutely sure @jni @royerloic that we want to support floating dockable widgets, because another option is that we just don't allow floating widgets and then all of this goes away!

sounds good, I agree with everything you're saying here.  It sounds like there are multiple ways to achieve the behavior we're ultimately after, so it's definitely worth taking some time to consider the consequences of each strategy.  I also need to digest this a bit... and we'll see whether @jni or @royerloic have thoughts.

Sorry, no time to give proper comments on this but I see nothing here that makes me not want the dockable widgets! What are you worried about as the main problem? Code complexity? But, at the same time, I feel like dockable widgets are going to be a requirement (?) once we have plugins, and it's great (?) if we eat our own dog food and use them also.
Maybe we can discuss more during the meeting. Good night!

@jni I'm now 100% for dockable widgets, glad to hear you're supportive too, and your comment about plugins and us using in the main app, again 100% agree. The thing I was asking at the end now was if we should allow them to be "floating" or require them to always be in a dock. I feel like for people with multiple screens etc "floating" is pretty nice and we should probably bite the bullet and figure out how to support them properly.
@tlambert03 any thoughts on how to best move forward from where we are now?

I think dockable widgets are great, and I agree with @sofroniewn that multiple screen setups would benefit enormously from that. We might want to restrict a bit where things can dock, for example, no docking at the top. Otherwise I think it is great. My only concern perhaps is the added margins and buttons that are always there even if one does not use docking...
One possibility is to have a window item in the menu bar and have a tick-option for 'dockability' which would activate the docking buttons. Not sure about what I just wrote but just throwing ideas here...

Great.  Sounds like everyone is pro-dockable-widgets in general.  Broadly speaking, I like the idea of putting some thought in to it upfront, even if that requires a bit more code complexity, and "eating our own dogfood/API" (lol) that we intend others to use.  While I'm all for restricting certain widgets to certain areas, it being python, I think it's sort of a fools errand to restrict where some other developer docks things... unless we eventually create DockablePlugin framework that has it's own area restrictions, which is a conversation for another time.  So for now, I think the area conversation is a per-widget discussion. For the console specifically, I'm not terribly opposed to a top-docked arrangement, but don't feel strongly either way.
Regarding the added margins, I haven't given up that we can do a little better.  @royerloic's idea of toggling dockability would certainly eliminate the space-offending title bar (but also toggle all moving/floating functionality). Another option is to use the DockWidgetVerticalTitleBar Feature for horizontally oriented widgets... which puts the padding on the left instead (don't worry about the bottom aligned icon, that can change):

@sofroniewn, with regards to moving forward... I still haven't had time to to play around with the various approaches that you mentioned last night.   but I guess here are the minimal bullet points we need to address "somehow":

keyboard events must be passed to Window.qt_viewer, even when the dock has focus (this should not prevent a developer from declaring their own keyPressEvents... but we may just need to stipulate that they also call super().keyPressEvents() if they override the method).
closing a floated dockwidget should not prevent the ability to redock later
we may wish to solve 2 on a widget-by-widget basis by modifying widget features after instantiation, or we may want to make a few "prebuilt" classes that are good for certain use cases.  Either way, we need to make sure the styles (colors, margins, button positions) looks good for all cases.

I have about an hour free this afternoon and will try to work on it (but of course, let me know if you get something you like)

@tlambert03 I have now update this PR so that there is a new QtViewerDockWidget class and the  console gets put inside a QtViewerDockWidget inside QtViewer so that the dock widget just needs to get added in the Window. I think this is much cleaner.
I've also solved the keypress pass through according to your suggestion, and solved the re-floating bug inside the console hide / show code.
I think this is all ready to go apart from the stylings. Do you want to put the title bar vertically and get the button in the right place? You should now have commit rights to the repo and can push that change straight to my branch :-) Please also leave any other suggestions for edits elsewhere as part of code review too

one more very minor thing: currently it is possible to create a QtViewerDockWidget with a starting area that is not in the allowed_areas.  It's not really a big deal, and I can't really see the merit in throwing a warning or error, as it's more or less up to the developer to choose where they put the widget.  but just wanted to point that out.

@tlambert03 thanks for those additions and the vertical title bar - it looks good to me. I think that stuff with the set features all sounds pretty edge case and we can get this merged. I added a new line to the stylesheet (totally minor) and will merge this after the tests pass.
I'll probably then start work on a similar PR that leverages this same functionality to make the layers list and layer controls their own dock widgets.
Very excited to see how people use this new functionality!!

authors: jni royerloic sofroniewn tlambert03


text:
Extract content uri

extractFileFromContentUrl method added to the plugin which extracts file content from content://... URI using contentResolver.openInputStream, stores it to the temp file and returns its path.

Merge

source: gharchive/pull-request

repo: napolitano/cordova-plugin-intent

license: mit

license_type: permissive

license_source: bigquery


text:
VAST not supported

Do you plan to add support for playing vast/vpaid ads?

This project is just for testing purposes only, if you want a player that supports ads, you should try plyr

source: gharchive/issue

authors: napthedev phewyl

repo: napthedev/react-tuby

license: MIT

license_source: github-api


text:
Adds support for SPM

Adds support for Swift Package Manager.

Nice addition, thank you. Could you update the README and provide an installation instruction or a note that SPM now exists for this package? And make sure the cocoapods users aren't locked out only because the source files where moved.

authors: OmranK seeppp

repo: naptics/PlainPing


text:
Rocket Sent Score hanging on the right side of YARM Status.

Not sure if there is much you can do here but it's quite the eye sore. I know your considering adding rocket score to evoGUI But it's still an eyesore for people who might just use YARM Only.
http://i.imgur.com/Exs3iOe.png
Thanks.

It's not my GUI, and moving YARM to player.gui.top would be even worse. Nothing I can do here, this is not a YARM issue.


text:
feat(connect): allow updating partial values with signal through ConnectedSignal

This PR proposes two changes:

Allow supplying a signal to .with as well as to connect directly
Allow for partial state updates with an origin signal

The primary use case I am aiming to support here is this (essentially allowing signals driven changes as well as observables):
	// sources
	private dogs = computedAsync(() => {
		this.someService.version(); // retrigger when version changes
		return this.dbService.getDogs();
	});

	private cats = computedAsync(() => {
		this.someService.version();
		return this.dbService.getCats();
	});

	// centralised state
	private state = signal({
		dogs: undefined,
		cats: undefined,
        })

	constructor() {
		// reducers
		connect(this.state)
                   .with(() => ({ dogs: this.dogs() }))
                   .with(() => ({ cats: this.cats() }));
	}

The current behaviour with origin signals does not allow partial updates, this PR changes that, but I may be missing some reason why this was the case in the first place.
If it isn't desirable to include the partial updates change as well, I can update this PR to just include the change which allows this:
connect(this.state).with(() => ({ dogs: this.dogs() }));

as well as this (bottom is currently supported, top isn't):
connect(this.state, () => ({ dogs: this.dogs() }));

I think that's a great extension of the function.
I'd like to have both in connect and with function.
Also, we need to write better docs for all these use cases.

authors: eneajaho joshuamorony

repo: nartc/ngxtension-platform


text:
docs(merge-from): add documentation for mergeFrom

closes #261

Thanks for adding this @isthatME  🙌

@all-contributors please add @isthatME for docs

authors: eneajaho isthatME


text:
Improve colors for status

Status icons + Color
Finalize status icons
Add light and dark colors for Success, error, warning, and info
Documentation
Write out what breaking changes are
Create a visual change log and figure out where to put it
Create a prioritization framework
How often does it come up? How bad is it if we get it wrong? How hard is it to maintain?

Add christiahn to this when he has a public github

https://www.figma.com/file/a696svN2S7YNlZRYAkeLob/branch/oOxNcX78bLrB0wfE8M0oGl/Stellar-Design-System?type=design&node-id=9270-42567&mode=design&t=Nsrf4z2wyw0MYBWr-0

This is a clever and accessible approach to using shape and color to encode severity: https://twitter.com/JohnPhamous/status/1760444698857230360

repo: nasa-jpl/stellar


text:
sparse map: report memory usage

Added methods to report approximate memory usage of the sparse map data structures. This is not the same as the sparse map file size on disk because the in-memory representation is different from the file serialization, and memory usage also varies depending on the architecture we're running on.
This PR relies on bag of words memory usage reporting methods in #702. It's not expected to pass tests until #702 is merged to master and deployed to astrobee_base.
The larger aim is to figure out the main contributors to sparse map memory usage so we can evaluate possible optimizations.
Here is example output for the hamilton map running on x86_64, will be different on armhf:
SparseMap::ReportMemoryUsage:
          1752 num_cid
        114504 num_pid
        349729 num_features

           736 sparse_map_bytes
        147652 cid_to_filename_bytes
             0 cid_to_keypoint_map_bytes
             0 pid_to_cid_fid_bytes
       2748096 pid_to_xyz_bytes
             0 cid_to_cam_t_global_bytes
      22550848 cid_to_descriptor_map_bytes
      12674340 cid_fid_to_pid_bytes

  DBoW database:
       1240609   num_rows
       1453996   num_ifpairs

      76302488   m_ifile_bytes
             0   m_dfile_bytes

  DBoW vocabulary:
       1511709   num_nodes
       1240609   num_words

     114889880   m_nodes_bytes
       9924872   m_words_bytes

     201117240 vocab_db_bytes
             0 db_to_cid_map_bytes
     239238912 total_bytes

             0 num_cid_to_cid
             0 num_user_cid
             0 num_user_pid

  num_entries_per_descriptor: 64
  descriptor_entry_bytes: 1

This was originally opened as #703, but the GitHub PR diffs got stale somehow, so here it is as a new PR.

last checked this PR on 7/19/2023 and https://github.com/nasa/astrobee/pull/702 hasn't been tested in space yet, so waiting to merge

repo: nasa/astrobee


text:
Possible PortMessage buffer truncation

Is your feature request related to a problem? Please describe.
Data truncation is possible in the snprintf() below
https://github.com/nasa/cFE/blob/5cffc39eccee4902f71809c8963920ea1469e3cd/modules/evs/fsw/src/cfe_evs_utils.c#L548-L551
Describe the solution you'd like
Appropriately allocate size for the message.
Describe alternatives you've considered
Leave as is. The possibility of truncating the message may be low given that AppName, for example, will not likely occupy the max 20 characters that it is allotted.
Additional context
This issue was flagged in JSC 2.1 static analysis.
TimeBuffer: 23 characters (excluding the null terminator)
Spacecraft ID: 10 characters (maximum length for uint32)
Processor ID: 10 characters (maximum length for uint32)
AppName: 20 characters (maximum given size)
Event ID: 5 characters (maximum length for uint16)
Message: 122 characters (maximum given size)
Exact non-data characters: 8 characters
The total exact maximum length is 23 + 10 + 10 + 20 + 5 + 122 + 8 = 198 characters needed, not counting the null terminator.
The defined length for CFE_EVS_MAX_PORT_MSG_LENGTH of 172
Requester Info
Justin Figueroa, Vantage

This is actively happening in the bundle, see https://github.com/nasa/cFS/actions/runs/8971391786/artifacts/1476886717 for sample app, ci lab and to lab initialization messages.  This ends up truncating the new line and makes the log harder to parse with long/clobbered lines:
EVS Port1 1980-012-14:03:20.55226 66/1/SAMPLE_APP 1: Sample App Initialized.Sample App Development Build equuleus-rc1+dev46 (Codename Equuleus), Last Official Release: Sam1980-012-14:03:20.55236 CI_LAB listening on UDP port: 1234
EVS Port1 1980-012-14:03:20.55236 66/1/CI_LAB_APP 3: CI Lab Initialized.CI Lab App Development Build equuleus-rc1+dev61 (Codename Equuleus), Last Official Release: CI Lab EVS Port1 1980-012-14:03:20.55256 66/1/TO_LAB_APP 1: TO Lab Initialized.TO Lab Development Build equuleus-rc1+dev52 (Codename Equuleus), Last Official Release: TO Lab v2.3SCH Lab Initialized.SCH Lab Development Build equuleus-rc1+dev29 (Codename Equuleus), Last Official Release: SCH Lab v2.3.0)

I suggest checking for and replacing last two chars w/ */n or whatever truncation character folks want.
Could also update the lab apps to not put out such a long msg, or increase the limit so the current messages fit.

Marking as a bug due to it missing the new line, so the next message gets added on in the output which could be lost by automatic parsing tools that might expect events/sys log output to be on it's own line.  It's also harder to skim visually.

authors: chillfig skliper

repo: nasa/cFE


text:
CFE_SB_GetLastSenderID will crash if if called before message sent on pipe

CFE_SB_GetLastSenderID assumes that CFE_SB.PipeTbl[PipeId].CurrentBuff is not NULL. Upon CFE_SB_CreatePipe, this will be null. CurrentBuff is only set upon receiving a message in CFE_SB_RcvMsg(). So, if CFE_SB_GetLastSenderID is called before receiving a message the program will crash.
This is Steven Seeger from GSFC. Guess I have a personal account on github. :)

This should be fixed. A user application error (last sender API called early) should not cause the cFE to crash.  Recommend returning error and setting last sender to a known invalid id. uint32 0xFFFFFFFF is a possible choice.

Please note that with respect to the "invalid message id" notion, there are a at least two other other related changes waiting in the wings that should be coordinated with this:

#263 is to provide a CFE_SB_IsValidMsgId() function in the public SB API (currently private for some unknown reason)
#245 is to provide type safety for CFE_SB_MsgId_t so it isn't a "bare number" that can be interchanged with other integers.

Lastly, note that there is an existing definition for an invalid CFE_SB_MsgId_t value, and it is currently:
#define CFE_SB_INVALID_MSG_ID           0xFFFF /**< \brief Initializer for CFE_SB_MsgId_t values that will not match any real MsgId */

In particular I'm bringing all this up because one must resist the temptation to do something like:
if (MsgId == CFE_SB_INVALID_MSG_ID).... bur rather the SB API function should be used to test the MsgId.
And secondly don't assume CFE_SB_MsgId_t will always remain a simple integer.  Assignments are OK (i.e. MsgId = CFE_SB_INVALID_MSG_ID will need to work) but addition/subtraction/comparison may NOT work.  Testing and manipulation of the value should always go through the SB API.

authors: jphickey jwilmot klystron78


text:
Fix #569, Resolve CI warnings and add badge

Describe the contribution
Resolves warnings and adds badge to readme
Fix #569
Testing performed
Steps taken to test the contribution:

CI only

Expected behavior changes
No Travis-CI configuration warnings
System(s) tested on

Hardware: CI
OS: Ubuntu 18.04
Versions: bundle w/ this commit

Additional context
None
Third party code
None
Contributor Info - All information REQUIRED for consideration of pull request
Jacob Hageman - NASA/GSFC

CCB 2020-04-01 - APPROVED

authors: astrogeco skliper


text:
Fix #795, Remove legacy time header format support

Describe the contribution
Fix #795
Fix #92
Collapses options down to just 32 bit second, 16 bit subsecond, always big endian.  Removes old defines, and errors out if the configuration is set to a format that was removed.
Testing performed
Built and make test with SIMULATION=native ENABLE_UNIT_TESTS=true, passes test.
Expected behavior changes
Time in header always big endian.
System(s) tested on

Hardware: cFS Dev VM
OS: Ubuntu 18.04
Versions: main bundle plus #726, with this commit on top (c039fb4 is the commit for this PR, or those marked with Fix #795)

Additional context
#726
Third party code
None
Contributor Info - All information REQUIRED for consideration of pull request
Jacob Hageman - NASA/GSFC

CCB 2020-08-19 APPROVED, provide example for override. See idea in #726

Rebased on integration-candidate


text:
new 3D Tiles converter

This is working for me now, with texture repacking and no incompatible license dependencies. Updated installation and example usage are in the README.
Beyond the random sample data of a drink bottle, I also tried it on one of Oleg's geometry mapper models from ISAAC2.

@trey0 wow! that's a good amount of new code! thanks for working on this. I'm glad you were able to implement texture repacking without licensing issues. I also noticed you included 3D Tile debugging tools which could come in handy.
I went over the new code visually and everything looks good. I can attempt to test it locally but that might take some time given all the changes. If you've tested it and it works, I can merge it in now and test it later (I have to set up a new Linux machine, deleted my old one)

Sounds good! I'll go ahead and do a squash merge.
I can confirm it's working, but also want to note it shouldn't be too hard to test using the Docker instructions. I didn't get to the point of making a CI workflow, but that should be easy to add.


text:
Expand "empty" granule detection to include those with only all-null variables

Problem
Currently, stitchee determines "emptiness" of input netCDF granules by inspecting the .size attribute of all variable arrays.  As soon as a size not equal to 0 is detected, the granule is considered non-empty. The logic is coded here.
@ank1m has discovered an edge case where an output netCDF from the level-2 subsetter can have only arrays of dimensions 1x1, with value NaN, for each variable.  By the current emptiness check in stitchee, this is not considered "empty".  Because it is not considered empty, the netCDF is included in the list of files to be concatenated and ultimately, this results in Stitchee raising an error when it calls on xarray to perform the concatenation.
Desired behavior
A netCDF with only singleton, null-values, arrays should also be considered empty by stitchee.
Implications for the Harmony service chain
The following diagram illustrates the impact of a netCDF with only singleton null-valued arrays (red-colored square) being passed from the level-2 subsetter to Stitchee. On the left is the current behavior, and on the right is the desired behavior.

This PR #159 includes the fix for this issue.

Resolved.

repo: nasa/stitchee


text:
24-month check for older features, some datasets need to be updated

In recent testing, 7 datasets failed the test_all_older_features_have_24_months test in integration_test_labeled.py
Uganda [22]
open_buildings [22]
digitalearthafrica_eastern  [22]
Ethiopia [22]
Ethiopia_Tigray_2020 [22]
Malawi_FAO   [22]
Malawi_FAO_corrected [22]
As a temporary fix, the month offset was bumped up to 4 from 3, so the tests could pass, but these features should be updated to have current data.

Additionally, a clear message in the test illustrating why it might be failing and how to address the failure for real would be super useful.
@evamutz is this an issue you could potentially tackle?

authors: evamutz ivanzvonkov

repo: nasaharvest/crop-mask


text:
Fix music player

errors out:
C:\DEV\GReYBot\node_modules\discord.js\src\client\voice\opus\OpusEngineList.js:23
  throw new Error('Couldn\'t find an Opus engine.');
  ^

Error: Couldn't find an Opus engine.
    at Object.exports.fetch (C:\DEV\GReYBot\node_modules\discord.js\src\client\v
oice\opus\OpusEngineList.js:23:9)
    at AudioPlayer (C:\DEV\GReYBot\node_modules\discord.js\src\client\voice\play
er\AudioPlayer.js:20:37)
    at VoiceConnection (C:\DEV\GReYBot\node_modules\discord.js\src\client\voice\
VoiceConnection.js:58:19)
    at PendingVoiceConnection.upgrade (C:\DEV\GReYBot\node_modules\discord.js\sr
c\client\voice\ClientVoiceManager.js:241:12)
    at PendingVoiceConnection.pass (C:\DEV\GReYBot\node_modules\discord.js\src\c
lient\voice\ClientVoiceManager.js:220:28)
    at PendingVoiceConnection.checkReady (C:\DEV\GReYBot\node_modules\discord.js
\src\client\voice\ClientVoiceManager.js:151:12)
    at PendingVoiceConnection.setTokenAndEndpoint (C:\DEV\GReYBot\node_modules\d
iscord.js\src\client\voice\ClientVoiceManager.js:192:10)
    at ClientVoiceManager.onVoiceServer (C:\DEV\GReYBot\node_modules\discord.js\
src\client\voice\ClientVoiceManager.js:36:74)
    at emitOne (events.js:96:13)
    at Client.emit (events.js:188:7)
    at VoiceServerUpdate.handle (C:\DEV\GReYBot\node_modules\discord.js\src\clie
nt\websocket\packets\handlers\VoiceServerUpdate.js:15:12)
    at WebSocketPacketManager.handle (C:\DEV\GReYBot\node_modules\discord.js\src
\client\websocket\packets\WebSocketPacketManager.js:120:65)
    at WebSocketManager.eventMessage (C:\DEV\GReYBot\node_modules\discord.js\src
\client\websocket\WebSocketManager.js:273:31)
    at WebSocket.onMessage (C:\DEV\GReYBot\node_modules\ws\lib\WebSocket.js:442:
14)
    at emitTwo (events.js:106:13)
    at WebSocket.emit (events.js:191:7)
    at Receiver.ontext (C:\DEV\GReYBot\node_modules\ws\lib\WebSocket.js:841:10)
    at C:\DEV\GReYBot\node_modules\ws\lib\Receiver.js:536:18
    at Receiver.applyExtensions (C:\DEV\GReYBot\node_modules\ws\lib\Receiver.js:
371:5)
    at C:\DEV\GReYBot\node_modules\ws\lib\Receiver.js:508:14
    at Receiver.flush (C:\DEV\GReYBot\node_modules\ws\lib\Receiver.js:347:3)
    at Receiver.finish (C:\DEV\GReYBot\node_modules\ws\lib\Receiver.js:541:12)

I think this is a dependency issue; probably just need to add the correct packages to /package.json.

authors: develogix naterchrdsn

repo: naterchrdsn/GReYBot


text:
alternate for threading multiple transforms

Currently I thread lots of  transforms upon transforms like this and it is becoming really wordy.:
(->> (data)
       (transform [do re me f] func1)
       (transform [x y z] func2)
       (transform [v f hf] func3)
       (transform [v f hf] func4)
       (transform [v f hfd] func5)
        and so on ......))

Is there a way to abstract these navs and functions which have to transformed?

There's multi-transform which you can use along with terminal and terminal-val to combine transforms which share part of their paths. This is also faster since it avoids multiple iterations / reconstructions for the shared portion of the path.
You could also easily make a -transform>> macro to avoid having to type transform over and over, e.g.:
(-transform>>
  data
  ([do re me f] func1)
  ([x y z] func2)
  ...
  )

Does that answer your question?

Thank you

repo: nathanmarz/specter


text:
TransactionalSpout

This is an idea for a new kind of spout that works differently than regular spouts. Each spout task emits batches of tuples, and they don't emit the next batch until all tuples in all batches have been completed. The task with the lowest id is designated as the coordinator task, and it will do a 2PC or 3PC protocol to ensure the distributed batch is all committed at once. If there are any failures, the entire batch is replayed.
Additionally, a batch id will be provided to the spout when emitting that can be part of the tuple stream. This allows downstream bolts to be aware of what "batch of computation" it's working on. So for example, if updating a count in a database, a bolt can include the batch id with the count and only increment the count when the batch id has changed.
This will enable many more idempotent topologies to be built on top of Storm. The transactional nature of this kind of spout of course will necessitate a tradeoff in performance to achieve this idempotence.
The initial target for a TransactionalSpout implementation will be Apache Kafka.

Design notes for transaction protocol:
coordinator state: currentid = nil
batch state: id -> batch params (starts off as nil)

coordinator:

sync phase:

wait the message timeout, ignore all messages

phase 1: tuples

if have txid, keep it. otherwise generate new one
send nextBatch(T) to all spout tasks

if contains T already, do nothing
otherwise, set batch state to T -> discover batch params (can do while emitting batch)

send startBatch(T) to all tasks that implement "BatchNotification"
wait to receive "finished(T)" from all spout tasks or "startup" from everyone
If receive any startup, goto sync phase

phase 2: batch end

to all bolts that implement "BatchNotification", send a tuple containing [spout id, batch id]
Wait for each of those tasks to send a "batchfinished(T)" or "startup" message

batchfinished(T) only sent if task was alive through whole batch

if all send back batchfinished then generate and persist new txid and goto beginning of phase 1
If receive any startup, goto sync phase, otherwise generate new txid and persist it and goto 1

TransactionSpout provides:
Persister {
setTransactionId(String txid)
getTransactionId()
}
TransactionSpout {
Persister getPersister();
void nextBatch(String txid);
}
TransactionBolt {
finishBatch(String txid)
}

I'm finishing up the design for this and will make implementing this a high priority. I've only dug into the Kafka client code a little bit; I'd be curious to see how your KafkaSpout works.

It's more than a step in that direction. At the time I spoke to Ilya I hadn't figured out a good primitive for doing this that still meshes well with the rest of Storm. I'm pretty happy with how elegant TransactionalSpout is turning out to be.
TransactionalSpouts give stronger guarantees about the processing of the data at the cost of performance (because of coordination required for commit protocol). So there will be room for both a KafkaTransactionalSpout and a regular KafkaSpout.

New design notes:

coordinator emits batch-begin tuple with TransactionAttempt
transactionalspouts subscribe to their own batch-begin stream with all grouping
transactionalspouts emits each emitted tuple in batch with the batch-begin tuple as anchor
when coordinator receives ack for the batch, it moves to commit phase
coordinator emits batch-commit tuple with TransactionAttempt
transactionalbolts subscribe with all grouping
when coordinator receives ack, it finalizes the commit
on any timeout the transaction attempt is considered failed and retried with new attempt id

It turns out this doesn't need to be a new abstraction. It's a very simple pattern on top of the existing primitives. A "TransactionalSpout" actually executes as a subtopology consisting of a spout and a bolt. it look like this:
CoordinatorSpout ---all grouping---> BatchEmitter
The CoordinatorSpout is a single task that emits a tuple everytime it wants to attempt a transaction (it can emit multiple ones to pipeline the transactions). The BatchEmitter then emits all the tuples for that transaction. Once the tuple has been acked, it emits a "commit tuple" on a different stream. The commit tuples are consumed by all TransactionBolts (using an all grouping on that stream), and when the commit tuple is acked the coordinator task will persist that the transaction has been completed.
Part of this implementation is a new topology builder (TransactionalTopologyBuilder) that automatically sets up the implicit stream groupings (coordination + transactional streams). TransactionalTopology will only allow for a single TransactionalSpout.
Notes:

Coordinator task maintains a list of finished transactions and only commits them when the previous transaction has been committed (since transactions can finish processing out of order)
CoordinatedBolt is used underneath for batch processing capabilities

+1

repo: nathanmarz/storm


text:
Clicking github link tags in popout windows closes window

Great plugin! I'm experiencing an issue with the links from the preview tags in pop windows
See:
https://github.com/nathonius/obsidian-github-link/assets/38434768/c9923cd8-7464-49ea-a792-b1d39da86a57
Only happens in pop out windows.

Update: happens when clicking links in github-query tables, too

Probably just need to set the right rel tag on them. Will fix.

@anissa111 apologies for the delay. Should be fixed in v0.7.2.

repo: nathonius/obsidian-github-link

license: Unlicense


text:
Watch JS and assets while running the server

When getting set up I was confused about the lack of assets. I then realised I forgot to build the assets, which is documented a bit further down.
To make fab run more of a one-shot process (and to save us having to spawn multiple terminal windows), I’ve added a couple of steps that:

Run npm install; and
Watch the Sass and JS for changes

The npm tasks are backgrounded and the log output is in seperate files. Ideally I’d want to have this logged to stdout along with the Django logs, but I couldn’t see an easy way to do this in a fabfile.

Yeah, no probs 👍

@timcowlishaw I guess you could do that, but I wonder if it makes sense to have pip install as part of the build too in that case? I'm coming back into Python after a few years, so there may be some subtleties missing

@pezholio aha i wouldn't worry too much - from memory i think pip install already runs on both steps? I'm not certain though. Definitely not a blocker in any case!

I've updated this to use nodemon to watch the files for changes and run collectstatic, so now watching the assets should work as expected.

authors: pezholio timcowlishaw

repo: nationalarchives/ds-caselaw-editor-ui


text:
Jenkins deployment

Install Cloud Custodian across multiple TDR AWS accounts using Jenkins
Deployment via Jenkinsfile
Simple Email Service (SES) and Simple Queue Service (SQS) are in the TDR management account
Use terraform templatefile function to simplify code by eliminating data template file resource

maid_status is set as the default tag within the source code

repo: nationalarchives/tna-custodian


text:
Pull config changes in ConsumerConfig and JSApiConsumerGetNextRequest

Overview
Support for MaxBytes for pull requests including changes to Consumer Configuration and JSApiConsumerGetNextRequest
See Server PR 3126
The Consumer Configuration now includes max_expires and max_bytes
MaxRequestExpires  time.Duration `json:"max_expires,omitempty"`
MaxRequestMaxBytes int `json:"max_bytes,omitempty"`

The JSApiConsumerGetNextRequest now includes max_bytes and idle_heartbeat
MaxBytes  int           `json:"max_bytes,omitempty"`
Heartbeat time.Duration `json:"idle_heartbeat,omitempty"`

The max_bytes limit makes the server complete a batch request if the total number of bytes sent to a pull request reaches this value. It works in combination with batch count, which means that the pull request will be complete based on whichever completes first (count or size).
The idle_hearbeat causes the server to send messages with "100 Idle Heartbeat" status (note that the value cannot be 50% more than the consumer config heartbeat value, but the check is done by the server, library does not have to check for that).
Note max_bytes is currently EXPERIMENTAL while behavior is ironed out.
Clients and Tools

[x] Schemas @ripienaar
[x] CLI @ripienaar
[ ] Terraform @ripienaar
[x] Github Actions @ripienaar
[ ] Go @wallyqs
[x] Java @scottf
[ ] JavaScript @aricart
[x] .Net @scottf
[ ] C @kozlovic
[ ] Python @wallyqs
[ ] Ruby @wallyqs
[ ] Rust @derekcollison @Jarema @caspervonb

Other Tasks

[ ] docs.nats.io updated
[ ] Update ADR to Implemented
[ ] Update client features spreadsheet

Client authors please update with your progress. If you open issues in your own repositories as a result of this request, please link them to this one by pasting the issue URL in a comment or main issue description.

Note that we may not rush that to be added in client libraries until the JS simplification work is done and some discussion occurs between client and server team.
For instance, currently the server does not send an indication that the pull request is done because of the size, so the library would need to do accounting of message size + headers when deciding if it needs to wait for more messages or not.
Also, in the case where the pull request max_bytes is smaller than the first message that the server would need to deliver, the server sends a 408 with a description "Message Size Exceeds MaxBytes", which would force libraries to behave differently with this 408 than others..

I've marked my additions to pull requests as EXPERIMENTAL so we can change them without a break if we need to.

There are other issues - if the stream has a message that is larger than the max_bytes the consumer will stall, because the server will send a 408, in this case the 408 is final, as there's no way for the message in question to be processed by the client.
https://github.com/nats-io/nats-server/issues/3165

Which max_bytes are you explicitly referring to here?

The new max_bytes on a pull. Let's say you set max_bytes to 1k, but have a message that is 2k. What will happen?

You get this..
go nats.Header{"Status": []string{"408"}, "Description": []string{"Message Size Exceeds MaxBytes"}}

It would be nice if we didn't have to rely on text for status messages. We face the same issue with flow control and heartbeats, we have to recognize the status code (100) and the text.
For this though, at a minimum I wonder if there is a better code than 408. Maybe one of these?

412 Precondition Failed (RFC 7232)
413 Payload Too Large (RFC 7231)
416 Range Not Satisfiable (RFC 7233)

At a maximum, is there any way we can just ditch the http based codes here and use an api [like] error code?

I think that is an excellent idea and happy to make that change. We also of course have a precedence of adding in specific error codes to compliment the status codes, which by design are mimicking HTTP.

I don't think we can ditch status alignment with HTTP at this point.

the one thing that is not great about the current strat, is that these errors are reported simply as status errors, there's no attribution, the only thing making them jetstream is that there's no payload. Since they are a JetStream response, it would be great if they were js API errors. - or headers indicated that these are jetstream errors.

We could possible add more headers, but not sure if that would buy us much. Sometimes it feels like that just means you need to check multiple headers versus one.
How are you thinking about that would work out in practice and for applications?

authors: aricart derekcollison kozlovic scottf

repo: nats-io/nats-architecture-and-design


text:
🛑 BarefootEdu is down

In f13dc92, BarefootEdu (https://barefootedu.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: BarefootEdu is back up in aa60226 after 6 minutes.

repo: navadhiti/upptime


text:
🛑 BarefootEdu is down

In d4ec727, BarefootEdu (https://barefootedu.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: BarefootEdu is back up in b43904f after 5 minutes.


text:
🛑 Harmony Bot Website is down

In 6d30e41, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in feae29c.


text:
🛑 Harmony Bot Website is down

In 4664289, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in 7154fc4.


text:
🛑 Harmony Bot Website is down

In 6d65621, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in f89f39d.


text:
🛑 Harmony Backup Bot is down

In 402a527, Harmony Backup Bot ($HARMONY_BACKUP) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Backup Bot is back up in c2491a6.


text:
🛑 Harmony Bot Website is down

In b8fc494, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in f170846.


text:
🛑 Harmony Bot Website is down

In 09c6c7e, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in e1b5a20.


text:
🛑 Harmony Bot Website is down

In f456dfa, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in 0ae9025.


text:
🛑 Harmony Bot Website is down

In 0825aa2, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in 58417ca.


text:
🛑 Harmony Bot Website is down

In b9b2252, Harmony Bot Website ($HARMONY_WEB) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Harmony Bot Website is back up in 5d2937d.


text:
Polish

move duplicate synthetic patterns to the utility class
remove "throw" in orElseThrow()

Merge this plz. @taeyeon-Kim

authors: chanhyeong junoyoon

repo: naver/scavenger


text:
Deploy av branch new-soknad med tag 20220329151543-e5db697

e5db69785973980f3527506a53ed40cabf59525c

/promote dev-gcp

repo: navikt/foreldrepengesoknad


text:
Exporting for TypeScript

Hi! Many people use your plugin in typescript environment and they need to import your plugin. Can you add either js export class or d.ts support for? It will help to use your plugin like NPM package.
For example, now I use your plugin with angular2 and after importing plugin to my .ts file I have next error:

My import:
import PickMeUp from 'pickmeup/js/pickmeup.js'

I'm not using TypeScript and have no idea how it works.
Nevertheless, ES2015 imports only work in single latest version of Safari. Until it is supported in 2 latest versions of each major evergreen browser I wouldn't add class export here.
This plugin is targeted for browser environment, so use RequireJS/Alameda to load it asynchronously when you need it:
require(['PickMeUp'], function (PickMeUp) {
    ...
});

I don't want people to require custom build systems just because someone is using TypeScript or React's JSX or something else that is not native to browsers.

repo: nazar-pc/PickMeUp


text:
🛑 ESTAT is down

In 6ce3660, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in bc6c5a9.

repo: nbbrd/sdmx-upptime


text:
🛑 ESTAT is down

In cc30d7b, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in b49537e.


text:
🛑 SE is down

In aed5f61, SE (http://andmebaas.stat.ee/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 0
Response time: 0 ms

Resolved: SE is back up in 834e4ac.


text:
🛑 ESTAT is down

In 802f320, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in 4c4255b.


text:
🛑 NBB is down

In 44c180e, NBB (https://stat.nbb.be/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 429
Response time: 948 ms

Resolved: NBB is back up in 88b8626 after 6 minutes.


text:
🛑 ESTAT is down

In ceb3fb8, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in 49b8bd8 after 5 minutes.


text:
🛑 NB is down

In 924e214, NB (https://data.norges-bank.no/api/dataflow/all/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: NB is back up in ab2c4d9 after 16 minutes.


text:
🛑 ESTAT is down

In 759743c, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in ecc2092 after 1 hour, 1 minute.


text:
🛑 ESTAT is down

In fb14e24, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in 8816436 after 13 minutes.


text:
🛑 IMF is down

In 818da52, IMF (http://dataservices.imf.org/REST/SDMX_XML.svc/Dataflow) was down:

HTTP code: 0
Response time: 0 ms

Resolved: IMF is back up in 62e8321 after 30 minutes.


text:
🛑 NBB is down

In 836643f, NBB (https://stat.nbb.be/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 429
Response time: 651 ms

Resolved: NBB is back up in 1759944 after 32 minutes.


text:
🛑 ESTAT is down

In 7984168, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in 1f37cf4 after 7 minutes.


text:
🛑 ISTAT is down

In 1cb2eaf, ISTAT (https://esploradati.istat.it/SDMXWS/rest/dataflow/all/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ISTAT is back up in 4b0cf65 after 4 minutes.


text:
🛑 ESTAT is down

In a524a5f, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in 163c016 after 6 minutes.


text:
🛑 ISTAT is down

In d261457, ISTAT (https://esploradati.istat.it/SDMXWS/rest/dataflow/all/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ISTAT is back up in 0bc1044 after 5 minutes.


text:
🛑 ESTAT is down

In 956e28f, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in 7525f51 after 6 minutes.


text:
🛑 OECD is down

In ab38a3d, OECD (https://sdmx.oecd.org/public/rest/dataflow/all/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: OECD is back up in e15f258 after 7 minutes.


text:
🛑 NBB is down

In 60338e7, NBB (https://stat.nbb.be/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 429
Response time: 659 ms

Resolved: NBB is back up in f25652a after 2 hours, 32 minutes.


text:
🛑 NBB is down

In 8d6dfc2, NBB (https://stat.nbb.be/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 429
Response time: 495 ms

Resolved: NBB is back up in cda172f after 18 minutes.


text:
🛑 NBB is down

In 43a363d, NBB (https://stat.nbb.be/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 429
Response time: 562 ms

Resolved: NBB is back up in 98b98cd after 1 hour, 12 minutes.


text:
🛑 NBB is down

In b0d1387, NBB (https://stat.nbb.be/restsdmx/sdmx.ashx/GetDataStructure/ALL) was down:

HTTP code: 429
Response time: 821 ms

Resolved: NBB is back up in f61998e.


text:
🛑 ESTAT is down

In c23f50d, ESTAT (https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/dataflow/ESTAT/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ESTAT is back up in efbfbbd.


text:
🛑 ISTAT is down

In 66243cd, ISTAT (https://esploradati.istat.it/SDMXWS/rest/dataflow/all/all/latest) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ISTAT is back up in 85354db.


text:
How to perform an efficient search for mentions?

Hello friends, I'm trying to implement a solution to perform a mention search. The idea is to analyze the user's text for each 'input' event and identify a name typed with '@'. Then, search a pool of relays using the 'search' property of NIP-50.
The problem with this implementation is that the result brings tons of possible matches (and very slow result), and none of them come very close to the string used in the search. My question is whether there is a more efficient way to perform this search. Below is the code:
`
var pool = new NostrTools.SimplePool();
textarea.addEventListener('input', (e) => {
                    const text = e.target.textContent;
                    const matchMention = text.match(/@[^\s@]+$/g);
                    if(matchMention && matchMention[0].length > 3) {

                        var name = matchMention[0].replace('@', '');
                        const search = `"name":"${name}`;
                       const sub = pool.sub([...relayList],[
                            {
                                kinds: [0],
                                search: search,
                            }
                        ]);

                        sub.on('event', event => {
                            const content = JSON.parse(event.content);
                            const regExpName = new RegExp(name);

                            if(content.name.match(regExpName)) {
                                console.log(event.content);

                            }

                        })

                })

{
  "kinds": [1],
  "#p": [pubkeymentioned]
}

But if the client do not know the public key. the idea is to get the name provided by the user directly from the text, in principle the client would not know the public key of the person mentioned

the idea is to get the name given by the user directly from the text. In principle, the client would not know the public key of the mentioned person. As in the NIP-27 example, where the client offers an autocomplete when the user types Bob

There is no way to do this unless you download all posts and do the search manually.

I've thought a lot about this case today, and the best idea that came to mind would be to create a contact list up to the fourth level of depth, starting from the user in question, and then limit the search to that list. Otherwise, request the inclusion of the (pk).

authors: fiatjaf maksmachado

repo: nbd-wtf/nostr-tools


text:
Java 11 Modularization

switched to java 11 modules

Adapted gradle multi-module build
adapted pipeline
replaced unmodular javassist with byte-buddy
added and adapted tests
reworked proxy functionality

Code Quality
review pending:

Codacy: https://app.codacy.com/gh/nbrugger-tgm/reactj/pullRequest?prid=8122377

repo: nbrugger-tgm/reactj


text:
Is the concept corect?

My apologies, I may just not understand the idea behind auto-sudoedit, but I do have difficulties understanding the idea behind it:

I open a file that is rw-r--r-- root:root as user foo. Emacs opens it.
I try to edit it, but emacs says it's only rw for root, foo can't edit it.
I try to save it (without editing), emacs says "no need to save, no changes"

Shouldn't auto-sudoedit instead intercept the "find-file" function and say "hey, you won't be able to edit/save this file, do you want to open it as root via tramp instead"?

I can open it as user root.
-rw-r--r-- 1 root root    7  3月 22 16:16 foobar.txt

So I could not understand what the problem was there.
It may be because my English skills are not good enough.

No problem, me English is also not very good :) I try again:

I am user foo
I open: -rw-r--r-- root root (...) /etc/hosts
I can see the file contents: 127.0.0.1 localhost localhost.localdomain
I want to edit the file. Emacs says: "Error! File is read only!"
I want to save the file with C-x C-s. Emacs says "Error! No changes need to be saved"

How can I edit the file then? As step 3.1 I need to disable read-only-mode.
For "Auto-sudoedit", my idea was to change the algorithm:

I am user foo
I open: -rw-r--r-- root root (...) /etc/hosts
auto-suedit checks:

Can foo write to the file?
Yes: Open it
No: Use tramp sudo to open it

Sorry; is it more clear now?

For "Auto-sudoedit", my idea was to change the algorithm:

I think auto-sudoedit is currently working with that algorithm, so I don't know why it doesn't reopen.

authors: hajosc ncaq

repo: ncaq/auto-sudoedit


text:
possible leak variables

I  noticed between versions 1.0.6 and 1.0.7, that after installing 1.0.7 I see 2 new leak variables:
The following leaks were detected:addCallback, start
I am currently using lab (a hapi based mocha like testing suite).
Reverting back to 1.0.6 these 2 leaks go away.  If you need help troubleshooting further let me know.

Thanks.

Confirmed fixed thanks!

license: ISC


text:
Lagged hyperparameters check and correct

The function of changing the lagged transformation hyperparameter depending on the length of the time series was implemented.

Hello @Dreamlone! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file examples/ts_forecasting_problem_small_ts.py:

Line 152:1: W391 blank line at end of file

repo: nccr-itmo/FEDOT


text:
Update release notes

I have started updating the release notes, to track upcoming release Version 1.1.0
@nicholasloveday could you please review what I have written about adding the 5 new threshold weighted scores (in "Features" section)?

If there are any changes you want made, please let me know.
Also, if you want the order changed, please also let me know (I went with the order they were listed at one point in the tutorial).

@tennlee @nicholasloveday - could one (or both of you) please review what I have written about modifying trapezoidal call to work with either NumPy 1 or 2.

Is "Internal Changes" the correct section, or should it be in one of other sections?
Is the wording I have used clear enough, or should it be modified?
Should I specify where the change was made (it looks like it was made in ROC)?

Note: just before the Version 1.1.0 is released, three last minute changes will need to be made. (1) "Upcoming Release" will need to be changed to the date, (2) in the GitHub commit history URL, "develop" will need to be changed to "1.1.0" and (3) any unused section headers will need to be deleted.

I left out some changes that didn't seem significant enough to call out in the release notes (e.g. changing the thumbnail image for Data Fetching in the tutorial gallery, fixing some rendering issues in some API docstrings, minor tweak to maintainer's notes). All of these changes are visible if you follow the GitHub commit history link. However, if it would be better for some/all of those changes to be mentioned in the release note, just let me know and I can add them.

The notes about the threshold weighted scores look good to me. Thanks.
The trapezoidal note is clear to me. I'm happy to go with that or whatever @tennlee suggests.

I took the opportunity to enter some basic information for each (non-yanked and non-identical) release from 0.0.1 to 0.9.2 inclusive. At the moment, they mostly list the version number, the release date and a link to the GitHub commit history. They don't include a summary of the most noteworthy changes.
Ideally, I would like to add a summary of the noteworthy changes to each version entry. But if I do that, I will most likely do it batches over time. (I am reluctant to cut and paste the existing release notes from the GitHub entries, as they are inconsistent in what they do and don't include, and some releases don't have any summary notes).

Changed "trapezoidal" to "numpy.trapezoid" following offline feedback from Tennessee

authors: Steph-Chong nicholasloveday

repo: nci/scores


text:
Protobuf support

Description
Provider for protobuf protocol was added as experimental feature. Some integration tests and acceptance tests is required, I think.

I've fixed last mistakes. Sorry for the delay.

LGTM

repo: nclient/NClient


text:
Bug report: Android notification has no timestamp

Steps to reproduce: Start a timer and wait for a Brewing Complete notification.
Expected behavior: Brewing Complete notification should include a timestamp telling the user when the timer finished, e.g. "now" or "5 min ago".
Observed behavior: The notification does not show a timestamp at all.
Device information: Android.

it would make sense to combine this with #25


text:
Nest Teams under Season

List all teams on Season#show
'New Team' button above teams list
'New match' button above matches list

Done

repo: ncpierson/ARLC-Standings


text:
Difference between JS and RE examples.

The persist section seems to have different functionality.
In the RE case, there is no checking for recovering. Is this done automatically in the wrapper? (noop persist during recovering)
Furthermore, the readonly FindContact case is persisted, which may be a big waste of space (and recovery time)?
JS persist

const spawnUserContactService = (parent, userId) => spawnPersistent(
  parent,
  async (state = { contacts:{} }, msg, ctx) => {
    if(msg.type === GET_CONTACTS) {
      	dispatch(ctx.sender, { payload: Object.values(state.contacts), type: SUCCESS });
    } else if (msg.type === CREATE_CONTACT) {
        const newContact = { id: uuid(), ...msg.payload };
        const nextState = { contacts: { ...state.contacts, [newContact.id]: newContact } };
        if(!ctx.recovering) { await ctx.persist(msg); }
        dispatch(ctx.sender, { type: SUCCESS, payload: newContact });
        return nextState;
    } else {
        const contact = state.contacts[msg.contactId];
        if (contact) {
            switch(msg.type) {
              case GET_CONTACT: {
                dispatch(ctx.sender, { payload: contact, type: SUCCESS }, ctx.self);
                break;
              }
              case REMOVE_CONTACT: {
                const nextState = { ...state.contacts, [contact.id]: undefined };
                if(!ctx.recovering) { await ctx.persist(msg); }
                dispatch(ctx.sender, { type: SUCCESS, payload: contact }, ctx.self);
                return nextState;
              }
              case UPDATE_CONTACT:  {
                const updatedContact = {...contact, ...msg.payload };
                const nextState = { ...state.contacts, [contact.id]: updatedContact };
                if(!ctx.recovering) { await ctx.persist(msg); }
                dispatch(ctx.sender,{ type: SUCCESS, payload: updatedContact }, ctx.self);
                return nextState;
              }
            }
        } else {
          dispatch(ctx.sender, { type: NOT_FOUND, contactId: msg.contactId }, ctx.sender);
        }
    }
    return state;
  },
  `contacts:${userId}`,
  userId
);

RE persist
let createContactsService = (parent, userId) =>
  spawnPersistent(
    ~key="contacts" ++ userId,
    ~name=userId,
    parent,
    (state, (sender, msg), {persist}) =>
      persist((sender, msg))
      |> Js.Promise.then_ (
        () =>
          (
            switch msg {
            | CreateContact(contact) => createContact(state, sender, contact)
            | RemoveContact(contactId) => removeContact(state, sender, contactId)
            | UpdateContact(contactId, contact) => updateContact(state, sender, contactId, contact)
            | FindContact(contactId) => findContact(state, sender, contactId)
            }
          )
          |> Js.Promise.resolve
      ),
    {contacts: ContactIdMap.empty, seqNumber: 0}
  );

Nice catch! You are correct. The reason version has a bug in it


text:
--name-only option for ACD

ncw,
Can we get a --name-only option for ACD ignoring the mod time, md5 and size?

Could you elaborate on the use case for that feature?

It will round out the options available for ACD. I.e. we have the md5 mod date, and size-only, also known to us is the file name on ACD.
Another use case is when encrypting files on the fly before they are uploaded to ACD. I can use gpg to encrypt a file and the size and md5 will be different every time, so it will essentially update this file on ACD.  Adding the --name-only option should mitigate this.

So in effect it is a "skip-existing-files" behaviour?

That's what I'm picturing. If the option --name-only is set and you come across a file of the same name on ACD, it should skip this file.

Back to the rsync man page I see these useful looking options...
            --existing              skip creating new files on receiver
            --ignore-existing       skip updating files that exist on receiver

I think the second one of these would be equivalent to --name-only but better named and with a precedent from rsync.
How does that sound?

I think that is along the lines of what I was mentioning, thanks for the find.

Added PR #276.

authors: ff-b4 klauspost ncw

repo: ncw/rclone


text:
Traced actions in batch calls do not mention all output files

To reproduce:

Run the following program in a clean directory

import Development.Shake
main :: IO ()
main = shakeArgs shakeOptions $ do
  want ["foo", "bar"]
  batch maxBound ("*" %>) pure (cmd "touch")

Observe that the following is printed:

# touch (for bar)
Build completed in 0:01m

I would expect the following output:

# touch (for foo and bar)
Build completed in 0:01m

A testcase using traced directly could use the rule
batch maxBound ("*" %>) pure (traced "hello" . traverse_ (`writeFile` ""))

Maybe there should be a configurable size limit for the output. Otherwise you would have to wrap all batches with greater sizes (100 , 1000 or more) in quietly and produce desired output with putQuiet. For me thats the usual use case, but of course, thats a single point of data.

Fine by me.

repo: ndmitchell/shake


text:
left align definition in terms and reports - P2

in a report...
see below  these buttons (list buttons?) seem to not fit the style because the respective text is center aligned.  the buttons seem out on their own.

An idea we can try is tinyMCE editor has an alignment tool. We can have the description field be 'normal' alignment and then just edit the text itself for the alignmemt

repo: ndoit/fenrir


text:
Can't vote on the DAO to upgrade binary version

Describe the bug
When I want to approve the binary upgrade of the DAO I have : {"index":0,"kind":{"ExecutionError":"Exceeded the account balance."}}
To Reproduce
Steps to reproduce the behavior:

Go to 'https://testnet.app.astrodao.com/dao/anank.sputnikv2.testnet/governance/settings/version'
Click on 'Approve'
Click on 'Approve' in pop-up wallet's window
See error : {"index":0,"kind":{"ExecutionError":"Exceeded the account balance."}}

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

Desktop :

OS: [e.g. iOS] : Mac OS Monterrey
Browser [e.g. chrome, safari] : Brave
Version [e.g. 22]: Version 1.36.112 Chromium: 99.0.4844.51 (Build officiel) (x86_64)

When I vote with each account it's working but I can't approved the proposal because the half of account can't vote.
Do you have any ideas of what can I do ?

Hi,
I try to add 10 NEAR in the DAO by
But I have the same error : {"index":0,"kind":{"ExecutionError":"Exceeded the account balance. »}}
I don’t know how to solve.
I will try to use « Fund ».

Le 27 avr. 2022 à 19:58, Oleg Verzunov @.***> a écrit :
Hi,
this feature is still in development. Actually you can perform all the steps in the wizard on test envireonment but nothing will be changed on your DAO.
Regarding the error you got - as far as I rememeber it requires at least 6 NEAR to be on DAO balance to peform the upgrade.
Also, please dont change attached Gas on proposal - default values must work as expected.
—
Reply to this email directly, view it on GitHub https://github.com/near-daos/astro-ui/issues/1009#issuecomment-1111314616, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUC2FWE6EFDMWUULCHQ5O7LVHF53FANCNFSM5UPPDFCA.
You are receiving this because you authored the thread.

workign version deployed on testnet and prod

repo: near-daos/astro-ui


text:
chore: cover one more syn::generics::TypeParamBound as per syntax change

this resolves ci failure https://github.com/near/borsh-rs/actions/runs/11550974184/job/32147032938 by mirroring change in https://github.com/serde-rs/serde/commit/8b0f482666c5deca3bdc440f6b1dcaf84d2d2a62

@race-of-sloths include

@dj8yfo Thank you for your contribution! Your pull request is now a part of the Race of Sloths!
King of Sloths shakes your hand! Yellow leader's jersey is yours deservedly!

Current status: waiting for scoring
We're waiting for maintainer to score this pull request with @race-of-sloths score [0,1,2,3,5,8,13] command. Alternatively, autoscoring [1,2] will be applied for this pull request
What is the Race of Sloths

Race of Sloths is a friendly competition where you can participate in challenges and compete with other open-source contributors within your normal workflow
For contributors:

Tag @race-of-sloths inside your pull requests
Wait for the maintainer to review and score your pull request
Check out your position in the Leaderboard
Keep weekly and monthly streaks to reach higher positions
Boast your contributions with a dynamic picture of your Profile

For maintainers:

Score pull requests that participate in the Race of Sloths
Engage contributors with fair scoring and fast responses so they keep their streaks
Promote the Race to the point where the Race starts promoting you
Grow the community of your contributors

Feel free to check our website for additional details!

Bot commands

For contributors

Include a PR: @race-of-sloths include to enter the Race with your PR

For maintainers:

Invite contributor @race-of-sloths invite to invite the contributor to participate in a race or include it, if it's already a runner.
Assign points: @race-of-sloths score [1/2/3/5/8/13] to award points based on your assessment.
Reject this PR: @race-of-sloths exclude to send this PR back to the drawing board.
Exclude repo: @race-of-sloths pause to stop bot activity in this repo until @race-of-sloths unpause command is called

repo: near/borsh-rs


text:
feat: fixed class vs className incorrect use

class prop bad use fix

fixed class vs className props incorrect use in the nextjs templates's files

changed class to className prop in:

templates/frontend/next-app/src/app/hello-components/page.js
templates/frontend/next-page/src/pages/hello-components/index.js
templates/frontend/vanilla/src/components.js files

Note: Sorry for the double quotes it's my lint doing some messy trick I will try to fix it

I don't understand why Actions are not being trigered, but I am sure this will break the Check-Lint Action

Stagnated and solved on #2133

repo: near/create-near-app


text:
feat: implement require macros and fix log docs

Basically want to provide macros to mimic similar behaviour to the rust assert! macros without it adding extra rust details and file information about the assertion.
Built on #492 to avoid conflicts and use the correct method signature, but can switch if we want this and not that PR.
Optional which opinions would be appreciated:

Should the no message call panic() syscall directly? I assumed not because it seems like a micro-optimization that would be hard to debug by default. Pinpointing that it's a require statement might help developers

@matklad would love a quick opinion on this if you think this is a good direction for having this type of assertion available without the Rust internals.

Couple of thoughts:

I wonder if we should just call this assert. The require name doesn't really point to the difference

I personally think that keeping it named require to avoid collision with the std prelude and making it clear that it performs a different function is good rather than having unexpected side effects if someone does/doesn't import the near_sdk::assert, do you have a strong opinion on naming it assert?

You probably don't need _eq/_neq versions -- they exist solely to provide better assertion messages. we don't allow assertion message, assert!(x == y) is enough.

Good point! I'll remove those for now

Would be cool to get some specific numbers on code saving here: I know that fmt is heavy in principle, but I don't have a gut feeling for how much.

So it's hard to tell, since most of fmt is still pulled in for all contracts using the sdk, but roughly can see the contract size changes in #514 (since now we are tying the example builds with docker to the CI checks)

Just in case of ambiguity, I'm assuming your approval as invalid @mikedotexe because I've made changes since your approval.

repo: near/near-sdk-rs


text:
refactor(env)!: remove public key generics from promise API

No need for this generic. Can potentially lead to a larger code size if misused without any noticeable benefit.

Since this seems to be a breaking change, should we update the changelog too?

authors: ChaoticTempest austinabell


text:
When creating a new account, "Continue" button doesn't work when getting to the "Set Recovery" phase

Problem
I rebuilt the Wallet Docker image to work inside Kurtosis and things seem to work at first, until I get to "Set Recovery". Clicking the "Continue" button doesn't do anything, and nothing shows up in the Network tab or Console.

Expected Behavior
Proceeds to the next screen where it shows me my passphrase
Steps to reproduce

Install Kurtosis if not done already: https://docs.kurtosistech.com/installation.html
Run kurtosis module exec kurtosistech/near-kurtosis-module:2022-02-09
Open the returned Wallet URL
Try to create an account

@mieubrisse thank you for reporting this issue. We had a bug that made it into the testnet wallet but shipped a fix earlier today: https://github.com/near/near-wallet/pull/2466.
Please try using the latest version of the master branch as this issue should be solved now.

Hi @mieubrisse, we can absolutely look at incorporating Docker image builds into our upcoming CI pipeline. Are you currently relying on the Docker image built from near-wallet/packages/frontend without any custom behavior on top of it?

authors: Patrick1904 andy-haynes mieubrisse

repo: near/near-wallet


text:
Indicator for price trend

Adding an indicator if the price is trending up or down would be nice. Maybe an arrow, or change the color of the bitcoin symbol green or red depending on direction.

@y: Thanks for the feedback! This requires time series data to be useful, so I've had this sketched out for awhile for a major revision of btcbar that also shows graphs of recent trends. I think it's going to have to log data locally though since not many of the APIs offer historical data for free.

authors: nearengine y

repo: nearengine/btcbar


text:
Improve Typescript chapter

In this video, Matteo Collina explains how to use Typescript with the Node.js test runner.
In our chapter, we're showing how to do it with the tsx --loader, but this solution doesn't work very well with test suites.
The solution proposed by Matteo sounds promising, I think is worth taking a look

@bilalshareef can you please take a look at this one too?

As per the video, there are couple of issues with the current approach using tsx --loader.

Running just node --import=tsx --test doesn't work. We have to specify the path or glob of file(s) to test.
It skips type checking.

A better approach/solution proposed by Matteo Collina in the video is to use a new npm package named borp written by himself which is a test runner on top of node:test. It is basically a wrapper to node:test which adds support for TypeScript.
Since this workshop is just about the node:test runner and borp is a third-party library in this case, we can stick with the current approach itself.

Agreed, thanks for looking into this. I'll close this for now because I consider it out of scope for this workshop, but I'm equally confident that this feature may land into the test runner at some point, in which case we can incorporate it.

authors: alfonsograziano bilalshareef simoneb

repo: nearform/node-test-runner-workshop


text:
Add requirements.txt

Take it or leave it, but I converted the dependencies from the install script to a requirements.txt file

Thanks!  I was inspired by this pull request and added to the installation script.

authors: NTXAggie nebhead

repo: nebhead/PiFire


text:
Program just exits

i give the apk as the argument. The program just exits. It happens when i dont give any argument to it.
python obfuscators/obfuscators.py just exits.

i have been doing some debugging and the error is "list index out of range". Any idea what it means?

Hi!
Although without the exact output and invocation is hard to understand, I
guess it’s due to the fact that the obfuscators.py command expects a
directory that contains the APKs as a first argument and the list of
obfuscators to apply as the second argument.
See the main() function at the very bottom of obfuscators.py
On Sat, 29 Sep 2018 at 08:36, ankushgoel27 notifications@github.com wrote:

i have been doing some debugging and the error is "list index out of
range". Any idea what it means?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/necst/aamo/issues/2#issuecomment-425620866, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AALxNI9Uc6-gz1iZydcup1TD4wsoP_Wwks5ufxUDgaJpZM4W_hyD
.

thats the thing, there is no output. I printed the exception and saw list index out of range error. This is how i am running the command - Python obfuscator/obfuscators.py dir_With_apks_to_obfuscate Lib and still no output. No error log. Nothing.

obfuscators to apply is already mentioned in the program. I added some obfuscators to the list. Then i ran the program with only 1 argument - dir with apks. And still no output.

The error is coming from the apply_dir function

i was able to fix few issues. Changed the name of adam_base_dir to base_dir as there is not adam_base_dir. The list out of index error was fixed.Now i was able to get the log file.
cat obfuscatorsobfuscators.log
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate - ['Lib', 'Raw'] - /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:Backsmali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate into /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:
DEBUG:root:[dir_with_apks_to_obfus]:Input file (/opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app) was not found or was not readable.
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Start: 2018-09-29 18:34:47.864542
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscator Lib
DEBUG:root:[dir_with_apks_to_obfus]:Python Obfuscator!
DEBUG:root:[dir_with_apks_to_obfus]:Smali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate from /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:I: Using Apktool 2.3.4
DEBUG:root:[dir_with_apks_to_obfus]:brut.directory.DirectoryException: java.io.FileNotFoundException: /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app (No such file or directory)
DEBUG:root:[dir_with_apks_to_obfus]:### ERROR ### Unable run :apktool b --force-all /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate
Unable to apply Lib ### ERROR ###
DEBUG:root:[dir_with_apks_to_obfus]:### FAILURE ###
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate - ['Lib', 'Raw'] - /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:Backsmali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate into /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:
DEBUG:root:[dir_with_apks_to_obfus]:Input file (/opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app) was not found or was not readable.
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Start: 2018-09-29 18:37:18.994144
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscator Lib
DEBUG:root:[dir_with_apks_to_obfus]:Python Obfuscator!
DEBUG:root:[dir_with_apks_to_obfus]:Smali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate from /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:I: Using Apktool 2.3.4
DEBUG:root:[dir_with_apks_to_obfus]:brut.directory.DirectoryException: java.io.FileNotFoundException: /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app (No such file or directory)
DEBUG:root:[dir_with_apks_to_obfus]:### ERROR ### Unable run :apktool b --force-all /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate
Unable to apply Lib ### ERROR ###
DEBUG:root:[dir_with_apks_to_obfus]:### FAILURE ###
DEBUG:root:[TestApp]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app
DEBUG:root:[TestApp]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk - ['Lib', 'Raw'] - /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp
DEBUG:root:[TestApp]:Backsmali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk into /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp
DEBUG:root:[TestApp]:
DEBUG:root:[TestApp]:Input file (/opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app) was not found or was not readable.
DEBUG:root:[TestApp]:Obfuscate Start: 2018-09-29 18:37:26.088151
DEBUG:root:[TestApp]:Obfuscator Lib
DEBUG:root:[TestApp]:Python Obfuscator!
DEBUG:root:[TestApp]:Smali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk from /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp
DEBUG:root:[TestApp]:I: Using Apktool 2.3.4
DEBUG:root:[TestApp]:brut.directory.DirectoryException: java.io.FileNotFoundException: /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app (No such file or directory)
DEBUG:root:[TestApp]:### ERROR ### Unable run :apktool b --force-all /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk
Unable to apply Lib ### ERROR ###
DEBUG:root:[TestApp]:### FAILURE ###
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate - ['Lib', 'Raw'] - /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:Backsmali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate into /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:
DEBUG:root:[dir_with_apks_to_obfus]:Input file (/opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app) was not found or was not readable.
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Start: 2018-09-29 18:38:17.978292
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscator Lib
DEBUG:root:[dir_with_apks_to_obfus]:Python Obfuscator!
DEBUG:root:[dir_with_apks_to_obfus]:Smali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate from /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:I: Using Apktool 2.3.4
DEBUG:root:[dir_with_apks_to_obfus]:brut.directory.DirectoryException: java.io.FileNotFoundException: /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app (No such file or directory)
DEBUG:root:[dir_with_apks_to_obfus]:### ERROR ### Unable run :apktool b --force-all /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate
Unable to apply Lib ### ERROR ###
DEBUG:root:[dir_with_apks_to_obfus]:### FAILURE ###
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate - ['Lib', 'Raw'] - /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:Backsmali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate into /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:
DEBUG:root:[dir_with_apks_to_obfus]:Input file (/opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate) was not found or was not readable.
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscate Start: 2018-09-29 18:40:42.708569
DEBUG:root:[dir_with_apks_to_obfus]:Obfuscator Lib
DEBUG:root:[dir_with_apks_to_obfus]:Python Obfuscator!
DEBUG:root:[dir_with_apks_to_obfus]:Smali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate from /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus
DEBUG:root:[dir_with_apks_to_obfus]:I: Using Apktool 2.3.4
DEBUG:root:[dir_with_apks_to_obfus]:brut.directory.DirectoryException: java.io.FileNotFoundException: /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app (No such file or directory)
DEBUG:root:[dir_with_apks_to_obfus]:### ERROR ### Unable run :apktool b --force-all /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfus/app /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate
Unable to apply Lib ### ERROR ###
DEBUG:root:[dir_with_apks_to_obfus]:### FAILURE ###
DEBUG:root:[TestApp]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app
DEBUG:root:[TestApp]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk - ['Lib', 'Raw'] - /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp
DEBUG:root:[TestApp]:Backsmali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk into /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp
DEBUG:root:[TestApp]:
DEBUG:root:[TestApp]:Input file (/opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk) was not found or was not readable.
DEBUG:root:[TestApp]:Obfuscate Start: 2018-09-29 18:41:47.724197
DEBUG:root:[TestApp]:Obfuscator Lib
DEBUG:root:[TestApp]:Python Obfuscator!
DEBUG:root:[TestApp]:Smali: /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk from /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp
DEBUG:root:[TestApp]:I: Using Apktool 2.3.4
DEBUG:root:[TestApp]:brut.directory.DirectoryException: java.io.FileNotFoundException: /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app (No such file or directory)
DEBUG:root:[TestApp]:### ERROR ### Unable run :apktool b --force-all /opt/aamo/obfuscatorstemp/dir_with_apks_to_obfuscate/TestApp/app /opt/aamo/obfuscatorsinput/dir_with_apks_to_obfuscate/TestApp.apk
Unable to apply Lib ### ERROR ###
DEBUG:root:[TestApp]:### FAILURE ###

I think the issue is in the apply_dir function where adam_base_dir is given as input but not defined anywhere. no such dir is created or defined.

i was able to fix atleast compiling and decompiling but there are more issues here.
DEBUG:root:[TestApp]:Obfuscators Initialize: /opt/aamo/obfuscatorsobfuscators /opt/aamo/obfuscatorstemp/dir/TestApp/app
DEBUG:root:[TestApp]:Obfuscate Request: /opt/aamo/obfuscatorsinput/dir/TestApp.apk - ['Lib', 'Restring'] - /opt/aamo/obfuscatorstemp/dir/TestApp
DEBUG:root:[TestApp]:Backsmali: /opt/aamo/obfuscatorsinput/dir/TestApp.apk into /opt/aamo/obfuscatorstemp/dir/TestApp
DEBUG:root:[TestApp]:I: Using Apktool 2.3.4 on TestApp.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: /root/.local/share/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values / XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
DEBUG:root:[TestApp]:
DEBUG:root:[TestApp]:Obfuscate Start: 2018-09-29 19:36:33.781792
DEBUG:root:[TestApp]:Obfuscator Lib
DEBUG:root:[TestApp]:Python Obfuscator!
DEBUG:root:[TestApp]:Smali: /opt/aamo/obfuscatorsinput/dir/TestApp.apk from /opt/aamo/obfuscatorstemp/dir/TestApp
DEBUG:root:[TestApp]:I: Using Apktool 2.3.4
I: Smaling smali folder into classes.dex...
I: Building resources...
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk...
DEBUG:root:[TestApp]:W: warning: string 'switch_off' has no default translation.
W: warning: string 'switch_on' has no default translation.
DEBUG:root:[TestApp]:Obfuscator Restring
DEBUG:root:[TestApp]:Python Obfuscator!
DEBUG:root:[TestApp]:### ERROR ### list index out of range ### ERROR ###
DEBUG:root:[TestApp]:### FAILURE ###

where is the output file generated?

good night my friends sorry to comment nessq question closed, but it was the only pulse I found, I can not in any way overshadow my apk I did everything in the script but it does not work could I unplug the script from you that is working or help me solve sorry for the writing

Hi, were you able to fix all of the obfuscation types? I have fixed around 40% of it. I am not a Python dev so It's taking a few for me to fix the error as I read through what all the methods means in the python docs.

I started yesterday and already fixed 40% of it, It's really simple but there is some major issues that the creator of this lib didn't think about while making it at the time. One of the biggest thing is the lib doesn't support MultiLib

@LynxKik  You're not telling anything useful. how you fixed 40%, what did you do?

@ICommandMachinesObey I don't have to tell anything useful, Maybe get basic programming knowledge before trying to use an open source program.

Anyone managed to get it working? I'm still getting the same error messages as above. :(

authors: ICommandMachinesObey Jasptzx LynxKik ankushgoel27 ismaelsilver phretor

repo: necst/aamo


text:
Make skip_empty have an effect on XML reporting

Is your feature request related to a problem? Please describe.
It seems setting skip_empty to True in .coveragerc has no effect on XML reporting.
Describe the solution you'd like
I would like setting skip_empty to True to actually skip the empty files during XML reporting.
Describe alternatives you've considered
I can currently omit the empty files, but this not very convenient.
Additional context
I have empty __init__.py files in my project (they are actually only created because Coverage.py requires them to include un-tested files in those directories in the report.) and when I generate an XML report while skip_empty is set to True, those empty files are also in the report. As a result, cobertura plug-in in Jenkins shows wrong results (this might be unrelated).

This is fixed in 97f05c988545f8ca588253fd325401c4834543b6

This is now released as part of coverage 5.2.

authors: ilkecan nedbat

repo: nedbat/coveragepy


text:
Add hyperlink to console output

Adds hyperlink as requested in issue #1523

Neglected to run tests after final change. Fixing...

@newbery Thanks! Bernat confirmed that this is only needed for HTML.  I'll merge this and then undo the report.py part.

This is now released as part of coverage 7.2.4.

authors: nedbat newbery


text:
Problem with Published values in @StateObject

I'm having trouble using this with @Published values in my @StateObject viewModel. The AlertX is shown but it won't go away if I click OK. It also looks like it is loaded twice. If I change the isPresented to a @State value in the view it works fine.
            ScrollView {
                if games.fetchedGames.count == 0 {
                    Text("No games here 😢! Create your first or ask a friend for an invitation").padding()
                } else {
                    LazyVStack {
                        ForEach(games.fetchedGames.sorted()) { game in
                            NavigationRow(game: game).onTapGesture {
                                if game.owner == userInfo.user.uid {
                                    //showAlertX = true
                                    activeGame = game
                                    viewModel.game = activeGame!
                                    activeGameSheet = .newGame
                                    showGameSheet = true
                                } else {
                                    Print("Not owner")
                                    playingGame.game = game
                                    activeGameSheet = .activeGame
                                    showGameSheet = true
                                }
                                print(viewModel.game, "tapped")
                            }

                        }
                    }.alertX(isPresented: $playingGame.gameisSetToFinished, content: {

                        AlertX(title: Text("AlertX Title"),
                               message: Text("An optional message indicating some action goes here..."),
                               primaryButton: .cancel(),
                               secondaryButton: .default(Text("Done"), action: {
                                // Some action
                               }),
                               theme: .graphite(withTransparency: true, roundedCorners: true),
                               animation: .classicEffect())
                    })
                }
            }

I seem to be having a similar issue with regards to the double display. I can see it triggers the first action on my primary button and (in my case, dismisses the underlying view) but a second AlertX remains.
I think it be the ViewController stack but I'm not certain

repo: neel-makhecha/AlertX


text:
Update 3 - change map to set for better semantic

File(s) Modified: 3. Longest Substring Without Repeating Characters
Language(s) Used:  javascript
Submission URL: _https://leetcode.com/problems/longest-substring-without-repeating-characters_

Thanks, @obadajasm!

repo: neetcode-gh/leetcode


text:
[Experimental/Research] Retroactively fill listening history pre-Last.fm account with Spotify play history

Spotify recently introduced a recently played tracks endpoint for users with seemingly infinite records. If a user created a Last.fm account after already having Spotify, the app could complete their listening history with Spotify to "make up" for not scrobbling during those times. More analysis needed for implications and intersections with Last.fm data moving forward, and whether Spotify will provide support for this endpoint.

Spotify only record most recent 90 days :(

repo: neilmenon/lastfm-with-friends


text:
Hotfix/dataset@alen

@shovelingpig

@shovelingpig 셀프 리뷰 후 급해서 머지했습니다

solve #39

resolve #39

repo: nemodleo/attentionx-icl


text:
Insecure @@ getGraphAccounts( ) is vulnerable to "Timing attack"

The Method getGraphAccounts
is vulnerable to Timing Attack
the suggestion is to be changed to something more robust.
Hash with Salt for examplo.
see my suggestion as a possible improvement, I am willing to contribute if you so wish.

@EvertonMelo, thanks for the suggestion!
Could you specify a little bit more in detail where is vulnerable? Is it in the nem2-cli side or the library is being used?
With this info, we could consider merging a pull-request with the improvement or change the code.

great!
What information do you need  @dgarcia360 ?

Come on, EvertonMelo, you have to come up with a real exploit, not just hand waving.
I don't think any secret information can be extracted.

@EvertonMelo please educate yourself what timing attack is and when it is applicable, closing as irrelevant.

authors: BloodyRookie EvertonMelo dgarcia360 gimer