Android View Client App

I'm thinking about developing an android app to show real-time positioning from traccar server, but I do not know what is the best way to retrieve the data, it would be a direct connection to the mysql database  or create a webservice on the server?
Any tips?

Is there someone who has developed an Android apk to get and show positions from the server. The mobile web is not very friendly.
I am creating a python script to proxy between an chinese app ( the one that most of the chinese devices use) who uses soap to comunicate with traccar rest but as I am learning python at the same time is quite painful ( By the way I didn't code before in any language).
The script basically listen for connection from the apk in WDL, translate the request to rest, connect to traccar api rest, get the data, traslate it to wdsl and send it back
After a month I was able to login, see and follow a gps device in the app ( which uses google maps api).
But if the android apk for traccar is to be released in the near future I would stop working on this inmediately.
If no I would be forced to learn to program an Android apk, and if learning python is painfull I guess that android would be a year's task.
Thanks

First of all, in the next release there will be more mobile-friendly web interface. You can already try it if you get server source code from GitHub.
Mobile apps for both Android and iOS are also in plans.

anton I have an apk developed look for google play app "ubicatugps"
On Wed, Sep 30, 2015 at 3:20 AM, Anton Tananaev<EMAIL_ADDRESS>wrote:

First of all, in the next release there will be more mobile-friendly web
interface. You can already try it if you get server source code from GitHub.
Mobile apps for both Android and iOS are also in plans.
—
Reply to this email directly or view it on GitHub
https://github.com/tananaev/traccar/issues/392#issuecomment-144316650.

@hackerunet, it doesn't look like a native Android app. Is it a web view based app?

Traccar now has mobile apps for both Android and iOS.


feat: upgrade deps

Description

feat: upgrade deps

Testing required outside of automated testing?

[ ] Not Applicable

Screenshots (if appropriate):

[ ] Not Applicable

Rollback / Rollforward Procedure

[ ] Roll Forward
[ ] Roll Back

Reviewer Checklist

[ ] Description of Change
[ ] Description of outside testing if applicable.
[ ] Description of Roll Forward / Backward Procedure
[ ] Documentation updated for Change

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


[stable/etcd-operator] Add cluster.restore, cluster.pod, nodeSelector & update

Added cluster.restore, cluster.pod, and nodeSelctors to both the etcd-operator pod and etcd cluster pods.
I've also updated the default version of the operator and etcd.

cc @chancez Thoughts on this?

@mikesplain Can you please share the reference of this being supported upstream in the etcd cluster definition?

I'm not sure about this. Why not just add the options that the operator supports via the TPR directly into the template?

Yeah that's what I would suggest too. Although I don't see any reference in the upstream example that we aren't yet covering

@chancez @lachie83 There are a few examples here, as above.  Currently spec.pod.* can't be set.
I don't mind switching it to add pod.* instead but I've seen quite a few of these types of options not present in charts (simply because software moves fast) so I figured by adding more of a catch all, it'll prevent having to open a PR every time a chart's application adds a new feature or flag.

@lachie83 it should basically cover all things in this struct: https://github.com/coreos/etcd-operator/blob/master/pkg/spec/cluster.go#L66 which in the example given, pod affinity is one thing to support, among others.

Thanks @mikesplain. Let me review and get back to you.

Perfect thanks @chancez

And I'm still of the opinion that I'd rather see the helm chart explicitly enumerate available options rather than using the generic extraArgs, personally.

I tend to agree with @chancez . Can you scope that out in this PR?

@chancez @lachie83 I agree with your points, however would you mind having both?  I don't mind adding the other args but I hoping to add an option to allow users to work around explicit options not being present.

@mikesplain I personally think that that's best handled by forking the chart, and dislike trying to make charts overly extensible, because it means it can be difficult to handle upgrades. If a user specifies an option in extraArgs because it's added to the operator, then we add that new option to the template, then it will be specified twice. This is bad for TPRs in particular because the schema isn't validated on submission, so the upgrade will succeed, but the TPR will be broken most likely.

I'm going to stand behind @chancez on this one.
Best way forward is to either fork and implement, or implement specific key vals.
How would you like to proceed @mikesplain

Alrighty, I'll modify this to just be those values then.

Thanks @mikesplain . Appreciate your understanding

Absolutely, you guys know this stuff much better than I, I'm simply trying to help others work around road blocks I've come up against frequently as of late.
I am curious though, what's the intended path for forking @lachie83 @chancez?
Background: We use this chart as a dependency for one of our applications.  When a developer finds a chart they want to use is missing a feature they need, they fork it, modify it and PR it back upstream.  That's super easy, but the problem comes when you want to use the fork temporarily until the PR is merged, etc.  Since dependency charts have to either be in the charts directory or in a chart repository as a package (based on my understanding), it requires forkers to setup a bit of other infrastructure to use (s3 or gsutil).  I've setup https://github.com/technosophos/helm-plugins for us against our fork of this repo but it's kind of a hack... I was wondering if you have a suggested or best practice for forkers to utilize their forks without having to duplicate the merge and release process here? I appreciate your advice while I update the PR.

If I have to fork, I just change my dependency to reference the chart on my local file system using the file:// syntax. If you don't have control over the chart which has a dependency, then you fork that one too, and just modify it's dependency. It's not the best but it's not that bad either.

@chancez @lachie83 I've updated the PR as suggested and added a few other things. Let me know if you have additional feedback.

/ok-to-test

Requires a chart version bump.
@viglesiasce @lachie83 Is this good to go?

LGTM. Please bump the chart version

Sorry for the delay, version bumped @lachie83 @unguiculus

@mikesplain we need to bump again. The rebase nullified your change.

@lachie83 Ugh, sorry about that. Had a bad git day yesterday.... Fixed now.

LGTM


Make UserUtils.setupWatch public.

can you elaborate the motivation of this change in your PR description?

The motivation is to allow setupWatch to be called from outside of azkaban-user package.


Huge Container Folder

I understand this isn't an all-purpose tech support line for screensaver issues, but ~/Library/Containers/com.apple.ScreenSaver.Engine.legacyScreenSaver
seems to hold 42gb of data (and, apparently, growing, as I'm nearly out of drive space), and I have my Aerial cache limited to 32.4gb.
Is this related to Aerial? I'm running v2.2.6 in Catalina, Aerial Companion v1.2.

That folder is for the data of every "old style" screensaver, which include Aerial but also all 3rd party and some 1st party from Apple.
It's quite possible though that Aerial is the one taking up that space. Can you make a screenshot of your Settings > Cache so I can check something ? I've had reports of cache going over the limit that I haven't had time to fully investigate. Thanks !

Here's the screenshot.

OK that seems ballparkish (though a bit above, but not 42 GB), did you happen to have bought some of the video packs possibly ? That could account for a few extra gigs, those videos aren't part of the cache.
Double check the size of the path from my edit above, and tell me what that reports if you can, thanks.

Yes, I bought the "everything" package of add-ons. I'm surprised and mildly unhappy that the cache limit doesn't restrain add-ons. I see (maybe mistakenly) Aerial as a platform, not a data set, so I would expect my cache setting to cover everything flowing through that platform.
That folder is 41.56gb.

Ok so that explains it.
I understand your mild unhappiness, in a perfect world, those packs would be downloadable at will and part of the cache. That's how I built everything for Aerial. But that's not how they chose to operate, they wanted those packs to be a 1 time download after you buy them and for Aerial to not "cache" those (rotate aka delete/redownload) . So I've added the ability to have "non-cached" videos, and this made everything super complicated.
The size that those packs take is shown in the sources list, but that's mildly helpful. I think I should probably take that size into account and maybe show an extra bar in the screenshot I asked you, so it shows there the size used by those extra videos.
Part of the reason I don't count it as part of the cache limit is, if you set your cache to 5 GB (the default), then buy the videos, if those are larger than 5 GB total (like, someone like you who bought everything) you'd never see any other video...
I don't have an elegant solution for this that doesn't include a bunch of support one way or another. But adding more information is probably a good start.

More info is always more good!
Now that I have a sense of your headache with this issue, If I were you I’d just let this imperfect compromise stand for a while. Maybe you’ll have fresh ideas about the higher-level “mission” and how you want to implement other content. Unforeseen ideas or developments may force your action, one way or another.
But in the long run, if nothing substantive changes and this remains an annoyance, I think it makes little sense for an open source dev to kill himself to fully optimize conditions for a third party provider.
For now, it sounds like you’re not killing yourself and many of us are enjoying the third party content, so I’d urge you to leave it alone rather than risk digging yourself in deeper with fixes over fixes over fixes! But, yeah, please explain better.

Been a while but here's how I "fixed" this in upcoming 2.5, I simply added the information about the packs to the Cache page which is also a lot more prominent in the sidebar which has been unified :

This should make things slightly more clear.
Moving the cache in Monterey will move everything (cache + packs which are internally separate) to the new location, as discussed in the other issue.

Fixed in 3.0


Question: Can one add more documents without re-processing everything

The question sort of say it all.
I ran graphrag on a single .txt file in the input directory. I added a new file and tried running the indexing with --resume from the original run... It stated that the 2 documents were processed but obviously did not do anything with the new one.
Can new documents be added wo the graph without having to re-run everything from scratch?

Awesome! Thank you for clarifying!


YouTube Music -> Last.FM scrobbling same songs multiple times

Describe the bug
Hi and thank you for your work on this great scrobbler!
I'm running into an issue using YouTube Music and scrobbling to Last.FM. It seems to be fetching the played history over and over, scrobbling the same songs to Last.FM, for example:

I played this song once, and it keeps being scrobbled over and over (same with other songs).
As an example:

Songs found here (just turned the listening history on) should be maybe 20% of that amount.
To Reproduce
Steps to reproduce the behavior:

Install locally (nodejs)
Setup YouTube Music with local file
Setup Last.FM with local file
Play music from iOS device

Expected behavior
To only scrobble a song once, not fetch the play history over and over and scrobble songs multiple times.
Logs
A piece of the logs, all of the songs saying they are being scrobbled to Last.FM here was listened to an hour ago.
[2024-06-11 10:29:05.586 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:29:05.585 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:29:05.365 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:28:55.353 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:28:55.352 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:28:55.162 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:28:45.151 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:28:45.149 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:28:44.946 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:28:34.934 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:28:34.933 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:28:34.746 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:28:24.735 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:28:24.734 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:28:24.519 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:28:14.504 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:28:14.503 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:28:14.302 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:28:04.288 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:28:04.288 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:28:04.086 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:27:54.078 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:27:54.077 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:27:53.879 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:27:45.267 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:45.266 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) Artemas - i like the way you kiss me @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:44.115 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 776ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:44.091 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:44.090 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) Dua Lipa - Training Season @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:43.868 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Last activity was at 2024-06-11T10:27:00+02:00 | Next check interval: 10.00s
[2024-06-11 10:27:43.867 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] No new tracks discovered
[2024-06-11 10:27:43.684 +0200] DEBUG  : [App] [Sources] [Ytmusic - MyYTMusic] Refreshing recently played
[2024-06-11 10:27:42.889 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 700ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:42.858 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:42.857 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) Elley Duhé - MIDDLE OF THE NIGHT @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:41.588 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 840ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:41.569 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:41.568 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) (G)I-DLE - Fate (나는 아픈 건 딱 질색이니까) @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:40.428 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 737ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:40.401 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:40.400 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) CHUNG HA - I’m Ready (I’m Ready) @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:39.164 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 579ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:39.134 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:39.133 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) KISS OF LIFE - Midas Touch (Midas Touch) @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:37.743 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 839ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:37.724 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:37.724 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) Aden Foyer - The Ballet Girl @ 2024-06-11T10:27:00+02:00 (S)
[2024-06-11 10:27:36.581 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Waiting 840ms to scrobble so time passed since previous scrobble is at least 1000ms
[2024-06-11 10:27:36.567 +0200] DEBUG  : [App] [Scrobblers] [Lastfm - myLastFm] Raw Payload:
[2024-06-11 10:27:36.566 +0200] INFO   : [App] [Scrobblers] [Lastfm - myLastFm] Scrobbled (New)     => (YTMusic) Ed Sheeran - Shivers @ 2024-06-11T10:27:00+02:00 (S)

Versions (please complete the following information):
Provide version information for any related sources/clients.

multi-scrobbler: [e.g. 0.7.1 node, locally]
YouTube Music
Last.FM

Additional context
Running latest release (cloned master of this repo)

I had this issue too, but it was difficult for me to reliably replicate, seemingly happening at random, so without any reliable data I didn't bother opening an issue. I've just been watching the entire repo.

Haha you know what? You're the reason I found this repo! Googled for a YouTube Music scroller and found your blog. 😁
Hopefully the dev have some insight to what might be going on.
So I'm guessing then (reading your blog) that the dev branch didn't solve this issue either?

At the time of writing the dev branch didn't make a difference.
I think the only difference here is I used the docker images (I tried stable, develop, and develop-debian)
but yeah, I had the exact same issue. Since I've been watching the commit history, I haven't noticed anything that might be related to this.

Thanks for the writeup.
There haven't been any changes to the YT Music code in MS because I don't personally use YT Music so if something breaks I depend on any users who use it to report an issue.
I can't currently reproduce your issue but I'm fairly confident it's due to how YTM "organizes" your listens in its recent history -- it does not surface any actual "listened at" datetime info. Instead:

it buckets plays into "playlists" of relative time, then large buckets for month/year
MS assumes that the order of the plays within a bucket are in reverse chronological order (most recent played first) -- this is anecdotally what I saw when developing/testing YTM but there is no guarantee

EX:

Today (4 tracks)
Yesterday (2 tracks)
Last Week (20 tracks)
May 2024 (150 tracks)

You can see more in the PR I made to try to compensate for this in the underying YTM library MS uses.
MS tries to be clever about how it determines if YTM has returned a new track. When it first starts up (polling) it stores all tracks returned from YTM history in a flat list. Then it polls that history API regularly and if it finds a track at the beginning of the list (assumed most recent) that does not match the last-seen first track it determines that is a new track and scrobbles it.
Likely what is happening with the duplicate scrobbles is that YTM is either not returning tracks in reverse chronological order or it is not returning the playlists in reverse chronological order. Or maybe something else entirely...its pretty opaque.
MS also can't do duplicate checking, which it does for all other music sources, because there are no datetimes so it just has to assume the list is in the correct order. :shrug:

Having said all that, I've added some code to help surface information about those playlists to a feature branch in MS. Please use the ytMusicDebug branch if running locally or [foxxmd/multi-scrobbler:ytdebug]( https://hub.docker.com/layers/foxxmd/multi-scrobbler/ytdebug/images/sha256-7fd044fe11cecb53ff6bd9d3e9939f0297616b1c1fbcc8e40db022562a7495bd?context=repo) docker image.
You'll find on the dashboard the YTM card has a new link, See Recent from Source API. Navigating to this link will open a page that lists the tracks returned from YTM without modification. This is the exact order YTM returns them to MS. You'll also see the "playlist bucket" YTM puts these tracks in at the end of each track.

If everything is working normally this list should be essentially the same order as Tracks Discovered page for your YTM source.
If you see the duplicate scrobbles occurring please:

include the list from Recent
include the list from Discovered
include any relevant logs

This will help me isolate if its a list order issues or if I need to dig further into this. thanks

@FoxxMD thank you for the explanation and insights into why scrobbling from YouTube Music is such a pain, to be honest if it wasn't for multi-scrobbler I would stick with Spotify. Your work is much appreciated!
To give a brief update since it's been almost a day since your reply, these are the steps I've taken to test this out:

Running the ytMusicDebug branch locally (using pm2 on a Ubuntu server)
Running YouTube Music for about 2 hours from my iPhone app
Running YouTube Music for about 6 hours from web browser on PC/Mac

So far everything has been scrobbling perfectly correct! The only change from when I ran the release version of 0.7.1 is:

Not using separate [service/client].json files, instead running the all-in-one config.json

I'll leave this issue open and get back to you once I've tested things out some more, hopefully @SomeAspy have time to try it out as well.
Thanks again for all your work!

Off topic but I read your blog post @SomeAspy (thanks for the kind words!) and wanted to let you know you do not need CF Access.

The next problem I ran into is the fact that (in my case) this is a publicly accessible URL. I couldn't just close it, because Last.FM needs to callback URL to authenticate with Multi Scrobbler.

Last.fm uses a slightly modified authorization code flow but the relevant part is that its redirect behavior is the same as the normal oauth2.0 spec -- the redirect URI is is where the authorization service redirects the users browser after its side of the authorization flow is complete. This means the URI used only needs to be accessible from the users browser, not that is needs to be publicly accessible:

You setup a redirect URI for your application like http://localhost:9078/lastfm/callback
Click authenticate in MS -> MS generates auth URL like http://www.last.fm/api/auth/?api_key=1234 and tells your browser to redirect there
You see your created LFM application on last.fm and click allow access to your account
last.fm servers authorize access and return the redirect uri to your browser but now it includes auth code like http://localhost:9078/lastfm/callback?token=67890

Your browser is told to redirect to that new URL, it navigates to MS (which is only accessible on your machine through localhost!)

MS parses token out of the URL and does a final exchange, server-to-server, where it sends the token to LFM and receives a sessionKey it can use to make api requests

LFM's servers never initiate a connection with your MS instance so your instance does not need to be public in order to complete the auth flow. This is usually true for any oauth2.0 compliant authorization flow and auth code flows in general.

I love to see people reading it! I was surprised to see the author found this from my silly blog. I have updated the post to add what you just said.
I will be giving your YTM branch a try soon, right now I don't listen to a lot of music from mobile.
I also can't help but comment on your swiftness of responding to any and all issues on this repository, so kudos!

@roos-robert @SomeAspy have either of ya'll had a chance to test this? Any results?

I'm actually gonna begin tomorrow, the circumstances where I scrobble a lot from mobile have started today.

Something I've almost immediately noticed within the first few hours of using is my YouTube music cookie seems to get invalidated more than it previously was.
I originally set this up last night, and pulled a cookie using the post request before going to sleep.
Later, today in the afternoon, the cookie has been invalidated. I chock it up to whatever, and pull it again.
I listen to music for about an hour, and things work fine. I take a nap for 2 hours and come back to find my cookie invalidated again. @roos-robert have you been having similar issues?

@SomeAspy can you try enabling the option mentioned here? This should be included in the latest commits on the ytdebug docker image.

Ah yes I missed that. I haven't actually tested this exactly yet but it seems to drop on restart. I can test it when I get home.

Another smaller detail I've noticed: if you play a song several times over only one play will be detected. I assume this is because of the way you make sure not to scrobble multiple times and am not sure if this is avoidable.

As long as there is a different track played between the two it should be detecting them just fine (assuming MS was running and monitoring the entire time).

There was no track between, and I just noticed that the YouTube history itself only shows once.
I've been using https://github.com/th-ch/youtube-music on desktop and it will scrobble plays if you play it over several times. I guess not much can be done about this if YouTube music itself doesn't list it as played multiple times.
In this case it was house of cards for about 7 replays.

Yeah, unfortunately MS can't do any thing about that since YTM doesn't report any kind of player status or listening statistics. All it reports is the history, in order (hopefully), without any timestamps. It's the least data-rich platform MS supports.

Thank you for the detailed writeup and track matching, this is very helpful!

Skipped songs seem to still scrobble (YTM shows in history, so not much to be done)

Yes, unfortunately YTM records a song to the history playlist if it even loads in the player. It has no threshold for "this has been played for X seconds" before adding it.

Duplicates are often scrobbled...with the exact same times (which would not be possible since each song is at least 3 minutes)

This is a limitation of how MS tries to detect plays in "real-time" in the way I described in the earlier comment. It should be polling fast enough that when the history updates there is only one new track -- IE polling every 60 seconds, tracks are played for longer than 60 seconds so only one shows up between each poll -- BUT the code does not enforce this assumption: if multiple tracks show up between two polls it'll scrobble all the newly seen tracks with the same timestamp. It's erring on the side of caution in the event polling temporarily fails or YTM doesn't update history for an extended period.

Strangely, these duplications and order errors don't seem to appear in the MS debug

This is good to see, I think. It at least tells us that the data scraped by yt-music-api library is the same as what you actually see in YTM, at least in a spontaneous context.

During this window do you know if MS restarted polling or had any errors? Even temporary ones like it failed to contact api but restarted successfully before polling was stopped -- or had a reauthentication event for YTM? Any logs at all might be insightful.
Based on what you've presented so far though it seems like either

MS is restarting polling when it shouldn't and is incorrectly using a "stale" history list
YTM history order is not temporally consistent IE it adds tracks in the middle of existing history  or switches the order of tracks "later"

I'll see about improving the history checking code and storing previous state so i can detect if/when this consistency occurs so it can drop the "stale" list or try to recover somehow.

I should have included logs, you are right.
It looks like the web UI logs have rolled over, so I have attached the log file.
Skimming over it, I don't see anything erroneous.
scrobble-2024-06-25.1.log

@SomeAspy @roos-robert I've pushed changes to the ytdebug image and associated branch that overhauls how MS checks YTM history. It now validates the sort order against the previous list and only scrobbles new plays if they are only new (aka prepended to returned history) and there are no other changes to the list. In the event of a non-prepend scenario it'll now log to WARN with a list of changes and replace the in-memory list its validating against.
Please try these changes and let me know if you get any logs about non-prepend events.

I should link this in here as well. https://github.com/FoxxMD/multi-scrobbler/issues/158#issuecomment-2192448181 Perhaps it might make more sense to merge these issues into one issue, as the difference between the 2 problems is starting to blur.

Both issues are related to YTM but I don't think they are related, at least not yet. I'd prefer to keep them separate for now.
RE your comment in 158:
That's pretty eye-popping! There may be an issue with MS still but there are definitely inconsistencies in there that can't be accounted for by the way MS handles the history. I've added a few more changes. Please try testing with foxxmd/multi-scrobbler:pr-163.

Alright, I just started it up (with the debug env variable) and your new PR. I guess I'll let you know how it goes sometime soon (most likely tomorrow)

hey @roos-robert a bit off topic, but I thought I'd mention I commissioned a Youtube Music app tweak for iOS, It seems to work great! https://github.com/marioparaschiv/lastfm-yt-music

All of the changes to prevent duplicate scrobbles and the logging these things are now included in v0.8.3 along with FAQ entries and doc mentions about the above issues with missing scrobbles. The original issue is "resolved" and the there's not much more that can be done about the inconsistent upstream data from YTM so I'm closing this for now.
If google decides to release an official API for YTM in the future or another way of access this data is discovered I'll be happy to revisit this.


[BUG REPORT]: MBRFC 1hr temperature wrong Period Type

The downloaded MBRFC 1hr temperature DSSrecords are coming out as PER-CUM with a D- and E-Part defined as well.

Should be INST-VAL with D-Part only.  The metadata header for the DSS record should also have the same Start Date/Time and End Date/Time.

temporal duration in database was 3600 instead of 0.  Fixed via admin ui.


Fix duplicate headers

https://github.com/dogecoin/dogecoin/issues/2021
Fix from https://github.com/bitcoin/bitcoin/pull/8054/files

I'm compiling this to deploy to some nodes in the wild. Thank you so much!

ping @patricklodder

ping patricklodder

PONG! Still running tests.

TLDR; After weeks of puzzling, I unfortunately have to NAK this, because this creates a sync issue.
Here's why this is not a good patch (and the reversal in bitcoin/bitcoin - be it on gut feeling more than on hard data - was the right decision):
Triggers for getheaders requests:

Once, when connecting to a new peer, first thing after handshake
When we receive a cmpctblock message where we cannot seem to connect the block
When we receive a headers message where we cannot seem to connect the header
When we receive an inv message containing an unknown block
Before this patch: When we receive a headers message containing 2000 records

Problem with this patch
The condition introduced always evaluates to false, completely removing the 5th trigger, leaving nothing but the other 4 triggers to synchronize headers, which all are one-shot requests (because the only trigger that would fire more than once per external event is the fifth.)
If the condition were to evaluate to true based on the described behavior in the comment (which is not realized), we would limit ourselves to downloading headers from a single peer (the fastest) unless one of the other events would trigger, at which time we would re-evaluate peer speed and go with whomever reacts the fastest. Although that may be a better solution, it may not be a great solution either. I will look into alternatives.


PDF cleanup: explain sigma and pi types

Description
This addresses a couple of items of #258
Checklist

[X] Commit sequence broadly makes sense and commits have useful messages
[X] Code is formatted according to CONTRIBUTING.md
[X] Self-reviewed the diff

I think we don't have any dependent types in the PDF (and if we do we should get rid of them), so I see no reason to include this in the PDF.

Shouldn't we at least explain Σ, which does appear in the PDF?

No, we should get rid of them (except if they denote summation)


[Feat] Local Images

I might want to use images that I can't publish because I don't have a license or they might be personal. Another use case (the one I have rn) is for when a game is yet to be listed on sgd (waiting for approval) so I can't upload the assets yet.

Dupe https://github.com/SteamGridDB/SGDBoop/issues/60


BRD not using Blast Arrow

Checked multiple logs. It's never casting a single Blast Arrow.
Apex Arrow
Additional Effect: Grants Blast Arrow Ready upon execution while Soul Voice Gauge is 80 or higher

So it should cast Apex Arrow again when it turns into Blast Arrow

Reset your plugin


(please delete)

please delete this issue @souramoo

Fwiw it is very easy to do this in PHP, you'll just need to reimplement it there based off my Java code using something like https://github.com/jedisct1/libsodium-php/blob/master/README.md :)


Vault and hopper losing items

Describe the Bug
Hopper placed under a vault receives only a part of items (Usually half*) Nothing is left in the vault.
Reproduction Steps

Place a hopper
Place a vault on top of the hopper
Place a funnel (andesite or brass) facing the vault
Right click the funnel holding 9 items of any type
Open the hopper. Just 5 items
Break the vault to make sure there is no items stuck in it

OR

Place a hopper
Place a vault on top of the hopper
3 Place a brass funnel facing the vault
Place a belt heading in the funnel and power it
Place a chest before the belt diagonally up 1 block
Add a brass funnel between the chest and the belt
Drag 9 items of any type in the chest.
Open the hopper. Just 5 items
Break the vault to make sure there is no items stuck in it
...

Expected Result
To see 9 items in the hopper
Screenshots and Videos

Crash Report or Log
No response
Operating System
Windows 10
Mod Version
0.4.0d
Minecraft Version
1.18.1
Other Mods
No response
Additional Context
*When items are inserted one by one, the amount of lost items depends on insertion speed. Insert fast, lose at most half the items. Insert slower to lose less. Insert really slow to not lose any items at all

Can you test with this build?

Can you test with this build?

Same issue

fixed in af66eba


Not getting info in android simulator

Android simulator has no bluetooth, so the part where you sniff for it generates an exception which leads to getting absolutly no info.

Just came across this as well.

This have been surrounded in a try/catch since then.


Alternating Captions

I originally opened this issue in the bmaltais repo, but this is probably the correct place: https://github.com/bmaltais/kohya_ss/issues/1836
Overtraining the text encoder is a real problem. If you look at online guides (such as those at civitai), they recommend using lower learning rates for the TE or not training it at all.
One really cool feature could be alternating captions for each image from a set. There should be an option to treat the captions files as a set of possible captions for the image (one possible caption per line), and a caption should randomly be selected every time an image is used for training.
For example, when training a character Lora, the caption file could look like:
a photo of name
a photo of name, a woman
name
this picture shows name
.....
Each time one of those captions would be randomly selected. This way we can get greater diversity in captions, which should make the TE training more robust.
I believe the Embeddings training script in Automatic1111 does something like this.

Caption dropout is helpful, especially if you are using wd14 tags.  But it's less helpful in the case of full sentences.

I'm in testing this method for dynamic captions, such as "booru-based tags", "[full sentence caption 1]" , .. .
But I will reform structure of ImageInfo class. After tests done, I will pr.

You might try my PR to achieve the same goal.
https://github.com/kohya-ss/sd-scripts/pull/1106


refactor: construct typeIds based on mapping keyType

What does this PR introduce?

construct typeIds based on mapping keyType
Update the typeIds in constant.js
Remove hardoced constant in tests

TypeIds now are constructed as Mapping KeyType according to LSP2-ERC725YJSONSchema
The usage of typeId in mapping form will make it more easy to identify which Keys and Values being set in the ERC725Y storage are relevant to a typeId based on the 10bytes prefix.
This will also allow KeyManagers in the future to implement specific permission to set these kind of keys based on the fixed bytes10 prefix.

@YamenMerhi I went too quickly on this PR.
Since it's a new feature, we need to write some tests for it.
Can you do that, when the a an address is set for a specific typeId (inside this new LSP1 Mapping).


fix the hud enabling/autohiding for new players

currently when a new player joins the game, the server crashes as soon as she/he toggles the Enable/Autohide HUD option. This patch fixes the bug.

Thanks a lot.


LLM Model with no Censorship

Hi, sorry they're is not discussion tab so I have to set this thread here.  Im training at this moment a dataset of 100 000 HD images using CogVLM 4 bits for a future SDXL checkpoint. I finished the captions of the half of my dataset but I realised that the captions of the  " erotic " part of my dataset ( including semi-nudes or full nudes ) are censored meaning that CogVLM never included words like " nude, naked, boobs, p*ssy etc... " . Would like to know if it's possible to remove this " censorship " and if its not possible with cogvlm, if you know guy's an " open " llm model who can describe all kind of pics with no censorship.
Thanks a lot!

Now i added Discussion tab, i dont know about this cog behavior but i will do a research. I think maybe this models arent trained with nfsw content and some feature checket could be enabled in this model.

not sure about nude stuff , but cog is kinda wild , what we do with our dataset is use a modified version of this project to first do a WD tagger caption then as cog to do caption using this prompt :
"
always start with 'This image showcases'.
Describe this image in a very detailed manner using those words  : {here goes the WD tagger captions}
"
this helps to align cog more into the actual image content and skips the useless commentary , about what the image means or what cog thinks about the image .
as for uncensored cog , i think the dolphin prompt works on it , the issue is if you use a long prompt with cog it goes insane .

not sure about nude stuff , but cog is kinda wild , what we do with our dataset is use a modified version of this project to first do a WD tagger caption then as cog to do caption using this prompt : " always start with 'This image showcases'. Describe this image in a very detailed manner using those words : {here goes the WD tagger captions} " this helps to align cog more into the actual image content and skips the useless commentary , about what the image means or what cog thinks about the image . and This image showcases is just so we can mass replace "This image showcases" with "" and we have a good description of the image , and replace "." with "," , cog loves "." ... as for uncensored cog , i think the dolphin prompt works on it , the issue is if you use a long prompt with cog it goes insane .
will explore running both WD tagger and cog then send both prompts to uncensored mistral for a unified caption as well , uncensored VLM(large) does not exist so far

Hi there thanks a lot for your answer :)
So you doing
1 -  a WD tagger captioning of an image, it's will give you a list of keywords of like " 1girl, brown hair, nude, bed. bedroon, etc... " let's said
2 - Then a second captioning using COGvlm ( I guess cogagent VQA ? ) and you write for the prompt " :  always start with 'This image showcases'. Describe this image in a very detailed manner using those words : " 1girl, brown hair, nude, bed. bedroon, etc... "
3 -Then you replace  "This image showcases" with "" and replace "." with "," , cog loves "." ...
Look nice, will def try it. I have btw few questions : is it possible to automate this process ( batch process ) for a huge amount of images ? I guess you want fusion theses steps and send into a uncensored mistral model so.  And also what's a dolphin prompt ? :P Thanks a lot!!!

here is a snipped of the code , you add this logic in the image process part , you will have to ask gpt4 for more :
image_dir is  image path
output_dir is the txt file export folder
caption_path  is the wd tagger  text file path
    output_dir = os.path.join(image_dir, 'output')
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    caption_path = os.path.join(image_dir, caption_filename)
    parent_folder_path = os.path.dirname(filename)
    file_namep = os.path.basename(filename)
    new_file_name = os.path.splitext(file_namep)[0] + ".txt"
    caption_pathx = parent_folder_path +"\\output\\"+new_file_name
    try:
        with open(caption_path, "r") as f:
            text_file_content = f.read().strip()
    except FileNotFoundError:
        text_file_content = ""

        promptx = prompt + " " + text_file_content

        prompt is the  "always start with 'This image showcases'. Describe this image in a very detailed manner using those words : "

        promptx is gonna be used instead of the default prompt  variable ,

the logic kinda keeps the WD tagger file and dont edit it , because i'm trying to train using multiple Caption as tested here :
https://github.com/kohya-ss/sd-scripts/issues/781#issuecomment-1825174300
are you aware of this ? Text encoder 1 , Text encoder 2 for Sdxl ?

CogVLM cogagent-vqa-hf , qwen-vl-chat ... and much more , are working with some missing values that will make it more censored , example :   cogagent-vqa with top_p = 5 and top_k = 100
qwen-vl-chat top_p = 1/5 top_k =10  optional numbeams = 5
not sure if image-interrogator sets those values or not , but setting them in clip-interrogator  and generate.py , gives better results

CogVLM cogagent-vqa-hf , qwen-vl-chat ... and much more , are working with some missing values that will make it more censored , example : cogagent-vqa with top_p = 5 and top_k = 100 qwen-vl-chat top_p = 1/5 top_k =10 optional numbeams = 5 not sure if image-interrogator sets those values or not , but setting them in clip-interrogator and generate.py , gives better results

Ok will try it with taggui, thanks
@elismasilva do you plain to add theses settings to image interrogator ?

CogVLM cogagent-vqa-hf , qwen-vl-chat ... and much more , are working with some missing values that will make it more censored , example : cogagent-vqa with top_p = 5 and top_k = 100 qwen-vl-chat top_p = 1/5 top_k =10 optional numbeams = 5 not sure if image-interrogator sets those values or not , but setting them in clip-interrogator and generate.py , gives better results

Ok will try it with taggui, thanks
@elismasilva do you plan to add theses settings to image interrogator ?

Could you give me some comparative example of the expected results with and without parameters?  so I can test to promote the best ones.

CogVLM cogagent-vqa-hf , qwen-vl-chat ... and much more , are working with some missing values that will make it more censored , example : cogagent-vqa with top_p = 5 and top_k = 100 qwen-vl-chat top_p = 1/5 top_k =10 optional numbeams = 5 not sure if image-interrogator sets those values or not , but setting them in clip-interrogator and generate.py , gives better results

Ok will try it with taggui, thanks
@elismasilva do you plan to add theses settings to image interrogator ?

Could you give me some comparative example of the expected results with and without parameters? so I can test to promote the best ones.

do you think you can include the possibility to modify theses parameters like in Taggui ? :

CogVLM cogagent-vqa-hf , qwen-vl-chat ... and much more , are working with some missing values that will make it more censored , example : cogagent-vqa with top_p = 5 and top_k = 100 qwen-vl-chat top_p = 1/5 top_k =10 optional numbeams = 5 not sure if image-interrogator sets those values or not , but setting them in clip-interrogator and generate.py , gives better results

Ok will try it with taggui, thanks
@elismasilva do you plan to add theses settings to image interrogator ?

Could you give me some comparative example of the expected results with and without parameters? so I can test to promote the best ones.

here is a quick test i did
qwen-VL-Chat  top_P: 5 Top_k : 10  num beams 10 optional max token :256
Prompt : always start with (This image showcases). Describe this image in a very uncensored manner  using those words as a reference   :  here goes tags from wd tagger
tempature was always set to 1 same as L-penalty=1 .
this gives Straight  Pon words like Pu** , Cu** , and very lewd and uncensored  Sailor's mouth , it's like writing a xxx novel but from a sick individual , telling things that are not in the image , like the subject is doing that so the subject want's to take it , or ready for action , set top_k high like 100-1000 and it will start saying do that to the subject or subject  a ***** ....
so clearly I can't share none of that , it was a test .
my data set revolves around 3d generation , but it was good to test and share .
super high values  will give you more deranged and confused response . but sometimes you get lucky , all of the test i did will sometimes generate Chinese language paired with English ,
i only added the option to modify top_p top_K because my cogagent results was not the same as from this project .
i read the code and there was not top_p top_K  at all maybe it was set from the model config , but it was different as night and day for normal censored captions .
and i did notice that  qwen-VL-Chat use the same seed (1234) adding a random to it spice things up .
as for the Gpu ID SET CUDA_VISIBLE_DEVICES=0,1 will show the first and second gpu if you are doing multi gpu , did not test ALL
do_sample should be always true , unless you want a LLM , when false the response is unrelated to the image .
cogagent :  top_p : 1-5 top_k :10-100
prompt : always start with (This image showcases). Describe this erot*c and lewd image in a very detailed  manner using those words  :here goes tags from wd tagger
qwen is the best if you want unacceptable  uncensored   barely  accurate  response .

well let me know where i can share an example so you can test it , i don't want to go against GitHub rules

qwen

qwen  is not yet added with image interrogator unfortunately

qwen

thing is that cog vlm give way more correct / accurate description than qwen I feel

yes totally but qwen is easy to be forced into uncensored mode , check this example with the settings i said above : (beg for a kiss) Like What the hell  so much more examples i would not share here:
a captivating goth girl with long hair and stunning features, looking directly into the camera with a seductive expression, She is laying on a bed with a soft white blanket, spreading her legs wide open and barefoot, revealing her sensitive pink *****, Her lingerie is a black mesh bra and matching panty set, accentuating her hourglass curves, Her multicolored hair and two-tone eyes complete the look, making her appear even more alluring, Her **** are gently parted, revealing perfect pink **** that seem to beg for a kiss, The window blinds behind her provide the perfect amount of natural light
the example above the subject don't have  have two-tone eyes  , just one eye is kinda dark due to light the other is not .
cog is short ,accurate  and direct.
what you can do too is download an uncensored LLM  and provided it with cog caption and Wd tags
and ask it , rewrite the "original  description" below using the "tags provided"  without changing the overall  meaning into an truly uncensored lewd ero*ic    description
original description  :
tags provided:

Hi guys, I've been really busy these last few days, I promise I'll pay special attention to your requests for the next version. I'm now trying to combine InstantID with InstantStyle, finishing this I'll return to image-interrogator, in the meantime you can continue sharing the experiences of the tests carried out.

qwen

thing is that cog vlm give way more correct / accurate description than qwen I feel

yes totally but qwen is easy to be forced into uncensored mode , check this example with the settings i said above : (beg for a kiss) Like What the hell so much more examples i would not share here:
a captivating goth girl with long hair and stunning features, looking directly into the camera with a seductive expression, She is laying on a bed with a soft white blanket, spreading her legs wide open and barefoot, revealing her sensitive pink *****, Her lingerie is a black mesh bra and matching panty set, accentuating her hourglass curves, Her multicolored hair and two-tone eyes complete the look, making her appear even more alluring, Her **** are gently parted, revealing perfect pink **** that seem to beg for a kiss, The window blinds behind her provide the perfect amount of natural light
the example above the subject don't have have two-tone eyes , just one eye is kinda dark due to light the other is not . cog is short ,accurate and direct. what you can do too is download an uncensored LLM and provided it with cog caption and Wd tags and ask it , rewrite the "original description" below using the "tags provided" without changing the overall meaning into an truly uncensored lewd ero*ic description original description : tags provided:

I think the method " rewrite the "original description" below using the  "tags provided"  from an uncensored model " is the best, problem is that in my case, I need to captions overs 5000 images so it's gonna be long ^^ if you know a way to batch process this its would be awesome, you already give me a part of the code but Im not super familiar with coding :/

@elismasilva might add that , because really  image-interrogator is super underrated , and from a logical perspective , it can load any LLM just like Text-webui and more since  Text-webui  don't support most VLMs .
an option called rewrite using LLM would help a lot . heck even a batch processing of text using LLM will be huge , since none offers this option , and this whole project can evolve in a batch processing AI playground ,
things like :
batch processes Code correction/reduction  using deepseek coder
Batch processes  grammar and spelling check
batch processes  story writing ...
endless possibilities
@elismasilva really thank you for you great work . i know it's too much , but give it a try .

elismasilva might add that , because really image-interrogator is super underrated , and from a logical perspective , it can load any LLM just like Text-webui and more since Text-webui don't support most VLMs . an option called rewrite using LLM would help a lot . heck even a batch processing of text using LLM will be huge , since none offers this option , and this whole project can evolve in a batch processing AI playground , things like : batch processes Code correction/reduction using deepseek coder Batch processes grammar and spelling check batch processes story writing ... endless possibilities @elismasilva really thank your for you great work . i know it's too much , but give it a try .

would be awesome, that + the settings from Taggui ( screenshot I posted ) and we will have the best autocaptionner !

elismasilva might add that , because really image-interrogator is super underrated , and from a logical perspective , it can load any LLM just like Text-webui and more since Text-webui don't support most VLMs . an option called rewrite using LLM would help a lot . heck even a batch processing of text using LLM will be huge , since none offers this option , and this whole project can evolve in a batch processing AI playground , things like : batch processes Code correction/reduction using deepseek coder Batch processes grammar and spelling check batch processes story writing ... endless possibilities @elismasilva really thank your for you great work . i know it's too much , but give it a try .

would be awesome, that + the settings from Taggui ( screenshot I posted ) and we will have the best autocaptionner !

Please

elismasilva might add that , because really image-interrogator is super underrated , and from a logical perspective , it can load any LLM just like Text-webui and more since Text-webui don't support most VLMs . an option called rewrite using LLM would help a lot . heck even a batch processing of text using LLM will be huge , since none offers this option , and this whole project can evolve in a batch processing AI playground , things like : batch processes Code correction/reduction using deepseek coder Batch processes grammar and spelling check batch processes story writing ... endless possibilities @elismasilva really thank your for you great work . i know it's too much , but give it a try .

would be awesome, that + the settings from Taggui ( screenshot I posted ) and we will have the best autocaptionner !

@elismasilva 🙏

elismasilva might add that , because really image-interrogator is super underrated , and from a logical perspective , it can load any LLM just like Text-webui and more since Text-webui don't support most VLMs . an option called rewrite using LLM would help a lot . heck even a batch processing of text using LLM will be huge , since none offers this option , and this whole project can evolve in a batch processing AI playground , things like : batch processes Code correction/reduction using deepseek coder Batch processes grammar and spelling check batch processes story writing ... endless possibilities @elismasilva really thank your for you great work . i know it's too much , but give it a try .

Thanks friend, I would appreciate it if you could open a new topic and structure all these features by topics describing what is expected by the feature and a possible example so I can attack them one by one and release them in the next versions as soon as possible. It's not my daily routine to work with subtitles and prompts, so you have more experience than I do about important needs with these models. So it would help me a lot if I could simulate these scenarios during development so that I can meet expectations. I believe that a project only stays alive if we both work together, evolving and improving.

elismasilva might add that , because really image-interrogator is super underrated , and from a logical perspective , it can load any LLM just like Text-webui and more since Text-webui don't support most VLMs . an option called rewrite using LLM would help a lot . heck even a batch processing of text using LLM will be huge , since none offers this option , and this whole project can evolve in a batch processing AI playground , things like : batch processes Code correction/reduction using deepseek coder Batch processes grammar and spelling check batch processes story writing ... endless possibilities @elismasilva really thank your for you great work . i know it's too much , but give it a try .

would be awesome, that + the settings from Taggui ( screenshot I posted ) and we will have the best autocaptionner !
@elismasilva 🙏

you can contribute with topics like i asked to mr-lab too, thank you.

Have you already tested this model ? https://github.com/PKU-YuanGroup/MoE-LLaVA?tab=readme-ov-file
I want to know if it is good to add on image-interrogator.

Have you already tested this model ? https://github.com/PKU-YuanGroup/MoE-LLaVA?tab=readme-ov-file
I want to know if it is good to add on image-interrogator.

deepspeed  win issues ...


Rename hive.cache.parallel-warmup-enabled

the name hive.cache.parallel-warmup-enabled is not self-descriptive
property "description": https://github.com/prestosql/presto/issues/3494#issuecomment-619771104
cc @stagraqubole @losipiuk

maybe something like hive.cache.warmup-mode with possible values read-through, async would be better?
WDYT?

LGMT

@losipiuk can you please open a PR?

I will

@findepi: Can we drop support for hive.cache.parallel-warmup-enabled. Or do I need to implement logic which allows using both old and new property and only fail if both are explicitly set in uncompatible way?

i think we're early in the game, so we can drop


Add Visual Studio IntelliCode for the Coder Marketplace

Extension: https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode

Description
It will be great if the Visual Studio IntelliCode can added to the Coder Marketplace. I have tried download vsix file and install manually and it works great.
By the way, how does the Coder Marketplace sync extension up to date with VS Code MarketPlace? Because I saw lots of outdated extensions in the Coder Marketplace.

@zenof as stated before, any closed source extensions cannot be added to Coder. We can only add open source extensions on the registry.


SampleRate parameter in bw64 constructor is uint16

Hi, I noticed when writing out 96khz audio data that the samplerate metadata in the .wav file ended up wrong - looks like the culprit is the samplerate parameter being passed into the Bw64Writer constructor as a 16-bit unsigned int. I think in the bw64 helper wrapper function there is the same issue.
https://github.com/IRT-Open-Source/libbw64/blob/3a43f909f7e8f6bef93403816e9b73b8bfa5a133/include/bw64/writer.hpp#L49

Thanks for the bug report. Could you have a look at this PR https://github.com/IRT-Open-Source/libbw64/pull/14

PR looks good thanks


COOK-4672 - Update library so it can be used in other libraries

Can we see about getting this merged @jtimberman and @spion06 ?
Running into this trying to do some library refactoring.

I rebased this and it's on master, 04747260ff4ea0ccb769ba4c5b0bda784e331899

thanks @jtimberman and @martinisoft. I forgot about this pull

No problem. Thanks for contributing as I was looking to do this myself the other day and then remembered this PR :smile_cat: @spion06


internal/eval: apparent cycle not reported

What version of CUE are you using (cue version)?

$ cue version
cue version +ecb17c94 linux/amd64

Does this issue reproduce with the latest release?
Yes
What did you do?
Created off the back of investigation as part of https://github.com/cue-lang/cue/discussions/1134.
! exec cue eval ./sub

-- cue.mod/module.cue --
module: "mod.com"
-- resource.cue --
package ocp

deployment: [_]: {
	apiVersion: "apps/v1"
	kind:       "Deployment"
	spec: {
		template: spec: containers: [...{
			_env: [string]: string | {}
		}]
	}
}

for k, v in deployment {
	for c in v.spec.template.spec.containers {
		if len(c._env) > 0 {
			deployment: "\(k)": spec: template: spec: containers: [ {
				env: [
					for x, y in c._env {
						if (y & string) != _|_ {name: x, value: y}
						if (y & {}) != _|_ {name: x, y}
					},
				]
			}]
		}
	}
}
-- sub/kibana.cue --
package ocp

_kibana: "its/elk-logging": _

_kibana: [ID=_]: _

for id, v in _kibana {
	deployment: "\(id)/kibana": {
		spec: template: spec: {
			containers: [{
				image: "cicd-docker.repository.irisnet.be/kibana"
				name:  "kibana"
				_env: XPACK_MONITORING_ENABLED: "True"
			}]
		}
	}
}

My understanding is that the above test should pass, because the cue eval call should fail because the definition of the containers field is in effect cyclic. However, the test fails because the cue eval call does not fail:
> ! exec cue eval ./sub
[stdout]
deployment: {
    "its/elk-logging/kibana": {
        apiVersion: "apps/v1"
        kind:       "Deployment"
        spec: {
            template: {
                spec: {
                    containers: [{
                        image: "cicd-docker.repository.irisnet.be/kibana"
                        name:  "kibana"
                    }]
                }
            }
        }
    }
}
FAIL: /tmp/testscript626113823/repro.txt/script.txt:1: unexpected command success

What did you expect to see?
The test to pass.
What did you see instead?
As above.

Could you please specify where you believe the cycle should be? I don't see one, tbh, but I may be missing something.
I'm coincidentally working on a clarification/update in the spec to be more specific about what kind of cycles are allowed in comprehensions.

This is indeed a close call. The first comprehension inserts fields in the same struct over which it iterates. However, it doesn't invoke cycle detection because 1) it doesn't introduce new fields, and 2) it doesn't use v, so guaranteeing it won't trigger the evaluation of fields that later get specialized.
Note the first comprehension could be written something like (includes what I think is a bug fix in your example):
deployment: [string]: spec: template: spec: containers: [...{
	_env: _
	if len(_env) > 0 {
		env: [
			for x, y in c._env {
				if (y & string) != _|_ {name: x, value: y}
				if (y & {}) != _|_ {name: x, y}
			},
		]
	}
}]

which may help to understand why this is not a cycle.

Not a cycle.


Connection pool has no free slots after first 100 req, are there tricks to debug such problems

I have a similar issue to #171 where i bench 100 concurrent requests against my api, which is using gorethink default options, which run to completion, then i run another 100 and it errors out. Looking at the rethink log, it says that there are no free request slots, a sample of my log output is as follows
DEBU[0033] No conns free, opening new connection         maxOpen=0 numFree=0 numOpen=0
DEBU[0033] Opened new connection                         numFree=0 numOpen=1
DEBU[0033] Released connection                           numFree=0 numOpen=1
[GIN] 2015/07/12 - 10:22:46 | 200 |   16.345473ms | <IP_ADDRESS>:55090 |   GET     /get_storage_schema
10:22:49.431428 WRN resource.service gorethink: no connections were available
   in: func.030(service/service.go:690)

If i wait a few seconds before running the next 100 bench requests, they complete. I'm putting a bunch of stack traces to see what part of my code is opening and not leading to an automatic close.
Can anyone suggest a way to debug issues like this. My api uses a general store api for accessing rethink as shown here https://gist.github.com/osiloke/36ab27c652c3c618f834. According to the docs, all the functions used should auto close. Maybe there's away to see what request is holding the connection? i.e the actual http request

I realized my problem after reading this, https://groups.google.com/forum/#!topic/rethinkdb/ETxn-FkeuM0. I was trying to dynamically create tables. The create table operation is a heavy process even if the table already exists. So it was holding up the connection.

Are you still having this issue @osiloke?
Also I am a little confused as to why you can only use 100 connections if the MaxOpen option was not set (In your logs MaxOpen=0). Are there any other errors/warnings from GoRethink?

Nope, don't have this error anymore. Sorry, i copied the logs for different setting.
Basically, the createtable call made everytime a request is made to check if the table existed was holding up the connection because it's such a long process and hence was tieing up resources.
I'll close the issue, thanks


fix GEARPUMP-141 , remove useless method

GEARPUMP-141
In external-hbase module , writeObject and readObject seems never used . We can remove this methods .

@darionyaphet these are not useless methods but for custom java serialization/deserialization.


Related Projects?

Sorry if this is not appropriate for an issue, but I am wondering if there are any h2-based servers out there. For example, a complete HTTP server implementation.
If there are any known related projects, how about adding a section to the README, the wiki or the docs?

This information is captured in the "used by" section on GitHub, however if you'd like to create a section in the documentation that's more curated I'd accept that PR.

This information is captured in the "used by" section on GitHub, however if you'd like to create a section in the documentation that's more curated I'd accept that PR.

Hypercorn, Twisted, and Daphne (built using Twisted) are the ones I know about.

Hypercorn, Twisted, and Daphne (built using Twisted) are the ones I know about.

HTTPX as well

HTTPX as well

Thanks! PR created with these suggestions: https://github.com/python-hyper/hyper-h2/pull/1243

Thanks! PR created with these suggestions: https://github.com/python-hyper/hyper-h2/pull/1243


Incorrect order ? with CairoMakie

This may be beyond your control, but using CairoMakie:
using Connectomes
using CairoMakie
using ColorSchemes

c = Connectomes.connectomepath() |> Connectome

#-

fig = Figure(resolution=(1200,600))
ax = Axis3(fig[1,1], aspect = :data, azimuth = 0.0pi, elevation=0.0pi)
hidedecorations!(ax)
hidespines!(ax)

for i in 1:83
    plot_roi!(i, get(ColorSchemes.viridis, rand()))
end

fig

I think this is a result of CairoMakie not being able to support 3d rendering, see here!


Make "Restart TS Server" available in multiroot workspaces

When installing/updating npm packages, the Typescript server (and hence the Intellisense feature) often fails to pick up the changes and needs to be restarted. Unfortunately, the "Restart TS server" command is not available in multiroot workspaces. Please make it available there as well.

It is enabled in multi-root workspace, but you have to be in a js/ts file

Why are you running this command by the way? You should never need to unless you re-install the workspace version of typescript itself. Please open a new issue if you find yourself having to restart the TS server manually

you have to be in a js/ts file

You're right, I diagnosed this wrong.

Why are you running this command by the way? You should never need to unless you re-install the workspace version of typescript itself.

Hmm, I was under the impression that when I npm install an additional dependency, the TS Server (sometimes?) fails to pick it up. But maybe I mis-diagnosed this as well.

Please open a new issue if you find yourself having to restart the TS server manually

Will do. Thanks for the explanation.


deps: update gyp repository location

The current gyp repository location is no longer valid and will only result in a stub project upon request.
><EMAIL_ADDRESS>ninja /home/paulfryzel/Workspace/learnuv
> ./gyp_learnuv.py -f ninja && ninja -C out/Debug $CURRENT_TARGET

You need to install gyp in build/gyp first. See the README.

This change updates that reference to the location suggested in their readme, fixing the gyp dep.
><EMAIL_ADDRESS>ninja /home/paulfryzel/Workspace/learnuv
> ./gyp_learnuv.py -f ninja && ninja -C out/Debug $CURRENT_TARGET

...
[2/2] LINK 01_system_info

Thanks merged: 3d6c1aef54dfd5de5d3cc9f26d9f9e7873bf1905


Humble Docker images need to build Humble branch of MTC

Building the Humble version of this repository requires the humble, not ros2, branch of MTC, since these branches have now diverged mainly due to underscores in class member names.
So, we likely need to bring in variants of the upstream.repos file and use the ${ROS_DISTRO} Dockerfile argument to help manage this.

The situation where you need to build Docker images for the Humble branch of the MoveIt Task Constructor (MTC) and that these branches have diverged due to naming conventions, specifically underscores in class member names.
Have you use build arguments in Dockerfile? In the Dockerfile, you can use build arguments (e.g., ${ROS_DISTRO}) to define different behaviors based on the ROS distribution
ARG ROS_DISTRO=humble

# Conditional logic based on ROS_DISTRO
RUN if [ "${ROS_DISTRO}" = "humble" ]; then \
      git clone -b humble https://github.com/your-org/mtc.git; \
    else \
      git clone -b ros2 https://github.com/your-org/mtc.git; \
    fi


tweak the 'show details' option for publication pages

i.e. this page
http://pombase2.bioinformatics.nz/reference/PMID%3A22182414

for GO I don't think we need an 'undetailed' view - just show the details?

for phenotypes I think we should show the gene column in the detailed view

partial overlap with #140

or GO I don't think we need an 'undetailed' view - just show the details?

For some references, that will be quite big. eg. http://pombase2.bioinformatics.nz/reference/PMID%3A25373780
Would that be OK?

for phenotypes I think we should show the gene column in the detailed view

I've added a genotype column.  Should we have a gene column too?

duplicate https://github.com/pombase/website/issues/140


Clarify docs regarding dynamic fields

  # The GELF full message. Dynamic values like `%{foo}` are permitted here.
  config :full_message, :validate => :string, :default => "%{message}"

  # The GELF short message field name. If the field does not exist or is empty,
  # the event message is taken instead.
  config :short_message, :validate => :string, :default => "short_message"

What is the difference between "%{message}" and "message"? Why do you use "%{message}" and "short_message"?
What is the best practice here?

It's confusing, so I'll try to clarify. It's likely we can improve the configuration of this plugin to make it more consistent.
The full_message setting supports formatted/sprintf values so you could do: full_message => "Hello, %{user}! Your message is %{message}." -- and the field values for 'user' and 'message' fields will be injected in place of things like %{user} etc.
The short_message setting takes a field name, not a formatted value. In this case, we are instructing Logstash to populate the GELF short_message field with the event field named short_message.
The differences between these two settings are confusing (one supports formatting, the other just wants a field name).
Does this clarify the current behavior?
I am open to making short_message support formatting. Thoughts?

Yes that helps, I would recommend to give short_message also formatting support.


MVP Paper Prototypes

Each member should create 3 paper prototypes per user/employee views. Then, these should be linked together on the Wiki.

I linked a public google drive to all the paper prototypes to all the images since github wiki is clunky


add OSS contribution guidelines and other helpful stuff

Including github issue/PR templates; code of conduct; contribution guideline; test setup docs etc.

https://github.com/knowledgefutures/general/blob/master/CODE_OF_CONDUCT.md


Send email return TRUE but no mail sent

What steps will reproduce the problem?
What's expected?
What do you get instead?
Additional info

Q
A

Yii version
<IP_ADDRESS>

Yii SymfonyMailer version
2.0.3

SymfonyMailer version
^5.4

PHP version
7.4.29

Operating system
ubuntu 18.04

If i change transport settings, always ->send() return true, also if i set xxx.xxx.xx. as host

The problem is that if i try:
        'mailer' => [
            'class' => 'yii\symfonymailer\Mailer',
        ],

```without transport settings, i have back TRUE too

We return false if the underlying library is failing for whatever reason. Looks like in your case it does not.

i'm debugging native code and i find this on BaseMailer.php
       ..
        if (array_key_exists('dsn', $config)) {
            $transport = $transportObj->fromString($config['dsn']);
        } elseif(array_key_exists('scheme', $config) && array_key_exists('host', $config)) {
            $dsn = new Dsn(
                $config['scheme'],
                $config['host'],
                $config['username'] ?? '',
                $config['password'] ?? '',
                $config['port'] ?? '',
                $config['options'] ?? [],
            );
           ..

So probably if you set Transport param "dns"  it doesn't take your host/username/password/port/etc.. params
But in the official README.md Example there are all params together: https://github.com/yiisoft/yii2-symfonymailer#usage

During implementation, I tried to maintain backward compatibility with the yiisoft/yii2-swiftmailer. If you are using DSN, then the password must be contained in it.

Note that if you don't specify a transport, a default NullTransport is used and no email is actually being sent. This is different from yiisoft/yii2-swiftmailer that defaults to Sendmail.

Likely that means that shout01.ot-mail.it accepted it without problems but did not sent it or that DKIM/SPF on that server aren't set correctly so there's delivery problem.

I have a similar if not same problem, trying to use the smtp or smtps transport.  Neither will work correctly.  Does the Symfony Mailer expect to have message bus or something?
I setup my config to be able to switch between Swift or Symfony with appropriate settings.  Swift works fine, Symfony does not return false, but I don't get the emails.
So I tried using a complete fake host and, again, it does not return false.
Please note that I am extending the \yii\symfonymailer\Mailer and \yii\symfonymailer\Message - but I do the same with Swift.  They are very "thin" and are extended to handle changing the "to" for testing and to add in "useDisplayTransport".
The useFileTransport and useDisplayTransport work fine for both Swift and Symfony.

@ FedericoBenedetti1976
You are correct.  If there is a 'dsn' key in the transport config, then the rest is ignored.  So either use a 'dsn' or set up the transport with the proper 'scheme', 'host', etc.
Also, note that the 'scheme' is used by Symfony to choose which Transport Factory to use.  'smtp' and 'smtps' will use the EsmtpTransportFactory to create an EsmtpTransport.

https://github.com/yiisoft/yii2-symfonymailer/blob/master/src/Mailer.php#L213

The "Exception" from Symfony is a Throwable:
namespace Symfony\Component\Mailer\Exception;
/**
 * Exception interface for all exceptions thrown by the component.
 *
 * @author Fabien Potencier<EMAIL_ADDRESS> */
interface ExceptionInterface extends \Throwable
{
}

$this->getSymfonyMailer()->send($message); is supposed to return a SentMessage object.  But when I put in code to inspect that - the code is never reached as far as I can tell.  ->send() never returns...
I do not have the debug module set up - will try again with that.

So far I've traced this to the get method for $this->encryptor - it's not returning.  The code never gets to the try catch...

OK - Mailer -> sendMessage needs to catch \Throwable to handle Symfony Mailer exceptions.

I'm not sure why the Mailer would be extended though, I'm skeptical it's the right approach.
Regardless, I think this can be closed right?

Yes.  Sorry for not getting back to this sooner.  It was resolved by your pull request, "Code cleanup."  Thanks for all your work on this!


Allow for dynamic repos to be checked out

I'm creating dynamic repo with no name, which I am then tracking using their pids. I'm doing this to support a multi database multi tenancy. When trying to check them out in sandbox for testing, it turns out that the only option for the repo is to be an atom, however, lookup_meta support repo name or pid.
Before I delve any deeper into testing this and doing the same for check_in, does this even make sense?

Yup! Please go ahead with said changes!

Note #260 is relevant here and can help with writing the tests!

:green_heart: :blue_heart: :purple_heart: :yellow_heart: :heart:


unable to run hvcc

Thanks for making these packages!
When I try to run hvcc, I get:
❯ hvcc
Traceback (most recent call last):
  File "/nix/store/8glm7n36wwj1h6gxj7ck8y422g700bxp-python3.12-hvcc-v0.12.1/bin/.hvcc-wrapped", line 6, in <module>
    from hvcc import main
  File "/nix/store/8glm7n36wwj1h6gxj7ck8y422g700bxp-python3.12-hvcc-v0.12.1/lib/python3.12/site-packages/hvcc/__init__.py", line 31, in <module>
    from hvcc.generators.c2daisy import c2daisy
  File "/nix/store/8glm7n36wwj1h6gxj7ck8y422g700bxp-python3.12-hvcc-v0.12.1/lib/python3.12/site-packages/hvcc/generators/c2daisy/c2daisy.py", line 10, in <module>
    from ..types.meta import Meta, Daisy
  File "/nix/store/8glm7n36wwj1h6gxj7ck8y422g700bxp-python3.12-hvcc-v0.12.1/lib/python3.12/site-packages/hvcc/generators/types/meta.py", line 2, in <module>
    from pydantic import BaseModel, HttpUrl
ModuleNotFoundError: No module named 'pydantic'

Any idea what is going on?

Nevermind, I just noticed that I'm using an outdated version of your repo: https://github.com/nix-community/nur-combined

I now installed the version from your repo and ran intpo a weird issue:
I'm trying to compile a simple test patch (osc~ 440 -> dac~) to dpf.
I get:
hvcc Patches/test-osc.pd -g dpf -o builds -v
--> Generating C

=== Signal Order ===
__phasor_k~f {frequency:440.0 phase:0.0}
__var_k~f {k:0.5 step:0 reverse:False}
__sub~f
__abs~f
__var_k~f {k:0.25 step:0 reverse:False}
__sub~f
__var_k~f {k:6.283185307179586 step:0 reverse:False}
__mul~f
__mul~f
__mul~f
__mul~f
__var_k~f {k:0.007833333333333 step:0 reverse:False}
__var_k~f {k:-0.166666666666667 step:0 reverse:False}
__fma~f
__fma~f
__add~f
__add~f
AVX: 58.0 cycles / 7.25 cycles per frame
     512 frames @ 1000MHz >= 3.71us
SSE: 55.0 cycles / 13.75 cycles per frame
     512 frames @ 1000MHz >= 7.04us
CPU% #Objs Object Type      Performance
==== ===== ================ ===========
22%  1     __phasor_k~f     Counter({'avx': 13, 'sse': 10})
 4%  5     __var_k~f        Counter({'avx': 2.5, 'sse': 2.5})
10%  2     __sub~f          Counter({'avx': 6, 'sse': 6})
 0%  1     __abs~f          Counter({'avx': 0.5, 'sse': 0.5})
34%  4     __mul~f          Counter({'avx': 20, 'sse': 20})
17%  2     __fma~f          Counter({'avx': 10, 'sse': 10})
10%  2     __add~f          Counter({'avx': 6, 'sse': 6})
--> Generating DPF plugin
  1) Error c2dpf: [Errno 13] Permission denied: '/home/bart/Documents/plugdata/builds/plugin/source'
Total compile time: 190.37ms

So I tried:
chmod -R 777 builds/
ls -al builds/plugin/
total 23
drwxrwxrwx 2 bart users    3 Jan  1  1970 .
drwxrwxrwx 6 bart users    7 Nov 13 14:26 ..
-rwxrwxrwx 1 bart users 1071 Jan  1  1970 README.md

but on the next run of hvcc, I get the same error.

Try the -o <path> argument.
I had a similar issue when trying to compile https://github.com/MikeMorenoDSP/LIRA-8 some time ago but gave up thinking it's either user error (I barely have any experience with PD) or the usual Nix store path shenanigans. Tried again just now and specifying the output directory seems to work fine.

Scratch that, I noticed just now that you actually did use the -o argument. I only checked compiling to C before and tried DPF now. I tried running hvcc straight from the cloned repo through Poetry without Nix and it seems to work just fine. So it is a packaging issue after all.

In the meantime I've installed a debian distrobox, and was able to compile a working binary using that.
Not ideal, but at least it works!

I had a similar issue when trying to compile https://github.com/MikeMorenoDSP/LIRA-8 some time ago

LIRA-8 is incompatible with the Heavy Compiler.

Thanks! I couldn't tell from your reply: have you tried compiling a dpf using your package?

Do you mean generating a DPF plugin with hvcc? In that case no, since I'm running into the same permissions issue. Compiling to C works fine, though.

I had a similar issue when trying to compile https://github.com/MikeMorenoDSP/LIRA-8 some time ago

LIRA-8 is incompatible with the Heavy Compiler, so that likely failed for a very different reason.

Thanks for the heads up. I hadn't reached that "different reason" though, since I was unable to compile a DPF plugin from hvcc in the first place.

OK, good to know it's not just my system.
Now how could we try to figure out the root cause?

At first I thought it may be related to a DPF git submodule but hvcc does not create git repositories and requires you to supply DPF yourself. I'm not at all familiar with the inner workings of hvcc, so @dromer is our best bet for now.

@dromer is our best bet for now.

Well, they (rightfully) point out that this seems to be a NixOS issue, and they are not familiar with it's inner workings...
¯_(ツ)_/¯

@bandithedoge it's definitely something that has only been reported on NixOS.
What is odd that it only happens after the other code generation steps are already done.
This is where I think it's going wrong: https://github.com/Wasted-Audio/hvcc/blob/develop/hvcc/generators/c2dpf/c2dpf.py#L68


Error when running rollbar-agent service

I'm trying to use rollbar-agent for asynchronous log reporting for php project (Using Codeigniter framework).
Whenever I try to start the rollbar-agent service below error is logged in /var/log/rollbar-agent.log
/usr/bin/python: can't find '__main__' module in '/usr/local/rollbar-agent'
Can anyone help me out?

This tells us Python can't find the rollbar-agent entry point to execute. There are a few reasons this could be.

The symbolic link path is incorrect https://github.com/rollbar/rollbar-agent#set-up-the-rollbar-agent-service.
There was an error setting up the virtual environment. If some of the files were not copied correctly, that could result in that issue.

If you run ls in your terminal inside the virtual environment directory you should see the following files from rollbar-agent.
LICENSE
requirements.txt
rollbar-agent
rollbar-agent-init.sh
rollbar-agent.conf

To test it you should be able to test the agent is running by following these steps...

Activate the virtual environment. source ./<venv name>/bin/activate should do the trick.
Start the agent manually python rollbar-agent. You may need to run with escalated permissions.
Once you are done you can deactivate the virtual environment with the deactivate command.

Thank you for replying @danielmorell !!
I'm not using virtual environment.
When I tried running python rollbar-agent it worked perfectly, Application error log files were getting parsed and I received the Rollbar notifications over email as well.
But when I start the Rollbar service using service rollbar-agent start , Application error logs are not getting parsed and same error which I mentioned in above question is getting logged in  /var/log/rollbar-agent.log

What do you get when you run...
$ service rollbar-agent status

I am going to close this issue due to inactivity.


Use this image in a singularity container

Dear Henry,
First of all thanks a lot for supplying this amazing image. I tried it in docker and it works great. However, I could not get it to work in singularity. I tried using the following command to make it work:
singularity build test.simg docker://nvcr.io/henry2423/ros-x11-ubuntu:kinetic
When I do this I get the following error:
WARNING: Authentication token file not found: Only pulls of public images will succeed
INFO:    Starting build...
FATAL:   While performing build: conveyor failed to get: error getting username and password: error reading JSON file "/home/ricks/.docker/config.json": error unmarshaling JSON at "/home/ricks/.docker/config.json": unexpected end of JSON input

I tried authenticating myself but I think the error comes from the fact that your image is currently not available in the nvcr.io repository.
Can you maybe give me some advice on how to run your image in singularity instead of docker.

Ah I got it to work after reinstalling both singularity and docker. I now only have the following errors when i run gazebo in the image.
[21:35:18] ricks@ricks-HP-ZBook:~/singularity $ singularity run --nv test.simg bash: xhost: command not found [21:35:23] ros@ricks-HP-ZBook:~/singularity $ gazebo terminate called after throwing an instance of 'std::runtime_error'   what():  locale::facet::_S_create_c_locale name not valid terminate called after throwing an instance of 'std::runtime_error'   what():  locale::facet::_S_create_c_locale name not valid


Expose connection metadata in HTTP::Server::Context

With #5776 upcoming, HTTP::Server can listen on multiple networks sockets - and even without that, it would be useful for a handler to be able to access information about the network connection used to process.
My initial idea was to expose the socket as Context#socket but that would also allow to take over the IO which should be avoided (there's Response#upgrade for that).
There really just needs to be access to metadata about the socket, for example local_address and remote_address (note that remote_address is not particularly useful to identify the actual client's IP because of proxies and whatnot).
I don't know if there would be any other useful data.
We could think about encapsulating the values in a struct like Socket::Metadata but I'm not sure it's worth adding another type for just two data points.
A question is whether to expose it: on Context or Response. I'd say the most logical place would be Context as it relates to both request and response. On the other hand, other network related features (such as the mentioned #upgrade as well as #close) are on Response.
Another issue is how to implement it. It could either be just delegates to the Socket instance. this would be easy in Reponse because the network socket is already available internally as @io. For Context it would either need access to Response's internal io or store a reference to the socket itself. A different solution would be to just copy the values to the Context (or Response) instance.
And the third question I'm not sure about, how this should behave when no network connection is involved (for example in specs that don't go through the network stack). Should it just return nil or a default value like the loopback address (but what would that be for Unix sockets?).

I've looked at some other API's and I found a nice addition in Java's ServletRequest: It has methods named getServerName() and getServerPort() which expose the values from the Host header if available and default to the local address.
Go's http.Request similarly has a Host property which is either the value of the Host header or the host included in the request URI. It may or may not include a port.

It should conceptually be on Request instead of Response, Context should continue holding just a request and response.

@RX14 Having it on Request would mean, these methods were also exposed in a client context, because this class is used as representing a request both in the client and server. A client request can't have any network connection data unless it is modified when it is being sent over a network connection. And it would still probably need different implementations for client and server context.
There are separate Response classes for client and server, which makes it far more easily to incorporate access to connection data into the server response. Conceptually, this is not great, I agree.
But I don't think we can implement this with a sane API unless we had a separate server Request type.

Which is why I said more than a year ago now we shouldn't use the same class for client and server requests. We either should have 2 or 4 classes: HTTP::Request and HTTP::Response or HTTP::{Client, Server}::{Request, Response}. This weird middle ground is hacky.

See also #1722 and #453

#7610 finally added HTTP::Request#remote_address to retrieve the remote (i.e. client) address of an HTTP request from a server context. So the most requested feature has arrived. But there is more.
With HTTP::Server being able to listen on multiple interfaces, it might be interesting to expose information on the local interface as well. There could be #local_address in the same manner. But I'm not sure whether that's worth it, storing the address in every request when it's only very rarely useful.
I don't think there is currently any means to discover whether a request was made over TLS or not. This has probably more relevant use cases. For example, when the server has interfaces for both HTTP and HTTPS, a handler might restrict some behaviour depending on whether its encrypted or not (for example form submissions, login cookies etc.). This would be similar to the X-Forwarded-Proto header.

#7610 finally added HTTP::Request#remote_address to retrieve the remote (i.e. client) address of an HTTP request from a server context. So the most requested feature has arrived. But there is more.
With HTTP::Server being able to listen on multiple interfaces, it might be interesting to expose information on the local interface as well. There could be #local_address in the same manner. But I'm not sure whether that's worth it, storing the address in every request when it's only very rarely useful.
I don't think there is currently any means to discover whether a request was made over TLS or not. This has probably more relevant use cases. For example, when the server has interfaces for both HTTP and HTTPS, a handler might restrict some behaviour depending on whether its encrypted or not (for example form submissions, login cookies etc.). This would be similar to the X-Forwarded-Proto header.

Nginx can pass a header with the schema used to connect. Of course this isn't something Crystal's HTTP Server can do for you. But if you need this functionality now, it is available by means of a reverse proxy like Nginx (which given the amount of testing in production, among other factors https://stackoverflow.com/a/50522656 (answer discusses Ruby and Puma, same concepts apply with Crystal), you should be using in front of Crystal's application server)

I don't think there is currently any means to discover whether a request was made over TLS or not. This has probably more relevant use cases.

Bumping this.  A use case I have is for generating URLs to a given route, which could be an absolute URL including the scheme/hostname.  I think ideally I would use the scheme of the original request, but alas I'm not able to determine that.

As a follow up to my last comment, can someone confirm the way to determine if a request was HTTP or HTTPS essentially to use X-Forwarded-Proto from a trusted proxy and just default to HTTP? I'm not missing something here? As from what I can tell that seems to be true.


Submit all changes in this repo as PRs to the chatterbox fork, and to upstream chatterbox

Closing since we decided to no longer fork chatterbox.


Filter in tables throw internal server error

I have been trying to use the orderBy filter inside tables but its not working and show me internal server error.
Is this feature not implemented yet ?
Edit:
I am running express-admin inside my exisiting express application with mounting the express-admin app by providing root parameter.
But when I installed express admin as without mounting the filter is working.
Do you know whats the issue? or Am I missing something?

That feature is definitely implemented and tested, not sure what may be the issue in your case though.


cadcad 0.4.28 fails to install with python 3.10.4.

Trying to install cadcad with pip3 fails.
🐍(cadcad-explorations) ygg@pop-os ~/Workspace/LongtailFinancial🚀/cadcad-explorations [main]× 🏂 python3 --version                                                                1 [10:15:21]
Python 3.10.4
🐍(cadcad-explorations) ygg@pop-os ~/Workspace/LongtailFinancial🚀/cadcad-explorations [main]× 🏂 pip3 install cadcad                                                                [10:15:24]
Collecting cadcad
  Using cached cadCAD-0.4.28-py3-none-any.whl (60 kB)
Collecting dill
  Using cached dill-<IP_ADDRESS>-py2.py3-none-any.whl (95 kB)
Requirement already satisfied: pytz in /home/ygg/.virtualenvs/cadcad-explorations/lib/python3.10/site-packages (from cadcad) (2022.1)
Requirement already satisfied: six in /home/ygg/.virtualenvs/cadcad-explorations/lib/python3.10/site-packages (from cadcad) (1.16.0)
Collecting fn
  Using cached fn-0.4.3.tar.gz (38 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [12 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-o16ii1zh/fn_bbdebdebb17c42718299adfcbc03ecf0/setup.py", line 6, in <module>
          import fn
        File "/tmp/pip-install-o16ii1zh/fn_bbdebdebb17c42718299adfcbc03ecf0/fn/__init__.py", line 1, in <module>
          from .stream import Stream
        File "/tmp/pip-install-o16ii1zh/fn_bbdebdebb17c42718299adfcbc03ecf0/fn/stream.py", line 9, in <module>
          from .iters import map, range
        File "/tmp/pip-install-o16ii1zh/fn_bbdebdebb17c42718299adfcbc03ecf0/fn/iters.py", line 2, in <module>
          from collections import deque, Iterable
      ImportError: cannot import name 'Iterable' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

This worked for me:
git clone --branch python3_10 git@github.com:kapulkin/fn.py.git
cd fn.py/
python setup.py install

Then
pip install cadCAD==0.4.28

succeeded.

Thanks @chuck-h that worked for me too. Seems like fn should be added to requirements for cadcad.

In case anyone working with a requirements.txt file, having the following lie before cadcad works for me.
In requirements.txt:
...
https://github.com/kapulkin/fn.py/archive/refs/heads/python3_10.zip
...

Then:
pip3 install -r requirements.txt

Fix submitted at PR 309: https://github.com/cadCAD-org/cadCAD/pull/309

Fixed at PR #309


Axes scale

The scale of the axes seems hard to fix in the simulation app. For correct positioning of the cells, the ratio between x and y axes should be sqrt(3)/2.  I've now used the command
set(ax, 'PlotBoxAspectRatioMode', 'manual');
set(ax, 'PlotBoxAspectRatio', [1+2*d sqrt(3)/2+2*d 1]);
when initializing the lattice. However, this does not always seem to work and resizing the window sometimes have bad effects.

Instead of imposing a rigid scaling between x and y, we let the aspect ratio be unspecified to allow for better scaling with window size changes. Note that the distances in the horizontal and vertical directions do not have the same scale in this way, but this is likely fine.