Android - Create room - Blank area displayed below list of workspaces

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: <IP_ADDRESS>
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught on HybridApp, is this reproducible on New Expensify Standalone?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail: N/A
Email or phone of affected tester (no customers): N/A
Issue reported by: Applause -Internal Team
Action Performed:

Open the app and log with an account that has more than 7 workspaces
Tap FAB > Start chat > Room
Wait until the keyboard opens up
Select the Workspace row

Expected Result:
The list of workspaces is fully visible
Actual Result:
Only 7 workspaces are shown, and there is a blank area below them
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Standalone
[x] Android: HybridApp
[ ] Android: mWeb Chrome
[ ] iOS: Standalone
[ ] iOS: HybridApp
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos

Add any screenshot/video evidence

https://github.com/user-attachments/assets/e3386290-78e7-40e8-ac17-aa13d240107e
View all open jobs on GitHub

Proposal
Please re-state the problem that we are trying to solve in this issue.
Keyboard padding is still added, even though the keyboard is not visible
What is the root cause of that problem?
It seems it has the same root cause as this issue:
https://github.com/Expensify/App/issues/48677#issuecomment-2380760479
and this is the upstream issue:
https://github.com/facebook/react-native/pull/44652
What changes do you think we should make in order to solve the problem?

In the other issue, they added a patch for iOS, I think we need to include android as well.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Blank area displayed below list of workspaces
What is the root cause of that problem?
We open the workspace to select a workspace, but the keyboard remains open
https://github.com/Expensify/App/blob/a543d86d4d63a4e7812d5501f14b775b456133dd/src/pages/workspace/WorkspaceNewRoomPage.tsx#L295
https://github.com/Expensify/App/blob/bd6595f9c5c09999882135b49816a15427d553df/src/components/ValuePicker/index.tsx#L17
and in ScreenWrapper have KeyboardAvoidingView to  adjust its height, position, or bottom padding based on the keyboard height to remain visible while the virtual keyboard is displayed.
https://github.com/Expensify/App/blob/9671e6c9d68c53bbf755bb83cecdb35d0c23938b/src/components/ValuePicker/ValueSelectorModal.tsx#L28
We opened the workspace to select, but KeyboardAvoidingView still detects the keyboard as open and adjusts the bottom padding, causing a blank space to appear.
That's why we don't encounter this issue when the keyboard is not open.
What changes do you think we should make in order to solve the problem?
To resolve this issue, we should disable KeyboardAvoidingView to prevent it from adjusting the bottom padding. Something like that:
https://github.com/Expensify/App/blob/9671e6c9d68c53bbf755bb83cecdb35d0c23938b/src/components/ValuePicker/ValueSelectorModal.tsx#L28
            <ScreenWrapper
                style={styles.pb0}
                includePaddingTop={false}
                includeSafeAreaPaddingBottom={false}
                testID={ValueSelectorModal.displayName}
+                shouldEnableKeyboardAvoidingView={false}
            >

POC
https://github.com/user-attachments/assets/d5843d0e-dae8-47c0-a750-9427d9f5506c

What alternative solutions did you explore? (Optional)

Proposal updated

Updated the alternative solutions

Proposal
Please re-state the problem that we are trying to solve in this issue.
Only 7 workspaces are shown, and there is a blank area below them
What is the root cause of that problem?

This issue appears because of KeyboardAvoidingView/index.android.tsx.

In that file, we are having the incorrect practice with the useSharedValue and useState:

https://github.com/Expensify/App/blob/b80c68ea76cdf825d9331bbf298cc41b40716037/src/components/KeyboardAvoidingView/index.android.tsx#L12-L18

Don't read or modify the value of a shared value during a component's render. Access to value property or calling get/set methods is a side-effect. Triggering side-effects during render violates the Rules of React. All reads from and writes to a shared value should happen in relevant callbacks which aren't executed during render, i.e. in useAnimatedStyle or useEffect hooks.

This violation can indeed lead to shared value instability, even if we do not explicitly change it, what directly leads to our bug here. When we select the Workspace row in step 4, the value picker modal is opened, and the keyboard is already closed, but keyboard.progress.get() value in:

https://github.com/Expensify/App/blob/b80c68ea76cdf825d9331bbf298cc41b40716037/src/components/KeyboardAvoidingView/index.android.tsx#L96
is reverted to 1 finally, so it is considering that the keyboard is still opening. As a result, the blank space is added because of KeyboardAvoidingView.
What changes do you think we should make in order to solve the problem?

We should correct this logic:

    // Initialize shared values with stable defaults
    const height = useSharedValue(0);
    const heightWhenOpened = useSharedValue(0);
    const progress = useSharedValue(0);
    const isClosed = useSharedValue(true);

    // Synchronize shared values after the component mounts
    useEffect(() => {
        height.set(-reanimated.height.get()); // Ensure stable initialization
        heightWhenOpened.set(-reanimated.height.get());
        progress.set(reanimated.progress.get());
        isClosed.set(reanimated.progress.get() === 0);
    }, []); // Only run once

What alternative solutions did you explore? (Optional)

We can remove the above useEffect since the share values are automatically updated via useKeyboardHandler.

Thanks for the proposal everyone.
I could not reproduce the issue. Am I missing any step required for reproduing the issue?
https://github.com/user-attachments/assets/a536146c-4fce-4a70-9dd2-adc2fa38c29d

@sobitneupane I am still able to reproduce this issue on the latest main branch. Could you try running npm install?
https://github.com/user-attachments/assets/db9cdd77-b82c-463d-ba88-cb18b25f8c40

@huult  I could not reproduce the issue. Am I missing any step?
https://github.com/user-attachments/assets/4e1915b8-8d9b-428e-bde0-931622f75412

I am using pixel_3a
https://github.com/user-attachments/assets/5d68d5ae-fc0a-49e7-8508-eadad232bc59

Thanks for the proposal, everyone.
The proposal from @truph01 looks good to me.
@truph01, the code block you discussed was introduced in this PR. Could you ensure that your changes won’t reintroduce the issue that this PR resolved?
@kirillzyusko, since you authored this PR, could you please take a quick glance at this proposal when you have a moment?

Don't read or modify the value of a shared value during a component's render. Access to value property or calling get/set methods is a side-effect. Triggering side-effects during render violates the Rules of React. All reads from and writes to a shared value should happen in relevant callbacks which aren't executed during render, i.e. in useAnimatedStyle or useEffect hooks.

@truph01 this code:
 const [initialHeight] = useState(() => -reanimated.height.get());
 const [initialProgress] = useState(() => reanimated.progress.get());

Is a correct one, because we read shared value only once on component mount and it's allowed to do that.
The original bug/problem comes from the fact, that useKeyboardHandler is attaching handlers asynchronously (it's attaching it on UI thread) and there could be a situation, when we start to mount a handler while keyboard is visible, then keyboard gets closed and we couldn't register a handler yet. In this case we'll have a bug that described in the issue - we see a keyboard space even if keyboard is already closed.
@sobitneupane I like the solution from @huult more - we don't need to wrap a view in KeyboardAvoidingView if a keyboard will never appear there.
I understand that all proposed solutions are fixing a consequence, not a root problem. A better solution would be to create a way, where useKeyboardHandler don't miss keyboard events while worklet handler is not attached, but I didn't find a way to achieve this 😔

I added an https://github.com/Expensify/App/issues/53327#issuecomment-2513528372 that will use Keyboard.addListener('keyboardDidHide', ...) as a fallback listener beside useKeyboardHandler

I don't think it's safe to use JS handlers along with worklet handlers. JS events can arrive later than worklet handlers and for me it will look like potential place for race conditions 🤷♂
For example in your code, keyboard can be closed, then opened again, but JS can be busy and will not be able to process keyboardDidHide in time, so worklet will update a state when keyboard opened, then we'll handle keyboardDidHide and will set shared values to 0, but the keyboard will be shown (but UI will show a state for a closed keyboard) 🤷♂

@kirillzyusko Thanks for your feedback

Thanks, @kirillzyusko
Proposal from @huult looks good to me.
🎀 👀 🎀 C+ reviewed

I'm OOO Dec 16-20, adding a leave buddy
summary:

PR is in progress

Payment summary:

Contributor: $250 @huult for PR work (via Upwork)
Reviewer: $250 @sobitneupane for review and testing (via New Expensify)

@sobitneupane do you mind confirming that we didn't have a regression (and complete the BZ checklist) before I issue payments?


saveDatabase() not working

Hi,
I'm trying to see how many data I can store with loki using LokiIndexedAdapter. So, I did this test:
// get data from url
function getData (file, callback) {
    var request = new XMLHttpRequest();
    request.overrideMimeType("application/json");
    request.open("GET", file, true);
    request.onreadystatechange = function() {
        if (request.readyState === 4 && request.status == "200") {
            callback(request.responseText);
        }
    }
    request.send(null);
}

var db = new loki('testDB', {
          verbose: true,
          autoload: true,
          autoloadCallback: dbLoaded,
          autosave: true,
          autosaveInterval: 600000,
          persistenceMethod: 'adapter',
          adapter: new LokiIndexedAdapter('appAdapter')
        });

function dbLoaded() {

    console.log(db.getCollection('dummyData'));

    getData('https://silex-test-app.local/big-json-test-data/143407', function (responseText) {
        var data = JSON.parse(responseText);
        console.log(data); // Object {big_test_data: Array[143407]} (143407 objects)
        var c = db.addCollection('dummyData');
        c.insert(data.big_test_data);
        db.saveDatabase();
    });
}

I do not want to wait for autosave interval to pass to save data and I trigger the save right after I received the server data. The result is an error:
Uncaught Error: Error saving database
saveCallback    @   loki-indexed-adapter.js:147
(anonymous function)    @   loki-indexed-adapter.js:455

https://silex-test-app.local/big-json-test-data/143407 is a local endpoint I used to read a json file and get 143407 test objects to be stored in loki database. Each object has around 17 properties including a short description.
I manage to avoid the above error passing a function to saveDatabase method:
        db.saveDatabase(function() {console.log('database saved...';)});

but id doesn't save the database and the collection is null at page refresh.
I suspect it can not process so much data, so I reduced the received data from server. I was able to save the database this time, but but only ~50000 objects that I added in a test collection.
I used Chrome browser while I made this test.
I couldn't find any loki documentation related to browser limitations. Is there any?

You may want to open Chrome developer tools, click on 'Application', and under storage/indexeddb inspect to see if you have any other database/keys using up your indexeddb quota for the domain your page is served from.
If your database or adapter are in global scope you might also want to call your indexed adapter's 'getCatalogSummary' method within developer tools console to see estimated size of key.  Console diagnostic commands for indexed db adapter are summarized here.
Alternatively, you can log db.serialize().length to see how big the string is you are trying to save.
Another limit is that indexeddb is probably storing in Unicode which may double the size which it uses within your indexed db quota for your current domain.
So let me know what size we are talking about and we can determine if you are bumping up against a 5MB 'soft limit' or find out what limit you are encountering.

I can not find the app key in Chrome developer tools, I only have IndexedDB->LokiCatalog->LokiAKV with app, appkey and key(all empty).
I added your diagnostic line and used the other methods to get database size and serialized string length.
This are the results:
queryUsageAndQuota: we are using  65346402  of<PHONE_NUMBER> bytes
db.serialize().length: serialized string length: 234153360

catalog summary:
app : appAdapter
key : testDB
size : 60506243

So :

the index adapter reports you have a roughly 60mb key already in the database
Your serialized string which you are trying to save into the database is 234megs.
Chrome reports there is around 3.5 gigs left in temporary storage

If the 'testDB' entry is corrupt somehow and all fields are empty (yet it still takes up 60Megs?) then you can try deleting it using :
adapter.deleteDatabase('testDB');

IndexedDb is not only asynchronous but probably handled on different thread (not locking up ui) so if you leave the page while it was still saving it might leave corrupt (incomplete) record.  Maybe clear out the old (empty?) record and (now that you have your callback passed to saveDatabase you will be able to tell when it is done saving.  Not sure how long it would take to save 234 megs into an indexeddb key.
Its possible you are running into quota management api limit for temporary storage more info here.   Not all browsers support quota management api (yet?) so the adapter wasn't written for that but I believe storage is granted as 'temporary' by default.  Your queryUsageAndQuota results show max of 3.5 gigs, of which I believe each domain is allowed 20% of which would be around 680megs.
Also i'm wondering does the 3.5 gigs match your free disk space? If that is your limit because that is your free disk space you might try freeing up some space to see if chrome is less protective of indexeddb usage.

My app it's a single page app built with Polymer and I do not refresh the page too often. I'm trying to use loki to sync my the server data at some point and make it work offline.
I do not know how exactly those 3.5 gigs are calculated. I guess it's some percentage of my total free disk space, which is around 80gigs.
I cleared all indexedDb storage several times, deleted the database and the results are the same. Even the database save callback is fired, but no database is actually saved.
I tried do the same tests using PouchDB with indexedDB adapter and I could save all data without any issues. Also I have tried with twice as much data and still worked.
I do not think it's a indexedDB limit issue.

I will try over the next several days to work up a loki sandbox example to stress memory constraints by randomly generating objects.  To be as close as possible, was your 234meg serialized database the 50000 record test or more objects?
If you have latest lokijs, you might try reverting the Loki.prototype.serialize back to :
    Loki.prototype.serialize = function () {
      return JSON.stringify(this, this.serializeReplacer);
    };

...just to get rid of pretty printing whitespace.  Eventually that may be a constructor option.

234Mb serialized contained ~170000 objects. I was only able to save ~50000 (~60-65Mb).

Thanks, just to follow up I have tested various browsers and found out that on many (such as chrome and safari), JSON.stringify seems to break above 50megs or so.  Additionally the delay to stringify 50megs is pretty high to be practical for browser usage anyways.
Immediate advise is to keep single database under 50megs (db.serialize().length).  You should be able to put as many databases as indexeddb will store, just keep each under 50megs or so.
When i get time I will look into creating alternative 'reference' mode adapter which skips serialization and just persists the object itself.  I may need to rework the adapter interface to allow returning reference as well (to skip JSON.parse() delays or possible limitations).  That may be over next few weeks.
I have created in indexed db stress gist you can paste into the sandbox but lower the numObjects to around 5000 before running and increment by 1000 until it breaks to find the limit for your browser.

In case you are following, i have moved this discussion to #498 and will be updating findings and developments there.

Well I took a very circuitous route to get there but I believe I have fixed the problem.  You may or may not still need this solution but I will outline the fix and how you or others can avoid this limit.
So I believe Chrome treats indexeddb a bit differently than others in that it imposes a roughly 60meg limit on any single indexeddb document/row.  The whole database can be bigger but not a single document.
So I have added a 'paging' option to the new LokiPartitioningAdapter which will break up large collections into pages that will fit within those limits.  The default page size is 25megs which should be fine for Chrome.
I created a stress test loki sandbox gist if you want to try it out, or if you have your own test let me know your results.
As you can see in loki sandbox gist, the additional step you need to do is pass in your indexeddb adapter to construct a (wrapper) LokiPartitioningAdapter like :
var idbAdapter = new LokiIndexedAdapter('appAdapter');
var pa = new loki.LokiPartitioningAdapter(idbAdapter, { paging: true });

var db = new loki('sandbox.db', { adapter: pa });

Currently the LokiPartitioningAdapter does not have a way to delete a database so if your database shrinks it may leave lingering pages or partitions.   I will need to think how best to automate that cleanup, until then you might need to use indexed adapter to manually delete partitions/pages.

closing since i believe a fix is to use partitioning adapter with paging option enabled


Error message when entering local wallet password in Hot Wallet

I get an error message when I do the following steps when trying to set up my hot wallet:

Enter my private key
Select my account ending in @active
Click on Import Accounts
Enter my local wallet password

As soon as I enter my local wallet password, I get an error message.

This is the error message:
TypeError: Cannot read property 'includes' of undefined
at Object.render (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:1:62678)
at us (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:59850)
at ls (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:59645)
at fs (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:63322)
at Ks (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:78434)
at Qs (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:78811)
at Oa (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:85234)
at Ia (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:84614)
at wa (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:83635)
at $s (file:///Applications/Anchor-BETA.app/Contents/Resources/app.asar/dist/renderer.main.prod.js:91:82538)

I was able to reproduce, and have a fix setup for the next release. Once that release is out, this issue will be marked as resolved.


fix: wrong server build path in express template

Express server build is placed into the build directory in the root of the project, not to the server directory.

Opened different pull request for dev branch.


Remove Pharos::SSH::Manager in favor of simpler host.ssh accessor

A smaller slice of #642
In continuation with the singleton-modification in #749
Adds host.ssh which eliminates the need for the Pharos::SSH::Manager.

Most of the changes are just @ssh -> ssh or Pharos::SSH::Manager.instance.client_for(host) -> host.ssh and a whole bunch of spec adaptations.

There is a chance that some @ssh / SSH::Manager usages in master sneak in from merge, I'll check that first.

Seems ok and pharos up went through.


🐛 [BUG]: Nuxt3 Hydration attribute mismatch

Is there an existing issue for this?

[X] I have searched the existing issues and this is a new bug.

Current Behavior
https://vueflow.dev/examples/dnd.html
Setup a new project on Drag & Drop example caused warning:

Expected Behavior
No warning
Steps To Reproduce
setup new project

Relevant log output
// Nuxt

Debugger attached.
Nuxt 3.10.3 with Nitro 2.9.3

  ➜ Local:    http://localhost:3000/
  ➜ Network:  use --host to expose

Debugger attached.
[nuxt:tailwindcss] ℹ Using Tailwind CSS from ~/assets/css/tailwind.css
  ➜ DevTools: press Shift + Alt + D in the browser (v1.0.8)

[nuxt:tailwindcss] ℹ Tailwind Viewer: http://localhost:3000/_tailwind/
ℹ Vite client warmed up in 1330ms
ℹ Vite server warmed up in 1491ms
[nitro] ✔ Nuxt Nitro server built in 590 ms

// Chrome

[vite] connected.
client.ts:173
<Suspense> is an experimental feature and its API will likely change.
runtime-core.esm-bundler.js:1444
[Vue warn]: Hydration attribute mismatch on pattern#pattern-vue-flow-4
  - rendered on server: id="pattern-vue-flow-4"
  - expected on client: id="pattern-vue-flow-0"
  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.
  You should fix the source of the mismatch.
  at <Background size=2 gap=20 pattern-color="#BDBDBD" >
  at <DropzoneBackground style= {backgroundColor: 'transparent', transition: 'background-color 0.2s ease'} >
  at <VueFlow nodes= (0) [] onDragover=fn<onDragOver> onDragleave=fn<onDragLeave> >
  at <App key=3 >
  at <NuxtRoot>
runtime-core.esm-bundler.js:47

Anything else?
No response

Can you give me some info on your nuxt config?

// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  devtools: { enabled: true },
  modules: ["@nuxtjs/tailwindcss", "shadcn-nuxt"],
  shadcn: {
    /**
     * Prefix for all the imported component
     */
    prefix: "",
    /**
     * Directory that the component lives in.
     * @default "./components/ui"
     */
    componentDir: "./components/ui",
  },
});

Thanks, I'll investigate this issue :)

I can't reproduce this issue with the given steps, no hydration errors appear for me.
Could you provide a reproduction in the form of a repo or a sandbox?

Setup:
mkdir test
cd test
npx nuxi@latest init . --force
pnpm add @vue-flow/core
pnpm add @vue-flow/background

File structure:
.
├── README.md
├── app.vue
├── assets
│   └── main.css
├── components
│   ├── DropzoneBackground.vue
│   └── Sidebar.vue
├── composables
│   └── useDnD.js
├── nuxt.config.ts
├── package.json
├── pnpm-lock.yaml
├── public
│   └── favicon.ico
├── server
│   └── tsconfig.json
└── tsconfig.json

useDnD.js line 26:
export function useDragAndDrop() {

Remove all relative imports and use nuxt auto imports.
Add import "~/assets/main.css"; in app.vue
Change main.css .dndflow with height: 100vh;
Start with:
npx nuxi dev

A clear package.json
{
  "name": "nuxt-app",
  "private": true,
  "type": "module",
  "scripts": {
    "build": "nuxt build",
    "dev": "nuxt dev",
    "generate": "nuxt generate",
    "preview": "nuxt preview",
    "postinstall": "nuxt prepare"
  },
  "dependencies": {
    "@vue-flow/background": "^1.3.0",
    "@vue-flow/core": "^1.33.4",
    "nuxt": "^3.10.3",
    "vue": "^3.4.21",
    "vue-router": "^4.3.0"
  }
}

A minimal code to reproduce:
<script setup>
import { VueFlow } from "@vue-flow/core";
</script>

<template>
  <div style="height: 100vh; width: 100vw">
    <VueFlow> </VueFlow>
  </div>
</template>

<style>
/* import the necessary styles for Vue Flow to work */
@import<EMAIL_ADDRESS>
/* import the default theme, this is optional but generally recommended */
@import<EMAIL_ADDRESS></style>

Well... another symptom of bad API decisions I made early on 😆
This should be patched and resolved with the next release but a proper solution for this will be introduced in the next major update.

Fixed with 1.33.5


[stable/influxdb] Add service variables to influx

Passing service variables to configure LoadBalancer/Cluster IP

/ok-to-test

/lgtm


Support Union.from_json_object_key

Currently it is not possible to deserialise a JSON object into a hash with a union type key. This includes when each member of the union implements .from_json_object_key?
require "json"

struct A
  def self.from_json_object_key?(key : String)
    return new if key == "A"
  end
end

struct B
  def self.from_json_object_key?(key : String)
    return new if key == "B"
  end
end

alias Example = Hash(A | B, String)

Example.from_json %({"A": "foo", "B": "bar"})

In /usr/lib/crystal/json/from_json.cr:189:20

 189 | parsed_key = K.from_json_object_key?(key)
                      ^--------------------
Error: undefined method 'from_json_object_key?' for (A | B).class

When parsing into domain types that can be safely disambiguated, this can be a useful operation. A more specific parser is definitely more efficient, but the simplicity of this approach is valuable when that perf isn't required.
A (very rough) solution appear to be to define support for this on Union:
struct Union
  def self.from_json_object_key?(key : String)
    {% for t in T %}
      instance = {{t}}.from_json_object_key? key
      return instance unless instance.nil?
    {% end %}
    raise JSON::ParseException.new("Couldn't parse #{self} from #{key}", __LINE__, 0)
  end
end

Happy to pop this into a PR if of use, but opening here for discussion first.

This reminds me a bit of the discussion in #11110, although it's really a different topic I think.

Related: #10793
Union is not a module, so methods defined on Object.class should all be available in Union.class.


Drop maxAge

Similarly to #36, maxAge seems just one of the ways to keep the cache clean and its implementation affects all users.
I suggest dropping the option and letting the user provide an expiry-map (by the same author of max-age-cleaner) or quickl-lru if needed, which is pretty straight forward thanks to the cache option.
Also closes #27

It's provided for convenience as it's a common use-case. I don't really see the benefit of dropping it.

maxAge seems just one of the ways to keep the cache clean and its implementation affects all users.

Does it affect them in a negative way though?
I'm struggling to understand the motivation of this PR.

I'm struggling to understand the motivation of this PR.

the memory saving of not having to wrap all values in an object
module complexity
adding the extra module is almost as easy as as enabling this feature, if needed at all

the memory saving of not having to wrap all values in an object

I don't think this matters in real-world scenarios at all.

module complexity

It's like 5 lines in total.

adding the extra module is almost as easy as as enabling this feature, if needed at all

You then remove the "module complexity" and instead move it to be "docs complexity" and "user complexity".

How are the docs more complex? It just needs a and expiry-map next to the lru map mention.
It’s simply a “it doesn’t belong here” situation, just like quick-lru isn’t part of this module. Either way it’s not a big deal 🙂

It also complicates it if you want a custom cache that is not a Map. Then you need to manually implement maxAge yourself, or create a wrapper for your chosen data structure. I just feel that it's something many users would need, especially when using mem with HTTP requests, that it's worth having it built-in.

It also complicates it if you want a custom cache that is not a Map

That's the map implementations' fault. Outside of this module, I currently can't combine quick-lru and expiry-map for example.

I just feel that it's something many users would need

That's the reason then

Outside of this module, I currently can't combine quick-lru and expiry-map for example.

I'm happy to support passing in a custom map to quick-lru. Open an issue.


运行了半年的VPS被黑了，仅跑v2ray-_-|||

墙外一台VPS被运营商暂停服务，官方说是被黑用于ddos……，有相同遭遇的朋友么？

你正在使用哪个版本的 V2Ray？

2.7.1

你的使用场景是什么？比如使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频。

PC>VPS1>GFW>VPS2>Free

There has been a response to your ticket:

Hello

Thanks for getting back to us.

We take the time to analyze network activity as a whole while monitoring the cloud.  Overtime we've developed a special set of tools that allow us to very accurately identify activity that we believe is the result of a security vulnerability.  We can differentiate normal network traffic from what we are confident is flood-type traffic.

It is likely that the droplet was compromised and taken over, then used for malicious activity.  This was likely the result of a security breach.  Your droplet was some how taken over, and then used in a malicious way on the internet.

Before taking the droplet offline, we got a few alerts from our NOC:
2016-12-29 02:40:25 EST - [ NETWORK ALERT ] [ Droplet 2245**** - FLOODING ][ Bw 115.09 mb OUT | 0.00 mb IN ] [ pps 791.4k OUT | 374 IN ]
2016-12-29 02:35:06 EST - [ NETWORK ALERT ] [ Droplet 2245**** - FLOODING ][ Bw 106.47 mb OUT | 0.01 mb IN ] [ pps 732.3k OUT | 564 IN ]
2016-12-29 02:30:18 EST - [ NETWORK ALERT ] [ Droplet 2245**** - FLOODING ][ Bw 113.43 mb OUT | 0.01 mb IN ] [ pps 780.3k OUT | 491 IN ]
2016-12-29 02:25:06 EST - [ NETWORK ALERT ] [ Droplet 2245**** - FLOODING ][ Bw 109.58 mb OUT | 0.01 mb IN ] [ pps 753.6k OUT | 629 IN ]
2016-12-29 02:05:13 EST - [ NETWORK ALERT ] [ Droplet 2245**** - FLOODING ][ Bw 113.34 mb OUT | 0.01 mb IN ] [ pps 779.5k OUT | 490 IN ]

stage2
2016-12-29 01:38:40 EST - [ NETWORK ALERT ] [ Droplet 2245**** - FLOODING ][ Bw 118.12 mb OUT | 0.00 mb IN ]

We are confident that these were malicious flood attacks, a result of a security breach.  We've got a good deal of experience with these, and do see them regularly as we work to ensure the safety of the cloud on a regular basis.

Were you able to investigate (through the earlier provided direct console link) and determine the possible source or reasons behind this compromise?

We can only see external info about your droplet such as bandwidth usage from our switch reports; we do not have any access on the internal workings of it, that's why we ask you to investigate.

It is important to do, so that it could be avoided in the future on new droplets.

Let us know what you think and we continue towards a resolution

Best Regards
DigitalOcean Trust & Safety Team

---
Please log-in to your DigitalOcean Control Panel to view your reply: https://cloud.digitalocean.com/support/***

DO稳定运行三个月，没有一点问题
奇怪的是DO默认用SSH证书登录的啊，禁止密码登录，关闭常见被黑端口，没这么容易被黑的，是不是根本没设防火墙

@v2ray 没用key，平时是用帐号+密码ssh，除了更新版本从不登录，登录也是手上其他的VPS跳板
centos 6 开 iptables 除了ssh与业务端口 其他全关，苦恼中……

@v2ray 刚刚支持团队要走了进程截图，说是去分析下……

配置文件？如果用的是 mKCP，会有一定机率被认为是 DoS 攻击。你可以举证说流量都指向你自己的国内机器，并没有对其它人造成影响。

确实是mKCP。国内的服务器都是部署在阿里云上，上次有台被警告说是被黑用于DDOS，我左检查右检查，一点异常都没有，后来电话客服解释了好久……

可能是 bug -_-!!! 另外服务商对 UDP 的限速不精确

晕死，确认是误报，解释了半天终于解封了。
There has been a response to your ticket:

Hi there,

We've enabled networking and your droplet should be online in a moment.

Please inspect your applications, as there's no legitimate reason any of them should be sending malformed UDP packets to anyone.

Please note that reoccurances of this traffic can result in your Droplet being suspended again.

Regards,

Trust & Safety
Digital Ocean Support

大家有没有什么好的建议能够避免这样的问题再现？
http 或 tls 用过的朋友说下效果比起 mKCP 来怎么样？

@BenhoNNNN 才100m 就判定 DDOS，有种太小心眼的感觉。
我给个参考吧，不知道有没有用。mKCP 我折腾了好久，然后时不时会来个测速，本地带宽号称 100M（深夜才有这速度），测速时 VPS 的上传基本都会有 100M，至今没出过问题，也许是我开启了 srtp 伪装的原因。如果你还想稳妥一点可以开启拥塞控制，但我不知道效果怎样。
你说的 http 应该是 http 伪装吧，我这里用不用没发现有太大差别，效果应该与 ssr 的混淆差不多的，对于某些地区可能比较有用（我也不知道某些是哪些）。
tls 个人感觉快一些（不知道是不是心里安慰），但有个问题是一开始握手时间会长一些。
我个人认为如果使用 tcp 速度不是很差 kcp 没有非常巨大优势不建议使用 kcp，这两个不是一样的。这几个月的持续测试，可以大概总结为 tcp 耐力好，kcp 爆发力强。当然你也可以配置路由在不同场景使用不同协议(tcp、kcp)

@ToutyRater 听你的建议给 KCP 加了个伪装，虽然可能并没有什么卵用

@ToutyRater 确实感觉很不“友好”…… 另外我也隔断时间就测试各种配置与组合，就我目前的网络环境长久测试下来，还是srtp伪装带宽跑得最满。

为 tcp 耐力好，kcp 爆发力强

太形象了哈。


Add correct prefix to anchor element in Providers view when provider doesn't have products

When provider doesn't have Products the Provider's phone is displayed, but when user do click in it, is redirected to Gmail instead of Whatsapp / Phone app

Add the properly prefix to redirect the user to an Calls application

I checked and the problem here is that the provider has a phone number instead of an email in the b2b_email, there is nothing to do here.

@Israel-Laguan Maybe validate the email format in the backend to avoid providers sending other things instead of an email, but that can be added later on


User Work Flow

A summary of the steps the data explorer may expect to take to get to an interactive visualisation with sliders

closed by #2


wdl4s getInputFiles causes null pointer exception

Bug Report
Dockstore is not able to launch the HCA workflow using launch --entry, launch --local-entry still works.  This appears to be due to https://github.com/ga4gh/dockstore/blob/1.4.3/dockstore-client/src/main/java/io/github/collaboratory/wdl/WDLClient.java#L152 causing a null pointer exception.  This should be investigated further.
Test was done using the master branch of the workflow.
Problem is actually with the checker workflow, not the workflow itself
Workflow Path: /test/smartseq2_single_sample/pr/test_smartseq2_single_sample_PR.wdl
Test File Path: /test/smartseq2_single_sample/pr/dockstore_test_inputs.json

Expected behaviour
Dockstore should be able to launch the workflows with imports within imported files (like the HCA workflow).
Actual behaviour
Dockstore gets to https://github.com/ga4gh/dockstore/blob/1.4.3/dockstore-client/src/main/java/io/github/collaboratory/wdl/WDLClient.java#L152, all the files are downloaded to the tmp location and arranged properly but that line causes and error preventing launch from going further.   Note: dockstore can launch --local-entry in that temporary location just fine.

Pending investigation of #1549
I was unable to launch on develop, also noticed the linked issue.

The reason for this is that we are not actually downloading and provisioning any imports after the first level of imports. (See resolveImportsForDescriptor() in the WDLClient.java)

Hmmm,
reminds me of https://github.com/ga4gh/dockstore/commit/28e148176e810d8b6f1243c0f420ef11d838e5bc#diff-b488be7f020c4443b9e24ee31d934d6c

Dockstore Staging
DockstoreAPI - 1.5.0-alpha.8
DockstoreUI - 2.2.0-alpha.6
Works:
dockstore workflow convert entry2json --entry github.com/garyluu/skylab:master > Dockstore.json
wget --header='Accept: text/plain' https://staging.dockstore.org:443/api/api/ga4gh/v2/tools/%23workflow%2Fgithub.com%2Fgaryluu%2Fskylab/versions/master/PLAIN_WDL/tests -O Dockstore.json
dockstore workflow launch --entry github.com/garyluu/skylab:master --json Dockstore.json
dockstore checker launch --entry github.com/garyluu/skylab:master --json checkparam.json
dockstore workflow convert entry2json --entry github.com/garyluu/skylab/_wdl_checker > Dockstore.json


country code for kosovo is added

it appears that library does not have support for iso3code for Kosovo, and since the class is marked final it can not be extended to add the data manually

https://en.wikipedia.org/wiki/Kosovo still considers Kosovo to be disputed and there is no official code in the standard, only a user assigned one.
https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 states

The code XK is being used by the European Commission, the IMF, and SWIFT, CLDR and other organizations as a temporary country code for Kosovo.

So I'm reluctant to add it, since it is not yet part of the official standard.

I understand, what do you think about not making the class final, so it can be extended if someone wants to add some "disputed" countries or ect

I see no reason to remove the final. While you cannot extend it, you can still wrap it. The difference is minor, if not nihil.

Thats what I already did was just a suggestion, thanks and I will mark this resolved.


Sectioning was misspelled.

I recommend the Code Spell Checker extension.

Thank you.
I spotted the misspelling while working on the v2, and it's fixed here.
There is more to change to fix it:

.scss include file
@import in the library
Comments in the code

While it's not good-looking 😬... I will keep it as is in the v1 as it's a breaking change.
If we merge this fix, users who import SCSS files from Pico or those who have overridden CSS vars will have to edit their code. This change must be made in a major version, which is already the case in v2 (soon).


could softmax_cross_entropy_with_logits's  label  has many 1.

Please go to Stack Overflow for help and support:
https://stackoverflow.com/questions/tagged/tensorflow
If you open a GitHub issue, here is our policy:

It must be a bug or a feature request.
The form below must be filled out.
It shouldn't be a TensorBoard issue. Those go here.

Here's why we have that policy: TensorFlow developers respond to issues. We want to focus on work that benefits the whole community, e.g., fixing bugs and adding features. Support only helps individuals. GitHub also notifies thousands of people when issues are filed. We want them to see you communicating an interesting problem, rather than being redirected to Stack Overflow.

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
OS Platform and Distribution (e.g., Linux Ubuntu 16.04):Mac 10.13.1
TensorFlow installed from (source or binary):pip
TensorFlow version (use command below):v1.3.0-rc1-2456-g7abd587 1.4.0-dev20170922
Python version: 3.6.1
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:
Exact command to reproduce:

You can collect some of this information using our environment capture script:
https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh
You can obtain the TensorFlow version with
python -c "import tensorflow as tf; print(tf.GIT_VERSION, tf.VERSION)"
Describe the problem
Describe the problem clearly here. Be sure to convey here why it's a bug in TensorFlow or a feature request.
import numpy as np
import tensorflow as tf

a = np.array([0.0, 1.0, 0.0, 0.0, 0.0, 0.0])
# b = np.array([0.0, 1.0, 0.0, 0.0, 0.0, 0.0])
b = np.array([0.0, 1.0, 1.0, 0.0, 1.0, 0.0])
sess = tf.Session()
print(str(sess.run(tf.nn.softmax_cross_entropy_with_logits(labels=b, logits=a))))

I think it maybe should throw a warn. Because the softmax_cross_entropy_with_logits's labels should not accept the label which has many 1.
If we should fix it. could you let me try to fix it ?I want to try, thanks.
Source code / logs
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem.

I think in most cases only one class is expected for classification problem, however multiple labels are valid for label problem. Hence it's not bug for me.

@facaiy  but it should't be np.array([0.0, 1.0, 1.0, 0.0, 1.0, 0.0]) . When we need express multiple labels. the b is np.array([0.0, 0.3333333333333333, 0.3333333333333333, 0.0, 0.3333333333333333, 0.0])?

I mean that multiple ones can exits in label, not logit. However, I agree that softmax is designed for classification problem. As for multiple labels, people prefer to using sigmoid, https://stats.stackexchange.com/questions/207794/what-loss-function-for-multi-class-multi-label-classification-tasks-in-neural-n
Hence your proposal sounds reasonable for me: precheck label and throw a warning that multiple ones exist.

Oh, I checked the API of tf.nn.softmax_cross_entropy_with_logits.

NOTE: While the classes are mutually exclusive, their probabilities need not be. All that is required is that each row of labels is a valid probability distribution. If they are not, the computation of the gradient will be incorrect.
If using exclusive labels (wherein one and only one class is true at a time), see sparse_softmax_cross_entropy_with_logits.

In all,

 tf.nn.softmax_cross_entropy_with_logits： label must be valid probability distribution;
 tf.nn.sparse_softmax_cross_entropy_with_logits: label must be class id.

Hence, if necessary, we should check that label must be nonnegative and their sum equals one.
import numpy as np
import tensorflow as tf

logits = np.array([[0.0, 1.0, 0.0, 0.0, 0.0, 0.0]])
labels = np.array([[0.0, 1.0, 1.0, 0.0, 1.0, 0.0]])    # invalid
loss = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
with tf.Session() as sess:
    print(sess.run(loss))
    # [ 5.13077533]

This issue is mentioned in a TODO here.
/CC @ebrevdo what do you think of this proposal? I don't think we can cause an error due to backwards compatibility, and we typically do not print warnings due to incorrect arguments. Also there would be a performance cost.

The documentation clearly states that the input should be a probability distribution.  It seems fine to add the check for the CPU version, without worrying about backwards compatibility guarantees (though we'd want to run internal tests before accepting the change).  However, on the GPU this check is sufficiently expensive that we can't implement it without a lot of trickery and, probably, some slowdown.  So my suggestion is:
Add the check for the CPU impl, run all unit tests; then we run all internal unit tests and see if there are basic models that rely on broken behavior.

(the check should raise errors::InvalidArgument if the input is not sufficiently close to a probability distribution.  probably you can't check exact, but you can check the sum is w/in e.g. 10* std::numeric_limits::epsilon() of 1.

Hi, @ebrevdo . I checked the implementation of SoftmaxCrossEntropyWithLogits: kernel functions in xent_op seems totally shared by both CPU and GPU. So I'm afraid that only checking in CPU impl is impossible.
Is it good to check in python side, for example, using  tf.reduce_sum?  Take account of performance, perhaps we'd better make it optional.

The cpu kernel can run if (std::is_same<Device, CPUDevice>::value) { <perform check> }.
On Mon, Dec 4, 2017 at 8:37 PM, Yan Facai (颜发才<EMAIL_ADDRESS>wrote:

Hi, @ebrevdo https://github.com/ebrevdo . I checked the implementation
of SoftmaxCrossEntropyWithLogits: kernel functions in xent_op seems
totally shared by both CPU and GPU. So I'm afraid that only checking in CPU
impl is impossible.
Is it good to check in python side, for example, using tf.reduce_sum?
Take account of performance, perhaps we'd better make it optional.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/issues/15079#issuecomment-349193079,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABtim9CIO5enuzQ3RkpMlAb1AATlTWKnks5s9Mh9gaJpZM4Qzwxp
.

Thanks, @ebrevdo .
Hi, @bringtree, contributions are welcome.

Could I add a arg to judge to open label's check?（Default:close the check） I think maybe some users don't want to check the sum. @ebrevdo

and I find it maybe will have a problem in tf.nn.sampled_softmax_loss.  The tf.nn.sampled_softmax_loss 's labels sum maybe will not be 1(I guess). @facaiy

I guess maybe it will have a problem when we use the tf.nn.sampled_softmax_loss.
I can't be sure that  tf.nn.sampled_softmax_loss will choose the labels can be add up to 1 in future.
Though tf.nn.sampled_softmax_loss often is used to the word2vec, and In word2vec the tf.nn.sampled_softmax_loss's label sum will be 1.

Sorry, I don't know how to correct it. Could you help me to correct it?  I want to know how you modify the codes?@facaiy
math_ops.equal(math_ops.reduce_sum.reducesum(labels),constant_op.constant(1.0,dtype=precise_logits.dtype))

@bringtree You can refer to my PR #15245 and BinaryGradCommon method in cc/gradients/math_grad.cc. Moreover, C++ API | TensorFlow might be useful for you.

Closing as this is resolved


Choose to steal focus

Add a stealFocus setting
Read this setting when starting the build, to steal, or not, the focus.

Do not steal focus enable to continue coding when building the project.
More code, more fun ! :tada:

Cool. Would you mind adding a test for this as well?

Sorry, but I'm not sure to have the time for now. :hourglass_flowing_sand:

I've created some tests and updated this in PR #81. Thanks for this! It will be included in the next release (v0.35.0).


is there a vue way of React.createElement (How to pass vue element to child component through props)?

I know this is weird.
In react, I can create an element using
var ele = React.createElement(...);

then I can pass it to a child component through props
<Child myElement={ele} />

In vue, we often use slot to pass content into a child component from outside. But I still want to know if there is a way to pass element to child like I did in react. Thanks!

There's no such equivalency - basically you have to use slots. It would be better if you also explain what use case you have for it.Also, this question is better posted on the forums.

@yyx990803 Sorry about that... I have move it to the forums and added a user case.
http://forum.vuejs.org/topic/1752/how-to-pass-vue-element-to-child-component-through-props


Use multiple marked strings for hover content

Also moved them module name below function signatures.
Fixes #4594
Fixes #3813
cc #3813
cc #4559

@Veetaha @kjeremy I think this resolves the issues with the hover tooltip. The migration to multiple marked strings also allows greater flexibility for adding additional content without messing around with string concatenation. VSCode automatically renders a thin line between the content sections, adding a natural separation.

I don't think this is quite the right change. Only the rust-analyzer crate should know about LSP types. Also MarkedString is deprecated in the LSP and MarkupContent should be returned instead. See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_hover

https://github.com/microsoft/language-server-protocol/issues/518

Thanks for that link. If the horizontal rule doesn't work maybe we should
file a bug with vscode-languageclient.
I'll look into this in more detail tomorrow when I'm off mobile.
On Mon, May 25, 2020, 9:47 PM aloucks<EMAIL_ADDRESS>wrote:

microsoft/language-server-protocol#518
https://github.com/microsoft/language-server-protocol/issues/518
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rust-analyzer/rust-analyzer/pull/4615#issuecomment-633766634,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABBACRCXZPY7DLHDRWCMG2DRTMNUZANCNFSM4NJXR3XQ
.

The "---" or "___" trick doesn't work well when there is a code block below it. It doesn't set the vertical spacing correctly and the regions are jammed together. The only way to have the spacing look right is with the multiple marked strings, as far as I can tell.
In any case, after messing around with this, I definitely don't think there should be a double newline between the sections even if the line separator doesn't work out in the near term. The double newline looked really weird in most cases.
If this PR isn't satisfactory, can we revert the original one that caused the issue? The non-monospaced module path is quite unsightly.

Yeah, kjeremy  is right, we must keep ra_ide free of lsp types. Though, something we might want to do is to add a struct Markdown(String) type to get more type clarity. I also agree that MarkupContent is a way to go, and, if it doesn't work as we want it to, we should pester upstream until they fix it :D
I've merged the alternative PR


[FEATURE] Supporting RTL in the design

I'm always frustrated when I try to use this template's pages as RTL with languages like Arabic.
I think you have to support it the next versions.

It will be available, if adminlte is upgraded to Bootstrap 5.

is it supported now ?

@Grand-Community No, this package just integrates version 3.2 of AdminLTE into Laravel. Versions 4.x of AdminLTE will support RTL, but it's currently on development and was made from scratch, so a lot of effort will be required to integrate it here, including losing some of the features existing on v3.2, like the IFrame mode.


Time of starting app

Hello,
Is it possible to improve the time of starting application?
It takes about 5-10 seconds, when app was builded

I have the same issue, why does this happen ?

If you add a splash screen you can see that Electron and Node.js behind it is very fast. The problem in the background is .NET Core. The starting process is usually slow. In the current 3.1 version, it has become even faster with the PublishReadyToRun option.
In the current Electron.NET version 8.31.1 - We used here .NET Core 3.1 and I activate the PublishReadyToRun option per default.. so we incease the startup time for ~25-36%.
Corresponding 2-4 seconds faster with some of hello world samples, that I tested.
Is not perfect yet but I hope you are happy :)


Mastodon API

Toot

[x] Create
[ ] Delete
[ ] Quote
[ ] Reply
[ ] Fav
[ ] UnFav
[ ] Boost
[ ] UnBoost
[ ] Bookmark
[ ] UnBookmark
[ ] Poll vote

User

[ ] Follow
[ ] UnFollow
[ ] Block
[ ] UnBlock
[ ] Mute
[ ] UnMute
[ ] User search
[ ] Toots

Timeline

[ ] Public
[ ] Public: Local
[ ] Home
[ ] List

Other

[x] Auth
[ ] Notifications
[ ] Upload media
[x] Announcements

Misskeyと平行してやるのはつらいのでこっちを先に一通り実装する
(Misskeyのレスポンスを調べるのに時間がかかるので……)

https://github.com/mattn/go-mastodon/blob/master/streaming_ws.go


run tests with github actions

Proposed changes
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request.
If it fixes a bug or resolves a feature request, be sure to link to that issue.
Checklist

[ ] Checkstyle and unit tests are passed locally with my changes by running gradlew check chrome_headless firefox_headless command
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] I have added necessary documentation (if appropriate)

will be replaced by https://github.com/BorisOsipov/selenide/pull/3/


Can you provide your pytorch, cuda and gpu version?

I ran into this problem when running python train_removal.py
/opt/conda/conda-bld/pytorch_1676880686002/work/aten/src/ATen/native/cuda/ScatterGatherKernel.cu:144: operator(): block: [169,0,0], thread: [63,0,0] Assertion `idx_dim >= 0 && idx_dim < index_size && "index out of bounds"` failed.
  0%|                                                                                | 0/67 [00:01<?, ?it/s]
Traceback (most recent call last):
  File "/home/zk/Code/Python/ShadocNet/train_removal.py", line 142, in <module>
    main()
  File "/home/zk/Code/Python/ShadocNet/train_removal.py", line 109, in main
    out, loss = remove(inp, gt_mas, mas, foremas, tar)
  File "/home/zk/.conda/envs/dl/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
    return forward_call(*args, **kwargs)
  File "/home/zk/Code/Python/ShadocNet/model/removal/ss_curve.py", line 107, in forward
    f_features, b_features = self.encode_forward(inp, mas, foremas)
  File "/home/zk/Code/Python/ShadocNet/model/removal/ss_curve.py", line 89, in encode_forward
    fg_encode = self.multimae.forward(
  File "/home/zk/Code/Python/ShadocNet/model/removal/mae.py", line 394, in forward
    input_tokens = torch.gather(input_tokens, dim=1,
RuntimeError: CUDA error: device-side assert triggered
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

Have you ever encountered this problem？Is this a code error？
Or it‘s a bug related to pytorch version.facebookresearch/detectron2#2837

Refer to https://github.com/pytorch/pytorch/issues/55027#issuecomment-1047300602，it may not be pytorch’s problem. Maybe I'm running the code the wrong way.
After adjust the dataset path, I run python train_detect.py, it runs well, then I run python train_removal.py, the error happened

Refer to pytorch/pytorch#55027 (comment), it may not be pytorch’s problem. Maybe I'm running the code the wrong way. After adjust the dataset path, I run python train_detect.py, it runs well, then I run python train_removal.py, the error happened.

Please tell me how to run it correctly.

Hi, this is not a PyTorch or CUDA issue. I encountered a similar problem in the past, where the shadow detection module failed to detect the shadow mask, resulting in errors due to the tokens being related to the shadow region. To address this, you could try fine-tuning the existing shadow detector, adjusting its parameters, or building a new one. Once the shadow detection module is functioning properly, the issue should be resolved.

Hi, this is not a PyTorch or CUDA issue. I encountered a similar problem in the past, where the shadow detection module failed to detect the shadow mask, resulting in errors due to the tokens being related to the shadow region. To address this, you could try fine-tuning the existing shadow detector, adjusting its parameters, or building a new one. Once the shadow detection module is functioning properly, the issue should be resolved.

Thanks for your reply.I had retrained several detector on Jung or Kligler, but still get that error. Can provide me with a pre-training detector?

Hi, this is not a PyTorch or CUDA issue. I encountered a similar problem in the past, where the shadow detection module failed to detect the shadow mask, resulting in errors due to the tokens being related to the shadow region. To address this, you could try fine-tuning the existing shadow detector, adjusting its parameters, or building a new one. Once the shadow detection module is functioning properly, the issue should be resolved.

Thanks for your reply.I had retrained several detector on Jung or Kligler, but still get that error. Can provide me with a pre-training detector?

Sure, I will notify you once I upload the weights.

Refer to pytorch/pytorch#55027 (comment), it may not be pytorch’s problem. And I downgrade my torch from 2.0 to 1.13, the error still happened.
Maybe I'm running the code the wrong way. This is the way I run the code:

adjust the dataset path in config/config.py
make yml config
run python train_detect.py, it runs well
run python test_detect.py, it runs well
run python train_removal.py, the error happened

Please tell me how to run it correctly.

Hi, I have refactored the code and it is now functional for single GPU training. I have tested it on my personal machine and have confirmed its efficacy. However, there still seems to be an issue with multi-GPU training. I will inform you as soon as the issue is resolved.

Also, if you find it difficult to train the detection module, we recommend trying our shadow generation technique to produce pseudo-shadow document images for training. This technique can greatly improve performance.


Facing Access is denied issues when we host application.

I am facing Access is denied issues(below is the total issue summary)  when we host application but in local everything working as expected
Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

Can you try this?


Stop using client-side validation javascript code

To avoid discrepancies between the client-side and server-side validation, we should get rid of the client-side validation using javascript. Instead, we should simply send a request upon password field modification to validate the current input against the server. The view handling the request would return the warnings and feedback. Client-side HTML page would only display the progress bar.
This would also allow validation against custom dictionaries on the client side, not only server one.
See https://github.com/pawamoy/django-zxcvbn-password/pull/95#issuecomment-566068735

Will likely not work on this project anymore.


Solution for starting without errors after installation

Hi, everybody
I have been trying to run this plugin for a long time after installing it on Nextcloud 26, but it constantly gave errors. The instructions from the author did not help in any way.
I solved this by what is needed in the settings:
http://localhost:26/settings/admin/shifts (localhost:26 is your Web-Adress)
change the value in the "Name of the Analyst Group" field from "Analyst" to "analyst" (the first letter should be small instead of large).
I spent a long time on the solution, maybe it will help someone.

that was in version 1.8.6

I think the group-id is always lowercase. The value for "Name of the Analyst Group" must exactly match the corresponding group-id. I'll add an additional hint for that field in the future.

Hello
I have the issue that this addon does not work after installation.
I have this error in the admin panel for the shifts : Could not fetch Settings
Nextcloud 27 and latest shiftplan version

Done juste did it with a fresh installation.
Do you want me do do another ticket on my current production install which does not display the administration part for shifts ?

Hi @leorthur
thank you, no that's ok. I answered you in the new issue.


FitbitWeight app gives OAuth error when authenticating

Clicking "Connect" in the FitbitWeight app produces the following prompt:

The app you're trying to connect did not provide valid information to Fitbit. Please report this issue to them.
Developer information: invalid_request - Invalid redirect_uri parameter value

I abandoned this app because I ran into an issue where the Tidbyt folks said they would need to address an issue on their end with OAuth 2.0.
Last time I checked they said it wasn't something they had planned to address.
This was their note at the time:
I was actually completely unaware of this section in the spec:
The authorization server MAY issue a new refresh token, in which case the client MUST discard the old refresh token and replace it with the new refresh token.

https://datatracker.ietf.org/doc/html/rfc6749#section-6


mswin builds started failing due to libclang differences

Problem
Builds that were previously working on rb-sys are now failing. The builds were working as of 2022-11-18, and as of today (11-30-2022) they are failing.
It seems like a libclang resolution issue. The error I get looks like:
Using bindgen with clang args: ["-ID:/ruby-mswin/include/ruby-3.2.0+3", "-ID:/ruby-mswin/include/ruby-3.2.0+3/x64-mswin64_140", "-fms-extensions", "-D_WIN32_WINNT=0x0600"]
  C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\x64\lib\clang\15.0.1\include\emmintrin.h:2108:10: error: invalid conversion between vector type '__m128i' (vector of 2 'long long' values) and integer type 'int' of different size

At one point, I had to configure the LIBCLANG_PATH with gcm to make things work. But this code has been disabled for awhile now and things worked properly. Maybe I should try adding this back?
    - name: Set LIBCLANG_PATH
      if: contains('mswin', steps.set-outputs.outputs.ruby-platform)
      shell: pwsh
      working-directory: ${{ inputs.working-directory }}
      run: |
        echo "LIBCLANG_PATH=$((gcm clang).source -replace "clang.exe")" >> $env:GITHUB_ENV

I'm wondering if any you know of any recent changes in the mswin Ruby image that may be causing this? Otherwise, this may be a github actions runner thing. Thanks in advance! ❤

Interesting.  The last passing CI was using the Windows-2022 20221027.1 image, the first failing job was using 20221120.1.  That info is in the 'Set up job' step, within the 'Runner Image' group.   Rust changed from 1.64.0 to 1.65.0, and Visual Studio was also updated.
I don't believe there have been related changes to the repo that creates the vcpkg packages, this repo, or setup-ruby.
I did change the build scripts for mswin in ruby-loco, but I don't think there were any changes that affect the build, it was more to align the three builds (mingw, ucrt, & mswin) and allow them to share test scripts...
Re emmintrin.h, I've seen that filename before.  Not sure when/where...
I don't think I've tried to run rb-sys CI locally.  I wonder if a 3.1.x Ruby mswin build passes...

So it seems like msys2 may have updated clang, and now windows builds for rust are breaking. I've managed to downgrade to clang-14, but am stuck because ruby cannot find strings.h. Is there are standard way this access this file in GHA?
https://github.com/oxidize-rb/actions/issues/20

@ianks
Let me check tomorrow.  What happens if you install clang-15?

@ianks
Let me check tomorrow. What happens if you install clang-15?

Same issue. GHA runner has clang 15 installed by default so we shouldn't need it. What surprised me is rubygems CI builds seem to be working... Although I'm not 100% sure.

rubygems CI builds seem to be working... Although I'm not 100% sure.

They bypassed/skipped the Rust extension tests when this happened...  I did the same in ruby-loco.


Improve Project Structure

Summary
The current project folder structure in this repository has grown organically over the years and isn't ideal for new users. It should be re-organized.
Analysis

This needs to happen before branching off v3.0, as it will make merges pretty much impossible.
It will invalidate all previous repository links from the forum, since they don't use versioned links, but head links.

Using commit-links should prevent this in the future.

It will also screw up file history, since git usually stops tracking after a rename / move.

Investigate whether it would make sense to perform renames and move operations with git directly.
Potentially not though, as the git move seems to be a shortcut for a regular move with git add and git remove.

Probably still worth it, as a long-term investment.
Reduce top-level folders to a categorizing minimum.

Source: Contains the actual source code for all of Duality itself, as well as standard plugins.
Build: Contains build tool binaries, scripts and specs for building NuGet packages, Documentation, etc.
Tools: Containts source code for build tools, VS debugger integration, etc.
.github: GitHub-specific config files.
That's it? All else should be the regular and / or required top-level files.

Every top-level folder except "Build" should be self-contained, so deleting all others will leave them unaffected.
The "Source" folder should also be restructured internally:

Core (including primitives and tests)
Editor (including updater and tests)
Launcher
Plugins, Plugins/Tilemaps, Plugins/EditorModules, ...
Platform, Platform/Net45, ...
Samples, ...
Remove secondary solutions files and get back to the single "Duality.sln" one that contains everything. Make sure its internal folder structure matches the actual folder structure.

Update appveyor.yml, potentially scripts.
Update nightly build config file (relative paths).
Do a test-merge into release to see if AppVeyor can do a complete build.
Update Wiki pages with regard to source code links (Find / Replace All?)

Will the changes affect to my current projects?

Will the changes affect to my current projects?

No. Regular Duality projects using the binaries are not affected at all. However, if you forked Duality and made custom changes to the repository, there may be some merging to do.

This issue is on hold until Hacktoberfest is over to avoid screwing up people's branches and PRs.

Nice idea from a folder structure conventions article: Separate tests from program code. Top level folder structure would be:

Source: Contains the actual source code for all of Duality itself, as well as standard plugins.
Test: Contains all the tests, clearly separated from the actual code.
Build: Contains build tool binaries, scripts and specs for building NuGet packages, Documentation, etc.
Tools: Containts source code for build tools, VS debugger integration, etc.
.github: GitHub-specific config files.

The internal folder structure of the Test folder could mimic the one from Source.

Progress

Created a new project-structure-wip branch to work on this.
Introduced the project structure that was detailed above.
Fixed main solution file and projects
Fixed tools solution file and projects
Cleaned up and updated .gitignore
Fixed NuSpecs
Fixed NightlyBuild config
Fixed Sandcastle project file
Fixed appveyor.yml
Fixed build scripts
Fixed unit test project

Immediate ToDo

Evaluate the new structure and make sure it's better than before and worth merging.
Merge back to master
Merge to release
Fix appveyor.yml in the release branch.
Bump all package versions and do a full re-release of all packages. This serves the purpose of completely testing the new setup and also updating package icon URLs to match the new folder structure.

@ChatPion and @JerTH pointed out in the chat that it would make sense to move Samples out of Source and into the root folder.

It's more visible to newbies out there.
It's not actually part of what one would consider the engine / editor sources, not even official plugin sources.

One thing to consider is that moving it out, they would be the second kind of project (besides tests) where the solution file would "link upwards" in folder structure. Which isn't great, but maybe not that bad either.

Progress

Moved Samples from Source to root.
Moved Duality.sln to root to account for the fact that it now contains projects from two other folders than Source only. Also makes it more visible as a starting point for everyone who wants to compile Duality.
Fixed some more paths that were missed before.

Immediate ToDo

Evaluate the new structure and make sure it's good before merging.
Branch the wiki repo and fix all source links. (Search for /master/)
Merge back to master (both main and wiki)
Merge to release
Fix appveyor.yml in the release branch.
Bump all package versions and do a full re-release of all packages. This serves the purpose of completely testing the new setup and also updating package icon URLs to match the new folder structure.

Done


Add sokol_app callback before event queue is iterated (or add an input polling API)

For some third-party libraries (right now I'm just thinking about Nuklear) it would be useful to have a callback that is called before the event queue gets processed for the given frame.
E.g. for the win32 implementation:
_sapp_before_events();  // Adding this callback would be useful

MSG msg;
while (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE)) {
    if (WM_QUIT == msg.message) {
        done = true;
        continue;
    }
    else {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}
_sapp_frame();

The reason this would be useful is Nuklear requires you to call nk_input_begin before you call its input event hooks, and nk_input_end afterwards.
It is possible to get around this limitation by just calling nk_input_begin and nk_input_end inside your frame_cb implementation. But you then need to have a way to query the current state with an input polling API.
Other app frameworks (e.g. GLFW) support this input polling style, but sokol_app only supports an event-based push model. You can build your own state cache and implement a polling model on top of sokol_app, but that's more work.
Alternate Proposal
I'm not sure if that proposed callback is going to be possible for MacOS (and other app models that don't seem to require the app implementation to manually pump the event queue - I'm not 100% sure of these, it just looked this way while browsing the sokol_app source code).
If this isn't going to work, an alternate proposal would be to implement an input state cache and polling API to sokol_app.
E.g.
int is_c_pressed = sokol_key_is_pressed(SAPP_KEYCODE_C);
int is_ctrl_pressed = sokol_key_modifier_is_pressed(SAPP_MODIFIER_CTRL);
sokol_mouse_pos_t mouse_pos = sokol_mouse_current_pos();
sokol_mouse_scroll_t mouse_scroll = sokol_mouse_current_scroll();

Edit: Also would probably be useful to have just_pressed variants, since Nuklear seems to need them to work like that.
I don't think this would be very complicated, and I think it would be more likely to work on all app types.
The thing that would prevent it from working is you don't have enough hooks to properly clear state before each frame. It would also require the Sokol API to deal with problems like switching windows while holding a key down, then switching back.

Hi, there's another input-related request here: https://github.com/floooh/sokol/issues/283, it's not really closely related, but all in all it looks like the current sokol_app.h input model isn't flexible enough for different usage scenarios...
Some thoughts:

Such a the before-events callback would most likely be hard to implement on the web platform and probably also Mac, because there the input callbacks are dispatched outside our control, unlike Windows where the event dispatching happens inside our own code (in DispatchMessage), a workaround for web and Mac would be to call this callback from the event handler of the first input event in a frame.

instead of adding more callbacks I'd probably prefer to add new event types (e.g. SAPP_EVENTTYPE_BEGIN_INPUT, SAPP_EVENTTYPE_END_INPUT, and all regular input events would be sent within those two other event types. This would suffer from the same problems on web and Mac as described above

I implemented a similar "polled system" as you describe in your alternative proposal in the sokol_imgui.h header for mouse clicks and button presses. This was necessary because in ImGui it may happen that a button down/up happens within the same frame, such a button press would be completely invisible to ImGui. As a workaround I'm not directly forwarding button and key presses to ImGui, but instead only record down/up state in the event handler: https://github.com/floooh/sokol/blob/9b659b23ae04db3f967b69282468a3c2e2cf845d/util/sokol_imgui.h#L1322-L1324

...and then once per frame in the frame callback:
https://github.com/floooh/sokol/blob/9b659b23ae04db3f967b69282468a3c2e2cf845d/util/sokol_imgui.h#L1151-L1172
Maybe a similar idea makes sense for Nuklear too?

Yeah I am doing something quite similar for Nuklear already, though like you mentioned (same frame down and up events) there's a number of cases I haven't handled yet.
My thought was that maybe the common caching stuff could be extracted if there's multiple targets it would be useful for. It seems Oryol already has such an API.


How change ordering for catalog?

Say, I want use select to change ordering of ShopCatalogPlugin.
Now by default products order by 'order':
class Product(CMSPageReferenceMixin, ProductSaveSlugMixin, BaseProduct):
    ....
    order = models.PositiveIntegerField(db_index=True)

    class Meta:
        ordering = ('order',)
        ...

I need add select input to catalog page to change ordering of page. Now, I my solution is to override CMSPageProductListView. Since django shop 0.10.X we can use CMSPageCatalogWrapper and I changed it inheriting from them. Also I use own OrderedCMSPageProductListView which inherits from ProductListView:
from shop.search.views import CMSPageCatalogWrapper

class OrderedCMSPageProductListView(ProductListView):
    def get_queryset(self):
        allow_lookups = ('product_name', '-product_name',
                         'has_in_stock', '-has_in_stock')
        ordering = self.request.GET.get('ordering')
        ordering = (ordering, ) if ordering in allow_lookups else ('-has_in_stock', 'order')
        return super(OrderedCMSPageProductListView, self).get_queryset().order_by(*ordering).distinct()

class CustomCMSPageCatalogWrapper(CMSPageCatalogWrapper):
    @classmethod
    def as_view(cls, **initkwargs):
        for key in initkwargs:
            if not hasattr(cls, key):
                msg = "{0}() received an invalid keyword {1}. Method as_view() only " \
                      " accepts arguments that are already attributes of the class."
                raise TypeError(msg.format(cls.__name__, key))

        self = cls(**initkwargs)

        bases = (AddFilterContextMixin, AddSearchContextMixin, CMSPageSearchMixin, SearchView)
        attrs = dict(renderer_classes=self.renderer_classes, product_model=self.product_model,
                     limit_choices_to=self.limit_choices_to, filter_class=self.filter_class)
        self.search_view = type(str('CatalogSearchView'), bases, attrs).as_view(
            serializer_class=self.search_serializer_class,
        )

        bases = (AddFilterContextMixin, AddSearchContextMixin, OrderedCMSPageProductListView)
        attrs.update(filter_backends=self.filter_backends, cms_pages_fields=self.cms_pages_fields)
        self.list_view = type(str('CatalogListView'), bases, attrs).as_view(
            serializer_class=self.model_serializer_class,
        )

        return self

Note to bases = (AddFilterContextMixin, AddSearchContextMixin, OrderedCMSPageProductListView). This line contains custom OrderedCMSPageProductListView.
Is there better solution fo this tasks?
And maybe we need someting product_ordering.html which contains html tag select (angular select?). It will be good if ordering changes with angular without reload page as it do filters.
Anybody have some ideas?

I have found the solution from django-filter. It is OrderingFilter http://django-filter.readthedocs.io/en/develop/ref/filters.html#orderingfilter . We can use:
class CustomFilterSet(django_filters.FilterSet):
    ...
    o = django_filters.OrderingFilter(
        label='Сортировка',
        choices=(
            ('product_name', 'Product Name A - Z'),
            ('-product_name', 'Product Name Z - A'),
            ...
        ),
    )

It works for me very well.
I suggest to add information about ordering to django shop docs. Maybe we need rename section "Filter Products by its Attributes" to "Filter and Ordering of Products by its Attributes", i. e. adding "ordering" information at https://django-shop.readthedocs.io/en/latest/reference/filters.html. And if you agree with me I can add pull request.


Google Sheets Operator

[ ]  Storing information from Google Spreadsheet to GCS bucket
[ ]  Uploading information from CSV stored in GCS bucket into Spreadsheet

Orchestra already has such operator:
https://github.com/google/orchestra/blob/master/orchestra/google/gsuite/operators/gsuite_sheets_operator.py


HTTPie doesn't apply type checking to the top-level lists

Checklist

[x] I've searched for similar issues.
[x] I'm using the latest version of HTTPie.

Minimal reproduction code and steps
http httpbin.org/post '[1]=1' '[2]=2' x=5 --offline

Current result
POST /post HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 32
Content-Type: application/json
Host: httpbin.org
User-Agent: HTTPie/3.0.0

{
    "": [
        null,
        "1",
        "2"
    ],
    "x": "5"
}

Expected result
HTTPie Type Error: Can't perform 'key' based access on '' which has a type of 'array' but this operation requires a type of 'object'.

Debug output
Please re-run the command with --debug, then copy the entire command & output and paste both below:
$ http httpbin.org/post '[1]=1' '[2]=2' x=5 --offline --debug
HTTPie 3.0.0
Requests 2.22.0
Pygments 2.7.2
Python 3.8.5 (default, May 27 2021, 13:30:53)
[GCC 9.3.0]
/usr/bin/python3
Linux <IP_ADDRESS>-microsoft-standard-WSL2

<Environment {'as_silent': <function Environment.as_silent at 0x7ff7f371c550>,
 'colors': 256,
 'config': {'default_options': []},
 'config_dir': PosixPath('/home/ducaale/.httpie'),
 'devnull': <property object at 0x7ff7f3af47c0>,
 'is_windows': False,
 'log_error': <function Environment.log_error at 0x7ff7f371c5e0>,
 'program_name': 'http',
 'stderr': <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>,
 'stderr_isatty': True,
 'stdin': <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'>,
 'stdin_encoding': 'utf-8',
 'stdin_isatty': True,
 'stdout': <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>,
 'stdout_encoding': 'utf-8',
 'stdout_isatty': True}>

<PluginManager {'adapters': [],
 'auth': [<class 'httpie.plugins.builtin.BasicAuthPlugin'>,
          <class 'httpie.plugins.builtin.DigestAuthPlugin'>,
          <class 'httpie.plugins.builtin.BearerAuthPlugin'>],
 'converters': [],
 'formatters': [<class 'httpie.output.formatters.headers.HeadersFormatter'>,
                <class 'httpie.output.formatters.json.JSONFormatter'>,
                <class 'httpie.output.formatters.xml.XMLFormatter'>,
                <class 'httpie.output.formatters.colors.ColorFormatter'>]}>

>>> requests.request(**{'auth': None,
 'data': b'{"": [null, "1", "2"], "x": "5"}',
 'headers': <HTTPHeadersDict('User-Agent': b'HTTPie/3.0.0', 'Accept': b'application/json, */*;q=0.5', 'Content-Type': b'application/json')>,
 'method': 'post',
 'params': <generator object MultiValueOrderedDict.items at 0x7ff7f337c7b0>,
 'url': 'http://httpbin.org/post'})

POST /post HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 32
Content-Type: application/json
Host: httpbin.org
User-Agent: HTTPie/3.0.0

{
    "": [
        null,
        "1",
        "2"
    ],
    "x": "5"
}

Additional information, screenshots, or code examples
N/A

I don't think we have documented the top-level list functionality, so we probably need to discuss it from a few aspects.
Current implementation ensures these conditions and then if all checks out, it promotes the the value to a standalone object:

Is the resulted object has only one key?
Is the only present key an empty string?
Is the value for that key is a list?

{
    "": [...]
}

=>

[...]

Other objects, even if they have an empty string key with a list stay the same.
{
    "": [...],
    ...: ...
}

=>

{
    "": [...],
    ...: ...
}

So technically, this undocumented feature, supports stuff like this
$ http --offline --print=B pie.dev/post [a]=1 [b]=2

{
    "": {
        "a": "1",
        "b": "2"
    }
}

And this
https://github.com/httpie/httpie/blob/86ba995ad881a1a09b04c8088211c40329932256/tests/test_json.py#L318-L325
There are 3 possible things we could do to resolve this:

(1) Change it completely, don't allow top-level empty keys at all. Forbid usage of [...]=something syntax completely (where there is no key, unlike a[...]=something), unless ... is an integer (or empty, since it would be append then).
(2) Change it partially, what the initial issue suggests (forbid mixed operations).
(3) Do nothing, since technically this is the correct behavior under the spec. Not the most intutive one though.

I started to like 1, it seem to match be consistent on the correctness aspect. But I fear the bad side might hit us, which there is no way to create empty top-level keys:
$ http --offline --print=B pie.dev/post [a]=1 [b]=2

{
    "": {
        "a": "1",
        "b": "2"
    }
}

Unlike intermediary objects, which you could do this:
$ http --offline --print=B pie.dev/post a[b]:='{"": "x"}'

{
    "a": {
        "b": {
            "": "x"
        }
    }
}

2 is alright, since it would solve the basic problem in the hand. But doesn't feel like a long term solution.
Leaving it as is doesn't seem very intutitve, so I'd say we should handle it one way or another.

I recall that we discussed this previously on a discord thread, but there weren't any resolution. I think reconsidering that example might make sense under this discussion.

Thanks for explaining the current implementation.

I started to like 1, it seem to match be consistent on the correctness aspect. But I fear the bad side might hit us, which there is no way to create empty top-level keys:

I think @jakubroztocil mentioned in the same thread that it would still be possible to create empty top-level keys if the [string] syntax was banned:

Actually, the key part of key/value items is optional, so you can just pass =aaa or :=1 and you’ll get an empty key:
$ http --print=B --offline pie.dev/post :=1

{
   "": 1
}

Therefore, we don’t need the special [foo]=bar syntax for that.

Ah, I have missed that. If we have a way like that, we can safely embed nested data directly http --offline pie.dev/post ':={"foo": "bar"}'. I think in the light of this, we can implement something similiar to your suggestion. @jakubroztocil WDYT?
start: (literal | index_path | append_path) path*
literal: TEXT | NUMBER
path:
     key_path
     | index_path
     | append_path


superset  Version1.01 How to integrate Echarts

superset  Version1.01 How to integrate Echarts

@winterliebe
if you are asking how to contribute ... we are on ECharts 5.0.2 already, and please check out ECharts plugin directory

https://github.com/apache-superset/superset-ui/tree/master/plugins/plugin-chart-echarts

Sample PR

https://github.com/apache-superset/superset-ui/pull/918


How to finetune 30B and can it be done with dual RTX 3090's?

I am trying to finetune 30B but getting OOM. I was wondering if it's even possible with a single 24GiB card, and failing that I'd like to know if a second GPU would help.

I don't know about dual GPU's, but a single 24 GB card can just barely run inference on the 30B model. Training takes considerably more memory.
Have you considered renting a server? RunPod has a 48GB A40 server for $0.74/hour at the moment, and 80 GB A100s usually cost around $2/hour. So you get a lot of hours of training time for the price of a 3090, especially if you factor in your own electricity costs.

I haven't really looked into renting servers, but I will definitely check RunPod. Thank you!

Are you using gradient checkpointing? if not, that will greatly reduce the amount of VRAM required.

I wasn't. Now I am passing --grad_chckpt. Let's see how it works! Thank you!

It definitely worked! Thank you.

I'm currently training a 13B one on 2x3090, it can do 2048 tokens * 64 batch size in 142sec and 74sec for 4x3090. The current code got OOM above 5x3090. Maybe its possible to train the 30B on 2 or more 3090 if you do model parallel like FSDP.

I was able to fine tune the 30B model using 2 3090's. Took 26 hours total.

I was able to fine tune the 30B model using 2 3090's. Took 26 hours total.

What was the configuration you used to get things working on your 2x 3090's?

Sorry, it was 8 or 10 days ago and have tried so many configs that I don't remember exactly. I had used the https://github.com/tloen/alpaca-lora  > Checkpoint export (export_*_checkpoint.py)
... Now I'm struggling to figure out how to fine tune and merge the 65B-4bit with no luck so far.

I was able to fine tune the 30B model using 2 3090's. Took 26 hours total.

Could you please post the command line you used?  I'm struggling with a couple of errors and I'm not sure if it's my parameters or something else.

Fitting 4bit scales and zeros to half
Train Data: 0.00% outliers
The following columns in the training set don't have a corresponding argument in `PeftModelForCausalLM.forward` and have been ignored: input. If input are not expected by `PeftModelForCausalLM.forward`,  you can safely ignore this message.
Traceback (most recent call last):
  File "/home/j/alpaca_lora_4bit/finetune.py", line 176, in <module>
    trainer.train()
  File "/home/j/.local/lib/python3.10/site-packages/transformers/trainer.py", line 1661, in train
    return inner_training_loop(
  File "/home/j/.local/lib/python3.10/site-packages/transformers/trainer.py", line 1684, in _inner_training_loop
    num_update_steps_per_epoch = len_dataloader // args.gradient_accumulation_steps
ZeroDivisionError: integer division or modulo by zero

batch_size should be at least mbatch_size. Will add an assert in repo.

Just came to say that you can finetune 30b with dual rtx3090's.
Finetuning with full 2048 context size, running both cards at 22GiB each.

I've successfully trained on 2x3090's now as well.  It seems that you can tune the parameters quite a bit, in terms of batch size etc based on your available VRAM.
The bonus that I didn't realize until I did some training is that your power and heat requirements will be 1x3090 by virtue f how training is done - Only one card's gpu core will run at a time!  Pretty cool.

rsync -r --progress $output_path /mnt/ml-metamind/ml/loras/

cat $stats_file


Clear LD_LIBRARY_PATH before calling condor exectuables.

Clear LD_LIBRARY_PATH before calling condor exectuables.
/cvmfs/minerva.opensciencegrid.org/minerva/software_releases/v22r1p1/lcg/external/LCGCMT/LCGCMT_61/LCG_Settings/../../../uuid/1.38p1/x86_64-slc7-gcc49-opt/lib/libuuid.so.1:
no version information
    available (required by /usr/lib64/libcondor_utils_9_0_17.so

So it turns out just clearing LD_LIBRARY_PATH before calling condor executables isn't sufficient, because we
import htcondor
and that will give an error like this if the LD_LIBRARY_PATH has a libuuid in it
We could clear LD_LIBRARY_PATH and re-exec python if it is set before doing any actual work...
This also would break if someone was doing -e LD_LIBRARY_PATH to pass the current LD_LIBRARY_PATH to  their jobs, as it would then show up blank, although we could special-case it, and rename LD_LIBRARY_PATH in the environment...
In any case this is uglier than I first thought.   Sigh.

Okay, so I found a way to test this:
mkdir /tmp/biteme
dd if=/usr/lib64/libuuid.so.1 of=/tmp/biteme/libuuid.so.1 count=1
export LD_LIBRARY_PATH=/tmp/biteme:$LD_LIBRARY_PATH


Sound doesn't work

Promise you that's my last bug report 🙏🏻: no audio or music. Both volume are at the maximum level:

Any hint or clue? I verified all the sound mixer but no luck.
Best,
Xavier

Well, there should be an easy solution here, I think:

Check in the OS Windows sound settings what devices are on by default
open OS Windows volume mixer and check if the game is muted


Handle obsolete trainings and "Plone Training 2022 documentation" in logo area

I think we should remove "2022".
Also there are obsolete and outdated trainings that should not be included in the PloneConf 2021 trainings.
Perhaps the way forward is instead of using the version of Plone in the URL, that we use the current year of the PloneConf?
https://training.plone.org/5/wsgi/index.html becomes https://training.plone.org/2019/wsgi/index.html

Here's a start of a list of obsolete trainings.

https://training.plone.org/5/wsgi/index.html
https://training.plone.org/5/advanced-python/

Closing in favor of #672


(WIP) Improve  keptn documentation for developers

[ ] Add instructions on setting up gitea and mockserver for local integration tests
[ ] List needed environmental variables: KEPTN_API_ENDPOINT KEPTN_API_TOKEN and GITEA_TOKEN
[ ] Swagger Documentation uses the correct models (e.g. /uniform/registration/{integrationID}/subscription has no model for the 200 case although it returns the subscription id)

Local Integration Tests

Additional ENV Varsexport AIRGAPPED_REGISTRY_URL=k3d-container-registry.localhost:12345
export KEPTN_NAMESPACE=keptn

Install Gitea

TODO: like at .github/workflows/integration_tests.yaml#Install Gitea

Install Mockserver

TODO: like at .github/workflows/integration_tests.yaml#Install Mockserver


[BUG] reason: Error: bad-request client.profilePictureUrl()

Unhandled Rejection at: Promise {
 Error: bad-request
at assertNodeErrorFree (/home/user/rail-way-bot/node_modules/@whiskeysockets/baileys/lib/WABinary/generic-utils.js:56:15)
at query (/home/user/rail-way-bot/node_modules/@whiskeysockets/baileys/lib/Socket/socket.js:140:48)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Object.profilePictureUrl (/home/user/rail-way-bot/node_modules/@whiskeysockets/baileys/lib/Socket/chats.js:442:24)
at async EventEmitter. (/home/user/rail-way-bot/index.js:426:22) {
data: 400,
isBoom: true,
isServer: true,
output: { statusCode: 500, payload: [Object], headers: {} }
}
}

+1

+1

+1

+1

+1

fix #901 nice , working well

Now now you don't need to update your baileys version to the latest version example $ npm install @whiskeysockets/baileys@zennn08/Baileys#profile-picture-url
You can take or access profile photos without it saying "BAD REQUEST". There is one way to retrieve or access a profile photo without it not saying "BAD REQUEST"
The first step :
You go to your own bot script folder then look for the folder node_modules > @whiskeysockets > baileys > lib > Socket > chats.js
Second step:
After finding the folder above that I told you about above, then you look for a function or code in the form of "profilePictureUrl" then replace the previous code with the new code below 👇👇
const profilePictureUrl = async (jid, type = 'preview', timeoutMs) => {
var _a;
jid = (0, WABinary_1.jidNormalizedUser)(jid);
const result = await query({
tag: 'iq',
attrs: {
target: jid,
to: WABinary_1.S_WHATSAPP_NET,
type: 'get',
xmlns: 'w:profile:picture'
},
content: [
{ tag: 'picture', attrs: { type, query: 'url' } }
]
}, timeoutMs);
const child = (0, WABinary_1.getBinaryNodeChild)(result, 'picture');
return (_a = child === null || child === void 0 ? void 0 : child.attrs) === null || _a === void 0 ? void 0 : _a.url;
};
After you change it, just save the previous edits and try to see the results, good luck :)
Note:
The code or function above can be installed on any Baileys version, whether it's 6.5.0 / 6.6.0 or also 6.4.0 and previous versions, so there's no need to update to the Baileys version like I said above, maybe this might work for you, thank you!!!


[Addition]: Browan/MerryIoT cluster (Hotspots 80)

Hotspot b58 Addresses
11hT2cmAYGksvZC4JnDyn8QexLRSA5EN9wgbJxSznRL5GjKA6Ws
11ri4JcGUN7CHT3Tn29RU64TbvQZCWT3oom3ndQbFjaByQjHf2o
11AQnrriisHujK6trL4t8gCs7qAMz29Bz66jWrGCaKxMv17KonN
1122uEji5S1vfXjYZztgxTWywvJdYUto6tA7zd8VvEToKBNJS8Ac
112SEgZG8qJbBNHwC5LRP62vyjH3hfEV2jXaNPbu6G3WynUM2kYB
11ayV44q3wrAituTsU877ANhUKKdbR5dvgtaRD3aKH4jLPRoMvt
11sYjHtLPJ9yrp4Mzj4nYC71N5jptbcz4MF9EEnad3JfMXk8onW
119ay9GSm3XZUwnsYXyaVa1F3gGEau8DhaZv3cqv31wQJkTJVwj
112nXPkcj4JMqpa8YuKU7hQMWrYqNp1xYLsr1fk5tMy75gX5dGPN
11DRqpnUbNviBidn64Pn95ut7fN4iD3wwhwfUDtJamgmPQCAvWv
11FFdR2FBrTLZeu22TskVewVzHxiU9yRoM7fqQZGWWLLMBY9mAr
1129yHag5Uf8e7MCoaj9xf9vM8uDrkTA7wK3X1h2Lb3P73TxrdBh
1126yErWzREM2e5Wp39Mj4QivB6VvCvV2sVZcsiwvXZMNQKh9WGk
11eYTHTwcZnfnxpXscFDjoFZ9GEmJ1fpCPBbgiGrqgnHPy8NAL5
113TQZSvbCgEEmTHGc3AM7npQryEKYdRjeZwV7rPip9QYK7EVvp
11FQcy9LkkvoBeNDwKdsZ4YLCrmazHqamhrSBGd6r6DS89gY2HD
11ZidEoHGeFsDC9ijKAEx7bRvf986L4brwesLyqQ84iZR6GWLB3
11sakpnj9Zg6Z3iu2BRzFchoZVUvxXL3Hugp6Y3492WtiKTm6KR
1121NefdcHFixcxYGB4wnFzvzCb5XJSrm3p62yzzRndBsdJMbiir
112VFwZ9sG4CvzQgKhamnTLecvV1FUM33EYp2eKBfGiGpwKMAjtE
11kPcWzGKnGqHPrf33Lprgxa8p74uzUN9E8Z2nz1JuzyMVhTEXk
11gFDJvgHAH48fj8SLG2zgjZxoAth4WXFPLtUbF4uECrt9o5dt6
112SspxdxWnBgeHmwwigBhSv3bg2gN4JTnp5bF7sVs6AZSWMvm62
112ZJGcH7Q26FeSw2VCva9Dg39P3DkTtkaVYh86q4SEkj89dCVHc
11254DpiHHDiz2RLk1DMMtUeznzGajkKZ2U7CGKjw3Q9z4MRSMgG
1124SYTLizX5QG7h6dY7rJP49dRSQTgkDrmezdrdrxiKLazHLePp
112HudHUdsuETZGjRxRW4Fa6ziSdwpwjD3GRSB8gswM8DrnZzTSf
11hk5Zs9VbAU6UaG7RHPRXVSmhRUL9XF7xpenWL2zfmsoQsihNg
112phpHKYZGhR7dF3ZWHtQGgZWEa8eQFTiaHMjZJTfx6YxyU4rMv
112cCJf9T6mEqQzvecBpdGRLSbWswyncSs2csePaS74CF5EiNKZW
112Fv4aRV6kg8fb1mCbg6jAnU6GncdSkCWEdMhpjgQwpJmo4H4iU
11jyRd7oCL3Jvat3m3rMfPFMfFDFeDevCByXUGVezAzH4XYKccd
112rRsrE7bwvWSLxxncxZLTcngU5iuDaLtssgw1FXPKiTkrS5DTK
1114DCtXFn4MUPg1HLe9Fdq32Zw2LmJPbCD5dUz9XNh31QpG9M8
112kKMwcwwWPLVoQzyanikf1q7XeoBMHgm1yGu8tVGnUeBGMD4LF
11h3qhnNpbfdYL34wcojSS1iKifLhQB4FKKbc5kFQRFChVnT7M9
11xNZuNvDNBtpDaJimuxWSUmVh4ddhdwSHGzTNpZtx1fo47PhGA
112MTchDm6Newigv87syGKdbBq91GuctBg9RfqDVR1d7veNmZYJk
112C7JUR2ahcrZ1FbS9ka3AdtXALCgSMixLJWsaK36dWZXVmiJtF
11Xk33rwyjXbcsVHx95DcYiXVQLnSLznJvTrnyG7YFJwTspqYjm
11yAgRzKhmBLakDXt16Ytb4WWYCWHfCLojXCT4rJRLKHp98DHF1
115rCQ78Fu2jJHtrw39QfxWYdcL6kreSwPharM5nZ26P3SGc85i
112VqTaxj2CtbUMMZx3wpCC2MBZYRpbaa1NYwzfq2yk6Uwcv9p9s
11KPRG4dcFJSpToRQ93XUGq2LcKc8LobC6uLeiVq2AHDiQYqvfb
112NF5dEFAdMY3ojmuHu69V1vQkBVVMfJUk16NgPehJUi8AkmaQ1
112bCfTW5TaeaaLGTjJ39B8pdGNrUtH8EHxvo6r3cFBSVpkQvCk7
112aoLnxW2mvYRy6ZpQcJKkfzv8z6XKwBWjBw7a2KEpyWTmWL3Qt
11sSvoAWoDoJGYzE7LKasbxjhGBtKR7m3UZKfRKPzPaMayF8fX2
119ujNCmXJvqkboEoBrmud6HNEfgRF5wPcMy7Qu7kKDLJHFqE4u
112jzHemc7iajc6mhV6xdSaYNkQDTuMJvCVe6QRLFWPrs8GJgRz1
112J9Rg2jRC5ksvRLdDDmX6i7HPXa9s4RVLvznHbjczZtvSGRkWT
11aNU7ovLaWHp3k1rDTowp4dsSkzcpjVAkDaqV1LPKs8FYyNMt6
1121RTCDQgxPVbAz6rMEwgrakrDWNrK9qJG3MGpDcVRaSjPxgS1b
112K2h22HCitMiBnLVFg8xZdDuhDFYxFYZvpxHeWziUSqHuSdpnw
11vThbzFXaYNJyGHzmg7VaM4c3ByGkjf7CZDR3hnp8V1ogbejvf
112MWhnFAu2F1mNHkv6SzvF2aFcweUyrV1pTzmHnAwAH1Tv4VxDN
112fjGv6ugYyRoDc5Evp8BKttsUteUtdmA9XKbJjDgJTJHCaFFfY
112XEbFhPuyAhCvNXXQ48LBEavDziULZjmSz3aRs1WdxueBWP8mf
1126forA2VF5b95knMdYTt3FuJNF5ht3oC3GPSMyHFFCv4ABiMd9
112FUhYjdmG5DtWo9jPM7gABSuj4EdjjJtBH722jrrq9A1VHRbrR
115FBofAMWEzsToR8MejHC8xnKUND3fT5NKXfd6C53hjerfYRm7
112XHuRw215ikZjFtkmPG4eCCKimHGwLDWA6bwvpDEXHXLxCSHfc
1128pAY1wjeoYwrMtWs6V2XFCTZjpwQNSZ7VfJv9AcaRBeii99PM
11mKdsWUL6ny1BgsjPsr9UiBNWexfpM11JW6SHuCXEAjaSexFH5
11tBJjuY8ytmjaicsxrDDBzjspPN6YU4BYcLUZg7b7K78ooYrB8
11XqVT8ybpeEJBaq42HnuHZtLBUszYdSu2DJ3gc7T2WBSCcVhke
11kFJLLL2D6zRo2x2keyMCuAYobDJXJXTzVYaDBotrL2YguxwEA
112cv26nV7Me8m7vTrTeEboovsepubcHzEqWCuiVNoK53d6ypQCd
112VGRgLR1uFUpsPPLKTvawyhxKhQb2JBXt3n9wDFPwk3TNMUVUd
112L3X4eg6khcGSGiEeni7mSBq4gE4VYVjdq3vYv939WjWjhAysB
112nHnwsWWKSLDD6EtMUrXRpMw7XULFaouvHiBLw5gWTGErBtKFD
11Pdu7gT7fz8x6LuciTtcu8RMXwSA1eeHPTm4L69zWzL6janjEt
112N541xNjTDir4ggajgFHRkQDizf1LmEob43K2bkrmYsotcnpzG
11gHxHt28QnmkU81YVe2CXd1JaLTkNJbdAkY5kfJHtu85Co4a2Z
11w9C7kHojr4DyTeCQKdmEdvXJrjUUhd2YexeLLqFxPu7NCK8Ne
11ARWmHvLgq5ET5F7aKJqk42Z9RWUeTXGUqLJpfeiyJDhFX9m1X
113BPFBK33rySgZWBqPKnpZkBT1HtjvU62fHRBnLRcJfhYppz7T
1127VoMwM34Xti9L2QqTTW3daKYWYk8e9qVKzbJTuEoDZieofKsJ
11PpBK76o3eHymGw7Bap4k24coWh4Mq2tCEG6dCmUyN6b6VeAte
112AZkbmh7SqtCYnswSHr7Sf934evWdbXuCqZygdb6zXcYDu5199
Discord Handle
No response
Reason(s)
Example hotspot: 112sVaCPWuqDYmdLk8cXkzpdWrFRTvv9Y24DhUfffQcLE2DCY9U9 - Smooth Carbon Millipede

Sorry, what I did before was not to create stories, but I stopped, please don't put me on the rejection list.
I was also deceived by others, saying that this would not violate the rules and requirements, resulting in the wrong deployment method.
Now that I understand, it will be deployed according to the rules in the future.

112sVaCPWuqDYmdLk8cXkzpdWrFRTvv9Y24DhUfffQcLE2DCY9U9

If you are the owner of the cluster. I will not remove this since it's a cheating cluster. Good luck and have a great day.

I am the owner of the cluster, thank you for not deleting it, and I will not do this in the future, it will be deployed according to the rules.

I am the owner of the cluster, thank you for not deleting it, and I will not do this in the future, it will be deployed according to the rules.

I'm afraid you have misunderstood. GhostCrackerCoding is saying they will not remove the issue - it will stay here and go on to be reviewed. If it is judged to be cheating, then it will be denylisted.
If you are the owner, do you have any evidence you can present showing these hotspots are deployed for real as you have placed them on the map? If not, then they will be denylisted. If the hotspots ARE really deployed out in the world as you have indicated - please provide evidence of this.
The rule is create real coverage. If you have done this, then you should be fine.
If other people told you that creating fake coverage was not against the rules, I suggest you go back and tell them this was not true.

I have already said that I am the owner of the cluster, and I have also said that I was deceived by others before, and my mining machine has been shut down and offline, and I promise not to do so in the future, I hope the reviewers will give me another chance , promise not to do so in the future.

I have already said that I am the owner of the cluster, and I have also said that I was deceived by others before, and my mining machine has been shut down and offline, and I promise not to do so in the future, I hope the reviewers will give me another chance , promise not to do so in the future.

You had them running for 3months

Yes, people who lied to me lied to me before to help me do it. Since this month, people have disappeared. I only started researching it myself, and then I realized that this was wrong and I would be blacklisted, so I only put it now. It's closed offline.

Yes, people who lied to me lied to me before to help me do it. Since this month, people have disappeared. I only started researching it myself, and then I realized that this was wrong and I would be blacklisted, so I only put it now. It's closed offline.

Just a small question. How many gateways you got in total?

I have a total of 100, all closed.

Please, please help. I was also deceived by others. Guaranteed not to.

Some of the inside are mine in Cambodia and another investor in Vietnam. In the afternoon, I informed him that the person who deceived us ran away and told him that he would be blacklisted, so we dare not do this. After that, he should also shut down and go offline, right?

Can you help us? We were also defrauded to invest. We paid him a lot of money. In the end, these mining machines will be blacklisted. We promise to study hard, deploy according to the rules, and contribute to helium. You can also follow us. See if we really do that? please help.