text:
feat: add utilities for server sent events

🔗 Linked issue
https://github.com/unjs/h3/issues/477

❓ Type of change

[x] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[x] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

This PR adds utilities for server sent events. This enables developers to easily create endpoints that return an event stream as outlined here
The new utilities can be used like so:
eventHandler((event) => {
  const eventStream = createEventStream(event);

  // start sending the stream to the client
  eventStream.start();

  // send a message every second
  const interval = setInterval(() => {
    await eventStream.push({data: 'hello world'});
  }, 1000)

  // cleanup when a client disconnects
  eventStream.on('disconnect', () => {
    clearInterval(interval);
  })
})

Other Changes
Unit tests have been added to tests these new features
The README.md has been updated to include the createEventStream utility in its utility list.

📝 Checklist

[x] I have linked an issue or discussion.
[x] I have updated the documentation accordingly.

One thing that I'm kind of iffy on is whether it's better to explicitly start sending the stream to the client with eventStream.start() or whether we should just automatically start sending the stream to the client when createEventStream() is called.
Right now I think being more explicit is better, but I'm open to differing opinions on this.

just my personal thoughts.
I think start() only makes sense if

have pause() / stop()
flush() if you will buffer any unsent events

and these control flows should inside Apps not transports.
how about provide a utility controlling state?
const bSSE = buffered(createEventStream(event))

setInterval(() => bSSE.push({}), 100)

let started = true
setInterval(() => {
  (started = !started) ? (bSSE.start(), bSSE.flush()) : bSSE.stop()
}, 1000)

// transmit every other second

@arily thanks for the input. It's made me reevaluate how this API should be structured.
Right now start isn't a control flow thing. It's being used to send the stream to the client. I only put it in there because I think people might not want the stream to be immediately sent as the response. Technically, you can still access the stream with eventStream.stream so people could call sendStream(event, eventStream.stream)  instead of start and essentially get the same result.
However this all has made me think that naming the method start might be wrong. Maybe something like eventStream.init() would be better since it doesn't have any overlap with control flow concepts such as pause and stop?
Although this has made me realize that it may be even better to make a separate utility for returning the eventStream to the client. For example something like sendEventStream(event, eventStream). This would also be in-keeping with some of the other H3 utilities. (ex: sendStream, sendWebResponse, sendNoContent, sendError, and send) so it has that added benefit.
We could also add logic allowing devs to simply return an eventStream inside a handler and H3 would just take care of it like it does with streams and web responses.
So basically the adjusted API would look like this:
// using the send utilty
eventHandler((event) => {
  const eventStream = createEventStream(event);
  setInterval(() => {
    eventStream.push("hello world");
  })
  sendEventStream(event, eventStream);
}

// using a simple return
eventHandler((event) => {
  const eventStream = createEventStream(event)

  setInterval(() => {
    eventStream.push("hello world")
  }, 1000)

  return eventStream;
})

I do like the idea of pause, resume, and flush methods though. It could be worth implementing them.

Ah sorry my wording might not be accurate, by "control flow" I mean control the start/ stop of the flow of transmitting event.

Yes I think I was following you. It was my own usage of start() as a method name that was confusing.
We need to return the eventStream to the client (which is what start() did before). Then we also need to be able to stop() and start() writing data to the stream itself, which I believe is what you were referring to.
By making a separate sendEventStream() utility I think that makes it clearer as to what is happening.

I went ahead and implemented the new API. It looks like this:
eventHandler((event) => {
  const eventStream = createEventStream(event)
  setInterval(async () => {
     await eventStream.push("Hello world")
  }, 1000)
  return eventStream
})

I think it feels more clear this way.
I also implemented the pause(), resume(), and flush(). The semantics of the exact naming can probably be changed but here's a video of the functionality in action:
Screencast from 12-30-2023 12:42:06 AM.webm

Very nice! Just another thought, I think for GC to properly recycle any streams we are done for, or to terminate the connection before client does, we may need a close() method too, just like other streams.
https://developer.mozilla.org/en-US/docs/Web/API/WritableStream/close
https://developer.mozilla.org/en-US/docs/Web/API/WritableStreamDefaultWriter/close

Yeah so I've already implemented a end() method which terminates the connection before the client does. I'm unsure of whether I need to manually close the stream in addition to this or not. I'll investigate further to confirm when I get the chance.

I've published the changes I've made here as a standalone npm package in case anyone wants to make use of the changes now
https://github.com/joshmossas/h3-sse
I'll be maintaining this repo until native SSE support comes to H3. (Either by this PR getting merged or some other change)

Hi dear @joshmossas thanks so much for putting all efforts on this!
I quickly checked implementation it is flawless and nice! I have made few refactors out of my instincts in order to move this forward as fast as possible.

Utils are refactored to sse/ with just one createEventStream util exposed
Usage is return eventStream.send() in the end. I know it is less intuitive. This allows to move faster without adding direct handlers to the core matcher for now. Eventually we might do this.
I have enabled autoclose by default (haven't found a reason why not to) and it can be opted-out with { autoClose: false } option.
Close hook is via onClosed and registers both handles. I found it easier to recommend people use one trustable hook for cleanup.
Docs are autogenerated from jsdocs into advanced section, later I might add it to better place below WebSocket section.
Util marked as @experimental mainly because platform support is not tested but I'm positive it is a really good implementation.

Thinking to merge and try on nightly but please consider my changes blind changes and feel free to suggest any amends or make subsequent PRs.

Awesome thank you so much @pi0 . I was honestly thinking of enabling autoclose by default as well, so I'm glad you thought the same.
I agree onClosed being the only hook for cleanup is much nicer. My only concern is that means it'll fire twice correct? Once for the writer closing and once for the request closing. I think that could prolly lead to some unexpected side-effects.
I suppose the solution is to make the internals for onClosed a bit smarter. I'll have to think about what exactly that would look like though cuz there's prolly some iffy edge cases.

Or maybe we just make it so onClosed doesn't register a callback on this._h3Event.node.req.on('close') at all.
Here me out. The default is now the writer will automatically close when the request closes. So if someone chooses to opt out of autoclose they have already opted to do more work themselves anyway. So maybe in those cases we just tell them they need to register a hook on event.node.req.on('close') if they want to respond to the request. This is what you normally have to do anyway so I don't think i's actually that big a deal.

authors: arily joshmossas pi0


text:
fix: support group-data variant

fix #2827

@zyyv Hi, Chris. Can you help to check the test cases? I have not idea about how to fix them. :D

@zyyv Hi, Chris. Can you help to check the test cases? I have not idea about how to fix them. :D

ok, let me check it.

@zouhangwithsweet hi, I haven't checked the cause of the error in the test yet. But I think this PR change is too targeted. We should enhance taggedPseudoClassMatcher to support more modifiers.
https://tailwindcss.com/docs/hover-focus-and-other-states#styling-based-on-parent-state

@zouhangwithsweet hi, I haven't checked the cause of the error in the test yet. But I think this PR change is too targeted. We should enhance taggedPseudoClassMatcher to support more modifiers. https://tailwindcss.com/docs/hover-focus-and-other-states#styling-based-on-parent-state

Agreed! Maybe I need more time to understand source code.

I found that group-[[data-state=open]]:text-red-400 is supported.
Just change group-data-[state=open]:xx to group-[[data-state=open]]:xx. :D

Test is failing, can you have a look?

source: gharchive/pull-request

authors: antfu zouhangwithsweet zyyv

repo: unocss/unocss

license: MIT

license_type: permissive

license_source: github-api


text:
🛑 Unraid Docs is down

In cf72b3d, Unraid Docs ($URL_UNRAID_DOCS) was down:

HTTP code: 403
Response time: 201 ms

Resolved: Unraid Docs is back up in 6f6adf4.

source: gharchive/issue

repo: unraid/status


text:
Duplicate line in README

This line is repeated twice.

Oh nice spotting it! Didn't even notice it lol!

Fixed this with the latest quick fix! I'll credit you in the next release! Thanks again!

repo: unslothai/unsloth


text:
Fix Current Tests

The new app structure enables additional testing against different versions of Django and Python. Fix the tests so that all the current tests pass with Django 1.7, which is the version the dev environment uses.

Reopening this issue. Stubs need to not have a name_id defined for them. Instead, they should let the TicketingManager take care of that.
Removing the explicit name_id provides a better representation of the actual models.
Tests are now failing again, without explicit name_ids

repo: unt-libraries/django-name

license_source: bigquery


text:
future authentication plan

build up a sign up function in Django admin website, and register the user to firebase.
build a function to give users different levels of access to the admin website after registration.

Duplicate issue on repository Admin-CANBeWell #1


text:
Moving function(1) resource to v1beta1 version

Moving function 1 resource to v1beta1 version

[ ] azurerm_function_app_hybrid_connection

Require the following resources which are not supported yet:

azurerm_windows_function_app_slot
azurerm_linux_function_app
azurerm_windows_web_app
azurerm_relay_hybrid_connection

azurerm_function_app_hybrid_connection fails because of the dependency on azurerm_relay_hybrid_connection:
autorest/azure: Service
      returned an error. Status=400 Code=\"MessagingGatewayBadRequest\" Message=\"<Error>400<Detail>Incorrect
      request Uri format. To know more visit https://aka.ms/sbResourceMgrExceptions.
      TrackingId:c307d6be-b45f-4415-94d3-9682d9a790cf_G49, SystemTracker:hybridconn-ns.servicebus.windows.net:%3Cno%20value%3E,
      Timestamp:2023-02-09T11:00:31</Detail></Error>\":

There seems to be a bug in TF documentation:
resource "azurerm_function_app_hybrid_connection" "example" {
  function_app_id = azurerm_windows_web_app.example.id
  relay_id        = azurerm_relay_hybrid_connection.example.id
  hostname        = "myhostname.example"
  port            = 8081

function_app_id should point to FunctionApp (windows or linux). Instead it references WebApp.
I've referenced the correct App type in config and it seems to be working fine.

authors: kdibrov steperchuk

repo: upbound/provider-azure


text:
Expose more context around errors

What problem are you facing?
See https://github.com/crossplane-contrib/provider-terraform/issues/24 and https://github.com/crossplane-contrib/provider-terraform/issues/61 in the old repo
Currently, we are frequently missing the context in the errors exposed in the event stream and it seriously complicates the debugging; see recent example in slack
How could Official Terraform Provider help solve your problem?
Find a way to provide more context. It can take different/multiple forms:

More verbose Event messages with context included
Writing the log somewhere in the pod and exposing and documenting clear guidance on where to find it
Find more consistent way to expose the logs, see https://github.com/crossplane-contrib/provider-terraform/issues/61

Is this fully resolved by #124?

This is probably a duplicate of #37 - @ytsarev , ok to close as a dup?

Totally, thanks for the catch.

authors: bobh66 mbbush ytsarev

repo: upbound/provider-terraform


text:
query: Introduce v1alpha2, allowing for multiple filters

Description of your changes
To make the query API more flexible, while retaining simplicity for simple queries, allow multiple filters to be specified in a query. Objects returned in the query response must match all criteria in at least one of the specified filters; i.e., within a given filter the criteria are a conjunction (AND), while the multiple filters are a disjunction (OR). This is a breaking change, hence the version bump to v1alpha2.
I have:

[x] Read and followed Upbound's contribution process.
[x] Run make reviewable to ensure this PR is ready for review.
~- [ ] Added backport release-x.y labels to auto-backport this PR, as appropriate.~

How has this code been tested
Manual testing in local dev.

Rebased to integrate the change from #108 into v1alpha2.

repo: upbound/up-sdk-go


text:
Added an opensource python calender project

Hi there, in this PR, i am added a calender project in python..
So please merge the PR,
Thanks,
VIVEK K J,
www.vivekkj.me

This Repo accept only .cpp file

repo: update-ankur/C-with-DS


text:
Add a new card to the user

This pull request adds the create card method to the user.

LGTM.

authors: SandroMachado diogoguimaraes

repo: uphold/uphold-sdk-ios

license: mit


text:
[RBT-273] Skip tags with bad value pointers

Description
Issue: https://uploadcare.atlassian.net/browse/RBT-273

Checklist

[ ] Tests (if applicable)
[ ] Documentation (if applicable)
[ ] Changelog stub (or use conventional commit messages)

Included in https://github.com/uploadcare/Piexif/pull/4

repo: uploadcare/Piexif


text:
Update base64url to avoid vulnerabilities

Base64url has buffer overrun vulnerabilities prior to 3.0.0. This change updates did-jwt to use 3.0.0 to avoid these vulnerabilities.

Updated in other PR

authors: ericmaino pelle

repo: uport-project/did-jwt


text:
feat: Move main.go into root for direct install.

Motivation
TL;DR: make it easier to run go install github.com/upsidr/merge-gatekeeper@v${GATEKEEPER_VERSION}
Docker Hub rate limiting makes repeatedly pulling the Golang image to build this action from GitHub actions problematic.
In my use case, a private registry and cache for the action runners is already available, to which I'm storing the amd64 build of the following:
# syntax=docker/dockerfile:1

FROM golang:1.16-alpine AS go

ARG GATEKEEPER_VERSION="1.2.1"

RUN apk add --no-cache git \
    && go get github.com/upsidr/merge-gatekeeper@v${GATEKEEPER_VERSION} \
    && cd ${GOPATH}/pkg/mod/github.com/upsidr/merge-gatekeeper@v${GATEKEEPER_VERSION} \
    && GO111MODULE=on LANG=en_US.UTF-8 CGO_ENABLED=0 go build ./cmd/merge-gatekeeper \
    && mv merge-gatekeeper /go/bin

FROM alpine:3.17 AS alpine

COPY --from=go /go/bin/merge-gatekeeper /usr/local/bin/merge-gatekeeper

ENTRYPOINT ["/usr/local/bin/merge-gatekeeper"]

Using go install would simplify this a lot.
Changes

Moved main.go and version.txt into the repository root.
Updated version.txt to the latest tagged version of your repo.

Side note: propose leveraging Actions and a Semantic release tool (example) to automate version changes.
I'm keen to contribute other changes in line with my use-case, but this one is pretty fundamental to my use case.  Thanks in advance!

Side note: propose leveraging Actions and a Semantic release tool (example) to automate version changes.

Thanks for the note, and we understand that the current setup is quite manual and error prone. We are absolutely open to ideas!
In the meantime, I'm getting this change merged 🥰

authors: mdjward rytswd

repo: upsidr/merge-gatekeeper


text:
feat: migrate to uptime-industries gh org

Fixes #35
Closes #36, closes #34
Signed-off-by: Matthias Riegler matthias.riegler@ankorstore.com

Awesome, thanks for closing out the other issues with this!
As a followup: it looks like this was probably a scripted change, and whatever the script was running was probably not correct. Picking one example out of many:
- ## [0.5.0](https://github.com/Uptime-Lab/computeblade-agent/compare/v0.4.1...v0.5.0) (2023-11-25)
+ ## [0.5.0](https://github.com/github.com/uptime-induestries/compute-blade-agent/compare/v0.4.1...v0.5.0) (2023-11-25)

"https://github.com/github.com/..." is probably not what we were going for.

Ah nevermind, I see that got fixed up in the patch releases; my bad!

authors: jbirch xvzf

repo: uptime-industries/compute-blade-agent


text:
docs: add info & examples to Exec() function

Can we add some info and examples to Exec() function?

That is just a wrapper over database/sql Tx. There is an example how to work with transactions at https://bun.uptrace.dev/guide/transactions.html#idb-interface

authors: frederikhors vmihailenco

repo: uptrace/bun


text:
Error while plotting counterfactuals using plot_cf()

plot_cf() function errors out with the following error. This behavior is also consistent across all notebooks in paper/.
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-b6c8ed26216e> in <module>
      1 fkw = {"figsize": (8, 6)}
      2 mpl.rc("axes", titlesize=12)
----> 3 exmol.plot_cf(exps, figure_kwargs=fkw, mol_size=(450, 400), nrows=1)
      4
      5 plt.savefig("rf-simple.png", dpi=180)

/gpfs/fs2/scratch/hgandhi/exmol/exmol/exmol.py in plot_cf(exps, fig, figure_kwargs, mol_size, mol_fontsize, nrows, ncols)
    682         title += f"\nf(x) = {e.yhat:.3f}"
    683         axs[i].set_title(title)
--> 684         axs[i].imshow(np.asarray(img), gid=f"rdkit-img-{i}")
    685         axs[i].axis("off")
    686     for j in range(i, C * R):

~/.local/lib/python3.7/site-packages/matplotlib/__init__.py in inner(ax, data, *args, **kwargs)
   1359     def inner(ax, *args, data=None, **kwargs):
   1360         if data is None:
-> 1361             return func(ax, *map(sanitize_sequence, args), **kwargs)
   1362
   1363         bound = new_sig.bind(ax, *args, **kwargs)

~/.local/lib/python3.7/site-packages/matplotlib/axes/_axes.py in imshow(self, X, cmap, norm, aspect, interpolation, alpha, vmin, vmax, origin, extent, filternorm, filterrad, resample, url, **kwargs)
   5607                               resample=resample, **kwargs)
   5608
-> 5609         im.set_data(X)
   5610         im.set_alpha(alpha)
   5611         if im.get_clip_path() is None:

~/.local/lib/python3.7/site-packages/matplotlib/image.py in set_data(self, A)
    699                 not np.can_cast(self._A.dtype, float, "same_kind")):
    700             raise TypeError("Image data of dtype {} cannot be converted to "
--> 701                             "float".format(self._A.dtype))
    702
    703         if self._A.ndim == 3 and self._A.shape[-1] == 1:

TypeError: Image data of dtype <U14622 cannot be converted to float

@geemi725 this looks like a matplotlib version problem - maybe we need to set a specific version?

@hgandhi2411 I'm unable to reproduce this in the latest version. It might be something with your rdkit version or PIL version - I'm not sure.
It looks like a problem in creating the images. Can you try running this function and checking that you're able to get molecule images.

@whitead I am able to get images from _mol_diff.
I investigated a bit and seems like this issue arises because I specify svg=True here. plt.imshow() takes floats, and np.array(imgs, dtype=float) cannot convert the svg text to floats.
When I use plot_cf() as is, the image quality is very poor.

Can you double-check your line? I can't see an svg argument there

In this line, the _mol_images() function has an optional svg argument (default=False). plot_cf() uses the default, so you don't see it there. I was seeing the above error because I tried to use svg=True.

Closing this issue because plot_cf() works fine. My error was because I tried to change the function to get a better quality image.

repo: ur-whitelab/exmol


text:
TypeError: Return value of craft\web\Application::getIsLive() must be of the type boolean, null returned

The error is coming after a fresh setup (the mysql version) with 'docker-compose up' and visit the localhost with a craft database update with the browser.

--> This workaround works:
adding 'isSystemLive' => true in general.php

See https://craftcms.stackexchange.com/a/29533

repo: urbantrout/craftcms


text:
failed (re)subscribe

I booted my planet after the Jan 31 breach (urbit 0.7.1) and tried (from the CLI):
;join ~wanzod/urbit-help

and got:
~dirwex-dosrev[hall]: failed (re)subscribe to ~wanzod on
                      /circle/urbit-help/config-l/group-l/grams/~2019.2.1..19.46
                      .44..3a19
               attached: stack trace

Can you post the stack trace?
On Saturday, 2 February 2019, jfranklin9000 notifications@github.com
wrote:

I booted my planet after the Jan 31 breach (urbit 0.7.1) and tried (from
the CLI):
;join ~wanzod/urbit-help
and got:
~dirwex-dosrev[hall]: failed (re)subscribe to ~wanzod on
/circle/urbit-help/config-l/group-l/grams/~2019.2.1..19.46
.44..3a19
attached: stack trace
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/urbit/arvo/issues/1048, or mute the thread
https://github.com/notifications/unsubscribe-auth/ABxXhsBKpAVvMwaz4oNZKvxTv0hYzCqjks5vJeyVgaJpZM4afwd5
.

I think a single ';' expands the most recent message? ;help might have more
info
On Saturday, 2 February 2019, jfranklin9000 notifications@github.com
wrote:

How do I get it?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/urbit/arvo/issues/1048#issuecomment-459995038, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABxXhrdqsZYUnFlBDHJpcltM_Cu7r00Bks5vJe83gaJpZM4afwd5
.

That makes sense, urbit-help doesn't exist on ~wanzod this era. Hall should maybe try a little bit harder to explain. Try ~dopzod/urbit-help instead!
(Though, ~zod is down for surgery right now, so you might not be able to reach it...)

authors: Fang- jfranklin9000 ohAitch

repo: urbit/arvo


text:
gall <<>> eyre bridge

As per #594, maybe we can slowly start thinking about best way to have eyre able to access
a gall app state.
We need to be able to expose an app's state as a resource retrievable via URL. This entails at least a couple crucial considerations:

Mapping between app state and URI
Permission mechanism
Caching (rather easy? Gall knows exactly when the state changes)
What kind of requests should be allowed? I think this should best
be kept as a read-only mechanism. Subscriptions and pokes works very well for two-way communications.

Suppose we run an app :spaceship.
We should be able to run access some part of state as (Assuming glorious future when we already have Urbit DNS ;-))
urbit://~ship/~g/spaceship/crew/john.crew-member
In the following URL we have the usual ship's name. The part that indicates
we make a gall request is ~g. After that comes the apps name.
If the apps does not exist, we can display "Gall 404 error".
After that, we have URI into apps state. Now, an app state can be anything.
So we have two options (or more?)

Make apps who want to be accessible through eyre conform to some interface <--- Meh

Devise universal mapping. For example,~g/spaceship is the entire app's state. <--- Cool
/~g/spaceship.ship we request the state as a mark ship which is then cast to json, if possible.
Otherwise deeper paths would just straightforwardly map onto Hoon's limb resolution.
Basic data types such as maps, lists could get eyre adapters. For example, if we have

++  state
      (...)
       stories=(map name story)

in :hall, it would become accessible as /~g/hall/state/stories/robinhood.story. We can imagine similar adapters for lists, pairs and other common datatypes. Or maybe I am overengineering this, but given Hoon magic powers it does not seem very complicated, at least at the surface.
When it comes to permission mechanism, I imagine a separate arm ++perm or whatever, which would be invoked upon requesting a path through eyre with the full path as argument and return either true or false with some sensible default (like blocking everything unless the owner is requesting :))
Okay, this is just after an afternoon of thinking.
Hopefully this can be some starting point. In the worst case, we can garbage collect everything
and continue with someone's else better ideas.
EDIT: I retract "read-only" part. As discussed in the linked issue, there should be a way to 'inject' data into  app's state. Otherwise we will end up with people stuffing things in source code, which is what we mean to avoid.
For example, a webapp interface could be injected into the app using POST request to
/~g/spaceship/ui.js which would take the data as json and try to stuff them into ui as 'js' (if the marks match).
Then the public facing ui would be accessed through html which would
request the /~g/spaceship/ui.js to be loaded.
Similarly, youtube-like service would host videos under
/~g/youtube/videos/funnycat.mp4, which could be uploaded through similar mechanism...

Some time has passed, and new development in the browser world (namely servo), which promise very high performant browser engines, makes me want to to try to approach this, as this is basically the last missing puzzle that needs to be solved in order to start shipping moderately complex Urbit interfaces (and hope for some standarization emerging in the process, for people to be able to just grab some components and have working Urbit app in no time).
As it stands now, I understand that dust will begin to settle in coming months on new Ford & Clay, which seems like a perfect time to make some serious attempts at this.
Plato for now is sadly sitting rather idle, since without a way to reliably distribute UI blobs I can't really launch it, without risking blowing up people ships and being branded a pirate.
This boils down to the state of binary blobs in clay and how far are we from implementing them?
My current view on clay <-> eyre bridge is that perhaps it is not at all desirable, as this kind of seamless 'views' are fulfilled with increasingly new ford, and subscription/poke mechanism is very versatile. Moderately complex apps will unavoidably have to expose API, as it is unlikely simply "mounting" the state will provide any kind of advantage. In fact, application designers should have to expect their internal application state being introspectable, as this would place unnecessary burden on them.
So unless someone thinks this kind of bridge would be preferrable to the options we already have, I propose to close this ticket and instead open a working ticket on "Blob support in clay" which hopefully will lead first to fixing exploding clay bug and then to developing a full support for this kind of feature.

Closing as, per the above comment, I believe the referenced issue supersedes this one.

authors: jtobin mikolajpp


text:
Change "backspace at start of line" to "backspace on empty line" for clear

See #85. Not sure if this change is still desired, but it seemed like an easy fix, so here's a proposal.
Beeps if you backspace at the start of a line and it's not completely empty yet.
(Would it be appropriate to delete that comment (line 622) while I'm touching this part of the code?)

+1. This has driven me nuts for quite a while.
On Aug 8, 2016 2:52 PM, "Fang" notifications@github.com wrote:

See #85 https://github.com/urbit/arvo/issues/85. Not sure if this
change is still desired, but it seemed like an easy fix, so here's a
proposal.
Beeps if you backspace at the start of a line and it's not completely
empty yet.
(Would it be appropriate to delete that comment (line 622) while I'm
touching this part of the code?)
You can view, comment on, or merge this pull request online at:
https://github.com/urbit/arvo/pull/235
Commit Summary

The trigger for a "clear" is now "backspace on empty line" rather
than "backspace at start of line".

File Changes

M lib/drum.hoon
https://github.com/urbit/arvo/pull/235/files#diff-0 (6)

Patch Links:

https://github.com/urbit/arvo/pull/235.patch
https://github.com/urbit/arvo/pull/235.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/urbit/arvo/pull/235, or mute the thread
https://github.com/notifications/unsubscribe-auth/AFS8GPMfFdh1nDNNGR6-lF18yDV1sSVMks5qdzSYgaJpZM4JfEKv
.

authors: Fang- philipcmonk


text:
Copy/paste does not work in mac executable

When we were working on the tutorial today, mac users had a problem with the command in mac (it did not work), and they could not copy/paste their yaml files in the T2WML editor.

@dgarijo this is a duplicate of issue #168
Closing this one

authors: dgarijo saggu


text:
Correct Visibility for EC 3.1 & 3.2

Adjust the visibility setting for EC 3.1 (hide column Q) and EC 3.2 (hide column P).

Add to v20221106 of the Input Template. Google Drive has been updated along with the release notes.

repo: usdigitalresponse/usdr-gost


text:
Placeholder: Update methodology page (and translate)

Update Data & methodology page to reflect Score L, content has been sent to Corey for review but no confirmed ETA for approval yet

[ ] Update for high level description under "Methodology"
[ ] Updates for download packet section
[ ] Updates for datasets (in addition to updated indicators, now there's no "Additional Indicators" section needed)
[ ] Updates to Methodology, in particular to make it easier for people to conceptualize Score L
[ ] Update to download package copy re: version, size, etc
[ ] Add translation

Copy is is "Draft Revised Methodology score L" document.

We now have mocks for this that we can use to begin coding. We expect any changes in the future to be textual, not layout.


text:
Update boolean for HS degree indicator to LHE

Purpose
Update the boolean value that determines if the HS degree achievement indicator on the side panel is blue or not
closes #1148

@emma-nechamkin I'd love this field to be a boolean instead of "0" or "1" as other fields.

can confirm. is blue.

authors: KameronKerger esfoobar-usds vim-usds


text:
[bug] Scripts are being send it with extra square bracket

I have a request that creates the payload on the script tab.
I create a sample payload, stringify it and set it in the req.setBody function.
When I checked the Bruno request, the payload has an extra square bracket at the end of the payload where there is no array to close.

I suppose that the problem is in the replace function existent in the packages/bruno-electron/src/ipc/network/interpolate-vars.js

This seems to be a bug caused by #964 / #bad9d0 and related to #1143. I think @nelup20 is already working on a fix.

authors: Its-treason iuri-aramos

repo: usebruno/bruno


text:
[Feature] Tabs : display more characters for request's name

I have checked the following:

[X] I've searched existing issues and found nothing related to my issue.

Describe the feature you want to add
The displayed name is too short and even with a tooltip, doesn't allow a fast enough preview while working on multiple tabs

Mockups or Images of the feature
Prototype on Figma :

Similar #839


text:
Bruno crashes when viewing Timeline for a POST request with a multipart form

I have checked the following:

[X] I use the newest version of bruno.
[X] I've searched existing issues and found nothing related to my issue.

Describe the bug
Bruno crashes when viewing the Timeline for a POST request with a multipart form.
Steps to reproduce:

create a request based on the given .bru file
run the request
click the Timeline button

Bruno crashes with the Oops! Something went wrong message.
The issue does not occur if the body is e.g. json. So, it seems to be related to multipart-form.
.bru file to reproduce the bug
meta {
  name: test
  type: http
  seq: 2
}

post {
  url: https://echo.zuplo.io
  body: multipartForm
  auth: none
}

body:multipart-form {
  foo: bar
}

Screenshots/Live demo link

Thanks @cb80 for bringing this to our notice. We were able to reproduce this issue on our end.
We have a release outgoing tomorrow and will have a fix for this issue included in tomorrow's release.

Just merged the PR by @lohxt1 !
This will be available in the upcoming v1.28.0 release.


text:
Numbered lists should only happen if the number is only at the start, or after whitespace

Gives this result:

I think numbered lists should only happen if the number is either at the start of the line, or has only whitespace before the number. I think this is a bug. What do you think?

It's a bug at all. The memo content parser is simply written by myself which will only parse part of markdown syntax. And I'm going to find a better solution to fix these unwanted problems.

authors: boojack limdingwen

repo: usememos/memos


text:
chore: allow some hardcoded strings to be translated

Also add pt-PT translation for them

np :+1:


text:
Distinguish between lexical character sets and list literals

Currently all elements between two brackets [] are treated naïvely as lexical character set, which results in issues with highlighting list literals. Particularly, we must ensure that only things between brackets inside lexical or syntax scopes are treated as character sets, and those outside are treated as list literals.
Note that removing the support for lexical character sets ruins the highlighting of the rest of the programs since \" and "/", and other similar characters can appear freely in character set expressions.
Examples of mis-highlighted terms:
// comment 1

n = 1;  // comment 2
l = [1, // comment 3: non highlighted
     2,
     3];

list[int] n

private MuExp translateStringLiteral(s: (StringLiteral) `<PreStringChars pre> <Expression expression> <StringTail tail>`) {
    preIndent = computeIndent(pre);
    return muBlock( [ muCallPrim3("template_open", translatePreChars(pre), pre@\loc),
    				  *translateExpInStringLiteral(preIndent, expression),
    				  *translateTail(preIndent, tail),
    				  muCallPrim3("template_close", [], tail@\loc)
					]   );
}

OK, I have tried to fix the issues now:
First Example
Second Example
Third Example
Non-regression: Grammar
I apologise for it taking a bit of time, but I had used a lot of time debugging things because I misunderstood a part of how the syntax highlighting matched over newlines (apparently a single pattern is only run for a single line, begin end work with newlines).

You are making great progress!
Perhaps update the pull request on the linguist library? to point to this newer version?

I have tried to highlight two dozen fragments of complex Rascal code and so far I have not yet spotted irregularities. Great work. This is rapidly becoming very useful.

Great, thanks for the comments.
@DavyLandman I think they use git submodules, so it should synchronise automatically I hope.

git submodules point to a specific commit in the history, so you'll have to update which commit it points to (see here).
You'll have to go into the vendor/grammars/rascal-syntax-highlighting directory, perform a git pull, go back to the root of the linguist folder and commit the changes (git status will show the pointer to the commit has moved)

@DavyLandman OK, done.

authors: DavyLandman PaulKlint ahmadsalim

repo: usethesource/rascal-syntax-highlighting


text:
feat: add tencent cos deploy support

新增腾讯云COS配置支持

有空把 README 里的支持的服务商也改下

有空把 README 里的支持的服务商也改下

done.


text:
Pre Release (v3.8.0-beta.7): Anomaly Logger, Anomaly Handler の完全削除

概要
Pre Release (v3.8.0-beta.7): Anomaly Logger, Anomaly Handler の完全削除
Issue

https://github.com/ut-issl/c2a-core/issues/112
https://github.com/ut-issl/c2a-core/issues/468

詳細
ISSL でも ArkEdge Space でも使われてないことから，deprecated から正式に削除する
検証結果

すべての CI が通った

影響範囲

全ての user で設定ファイルなどを削除する必要がある
これまで AH を使ってなかった user で set(USE_ALL_C2A_CORE_APPS OFF) を削除できる可能性がある

補足

[ ] https://github.com/ut-issl/c2a-core/pull/515 を先にマージする
[ ] マージ前にバージョンをあげる

@sksat cmake まわりで変なことしてないか見てほしい

これ，Release打つまでもないか？

beta 打つかはともかく，破壊的変更ではあるからリリース打っても損は無いと思う

@sksat cmake まわりで変なことしてないか見てほしい

これは OK

@chutaro approve頼む～～

細かい修正めっちゃ助かる！！
確認します

authors: meltingrabbit sksat


text:
ideaboxのv1リリース

ユーザフローをカバーできている

[x] #7
[x] #9
[x] #10
[ ] #11

[ ] #12
[ ] #13
[ ] #15
[ ] #14
[ ] #16

[ ] #17
[ ] UIの調整

一旦モチベ下がってきたのでarchive


text:
How do I run dev builds?

I tried downloading build from dev branch with updated qemu, unarchived with xcode but it says that i have no permission to run it

This is not a support forum. Please use the discord for such questions.

Thanks

authors: Andrupka osy

repo: utmapp/UTM


text:
Implement NodePathValidTypes typehint annotation

Annotation already existing in: PropertyTypeHintAnnotation.kt (already there, needs to be uncommented.
Add typehint and typelimiting support in PropertyHintTypeMapper.kt

Closing in favor of #155

repo: utopia-rise/godot-kotlin


text:
more should respect stdin, return, terminal size

should accept display content on STDIN (and still get keyboard input from terminal)
should detect terminal size, page by this amount
should move by line (RETURN) or by page (SPACE)

Are there other features people need to start using more routinely?

Unless someone speaks up to say they're working on this already, I'll put together a PR.  Any preference on 1 PR or several?

Thanks for your interest in contributing to the project! I doubt there's anyone working on this already. I'm personally fine with 1 PR if you put them in multiple commits, since these are uncontroversial changes, but @Arcterus's opinion may differ.

authors: ArniDagur bergey

repo: uutils/coreutils


text:
More simplification (with a bonus performance boost)

Extract snippets like this into a div_ceil function:

let mut num_lines = self.cells.len() / num_columns;
if self.cells.len() % num_columns != 0 {
    num_lines += 1;
}

Simplify the Display impl, by precalculating the separator and using the padding functionality of format!.
Simplify theoretical_max_num_lines by using enumerate and only deal with the widths instead of the the whole Cell.
Remove a clone in width_dimensions.
Add an example that takes a few seconds for benchmarking.

Once I had the example, I benchmarked this against main and already got a >2.58x improvement!
Benchmark 1: target/bench/old
  Time (mean ± σ):      4.412 s ±  0.048 s    [User: 3.738 s, System: 0.670 s]
  Range (min … max):    4.354 s …  4.507 s    10 runs

Benchmark 2: target/bench/new
  Time (mean ± σ):      1.709 s ±  0.014 s    [User: 1.085 s, System: 0.624 s]
  Range (min … max):    1.694 s …  1.739 s    10 runs

Summary
  'target/bench/new' ran
    2.58 ± 0.03 times faster than 'target/bench/old'

EDIT: Got another performance boost from 2.1x to 2.5x faster

Note entirely sure what's going on but there's some weird things happening in this branch when I try to run all the firefox files.

Alright, I'm putting this up for review anyway. The reason is that I want to have these cleanups before I start working on more fixes. It doesn't have to be perfect and we can fix more along the way.

repo: uutils/uutils-term-grid


text:
fix big negative integer

https://github.com/uwiger/sext/issues/14
Use same strategy as for big positive integer

Thanks for noticing this! A bit embarrassing that we didn't think to fix it at the same time as we fixed the positive bignums. :)
I have pushed a version of your branch to https://github.com/uwiger/sext/tree/uw-fix-big-neg-integer where I've added the corresponding tests in the EQC test suite. I've run it a number of times, including with pretty high 'numtests'.
If you want, you can pull those changes into this PR and I'll merge it. FWIW, it seems that this would put credit in the right place (for those who dig though old PRs).

I have merged you changes into this PR.

Great! Thanks.

authors: dreyk uwiger

repo: uwiger/sext


text:
Unable to connect to Gerrit server.

Hi,
I'm trying to connect to a Gerrit server via GUI panel on PyCharm but I got an error.
My login info:

The error I got:

I think it happening because the Gerrit URL I'm trying to connect is from the pattern: https://XXXXX:port.
Any suggestions?
Thanks,
Oran

@Orans94: What version of PyCharm are you using? Have you tried this plugin with a previous version of PyCharm?

@Orans94: What version of PyCharm are you using? Have you tried this plugin with a previous version of PyCharm?

I'm using PyCharm 2020.1 (Professional Edition), I have not tried this plugin in any previous versions of PyCharm.

Can you try to connect to a public Gerrit server like https://gerrit-review.googlesource.com/? Then we can see if this issue is related to your (authentication) setup.
Also: what JRE are you using for PyCharm?

The problem was solved.
There was an issue with my HTTP proxy setting, after fixing it, I was able to connect successfully.

repo: uwolfer/gerrit-intellij-plugin


text:
[Enhancement] Upgrade IncrementalLinearRegression for underdetermined systems

Description
This follows on and is dependent on #2167 and #2083. Makes the check at instantiation not in operation.

PR should start as a draft, then move to ready for review state after CI is passed and all applicable checkboxes are closed.
This approach ensures that reviewers don't spend extra time asking for regular requirements.
You can remove a checkbox as not applicable only if it doesn't relate to this PR in any way.
For example, PR with docs update doesn't require checkboxes for performance while PR with any change in actual code should have checkboxes and justify how this code change is expected to affect performance (or justification should be self-evident).
Checklist to comply with before moving PR from draft:
PR completeness and readability

[ ] I have reviewed my changes thoroughly before submitting this pull request.
[ ] I have commented my code, particularly in hard-to-understand areas.
[ ] I have updated the documentation to reflect the changes or created a separate PR with update and provided its number in the description, if necessary.
[ ] Git commit message contains an appropriate signed-off-by string (see CONTRIBUTING.md for details).
[ ] I have added a respective label(s) to PR if I have a permission for that.
[ ] I have resolved any merge conflicts that might occur with the base branch.

Testing

[ ] I have run it locally and tested the changes extensively.
[ ] All CI jobs are green or I have provided justification why they aren't.
[ ] I have extended testing suite if new functionality was introduced in this PR.

Performance

[ ] I have measured performance for affected algorithms using scikit-learn_bench and provided at least summary table with measured data, if performance change is expected.
[ ] I have provided justification why performance has changed or why changes are not expected.
[ ] I have provided justification why quality metrics have changed or why changes are not expected.
[ ] I have extended benchmarking suite and provided corresponding scikit-learn_bench PR if new measurable functionality was introduced in this PR.

/intelci: run

repo: uxlfoundation/scikit-learn-intelex


text:
todayHighlight defaults table entry wrong

todayHighlight is actually false by default; the defaults table incorrectly showed it as being true in conflict with the documentation higher up on the page.

Q
A

Bug fix?
yes

New feature?
no

BC breaks?
no

Related tickets

License
MIT

Thanks @dataxpress!

repo: uxsolutions/bootstrap-datepicker


text:
Fix the base/addon products in the test data

We were just missing the product name in the test data.
Tracks https://github.com/SUSE/spacewalk/issues/2453

I also noticed further inconsistencies in the test data, which I fixed in the last commit.

Thanks @mackdk for the review! Merging.

repo: uyuni-project/subscription-matcher


text:
不要になったDialogコンポーネントの削除

close #76
概要
デザインの刷新により、不要になったDialogコンポーネントを削除しました。
（内部で使用しているHeadless UIはAccordionコンポーネントで使用しているため、削除しておりません。）

Storybook URL: https://uyupun.github.io/official/refactor_76_delete-dialog/storybook/
Lighthouse URL: https://uyupun.github.io/official/refactor_76_delete-dialog/lighthouse/

repo: uyupun/official


text:
🛑 Third Party IMG is down

In a8cf5f7, Third Party IMG ($THIRD_PARTY_IMG) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Third Party IMG is back up in d2353f6.


text:
OSError with Anaconda, works on Miniconda

Hi , this is a greate work for my stduy ,But I had a problem running the demo.
(torch_zoo) czy@PT6630W:/data1/czy/affectivevideo/video_features$ /home/czy/anaconda3/envs/torch_zoo/bin/python3.8 main.py feature_type=r21d device_ids="[0]" video_paths="[./sample/v_ZNVhz7ctTq0.mp4, ./sample/v_GGSY1Qvo990.mp4]"
Traceback (most recent call last):
  File "main.py", line 6, in <module>
    import torch
  File "/home/czy/anaconda3/envs/torch_zoo/lib/python3.8/site-packages/torch/__init__.py", line 189, in <module>
    _load_global_deps()
  File "/home/czy/anaconda3/envs/torch_zoo/lib/python3.8/site-packages/torch/__init__.py", line 142, in _load_global_deps
    ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
  File "/home/czy/anaconda3/envs/torch_zoo/lib/python3.8/ctypes/__init__.py", line 381, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /home/czy/anaconda3/envs/torch_zoo/lib/python3.8/site-packages/torch/lib/../../../../libcublas.so.11: symbol free_gemm_select version libcublasLt.so.11 not defined in file libcublasLt.so.11 with link time reference

Is there any way to solve this problem？Looking forward to someone's reply. Thanks

Hi, thanks for trying it out.
Can you do import torch in your Python?

Hi, thanks for trying it out.
Can you do import torch in your Python?

I can't import torch  in my python .
same error

It could be an issue of anaconda as it is described in https://github.com/pytorch/pytorch/issues/51080
What does (torch_zoo) conda list cuda give you?

yes and I tried another version of cudatoolkit such as cudatoolkit=11.0.3  ,But looks like have conflicts
(torch_zoo) czy@PT6630W:/data1/czy/affectivevideo/video_features$ conda list cuda
# packages in environment at /home/czy/anaconda3/envs/torch_zoo:
#
# Name                    Version                   Build  Channel
cudatoolkit               11.0.221             h6bb024c_0

I don't have another machine right now. Is it possible for you to try to install miniconda and torch_zoo there? I just want to narrow down the issue a bit.

It seems to succeed.
\I think my Anaconda has some problems  XD
czy1@PT6630W:~/video_features$ source activate torch_zoo
(torch_zoo) czy1@PT6630W:~/video_features$ python main.py feature_type=r21d  device_ids="[0]" video_paths="[./sample/v_ZNVhz7ctTq0.mp4, ./sample/v_GGSY1Qvo990.mp4]"
{'feature_type': 'r21d', 'device_ids': [0], 'video_paths': ['./sample/v_ZNVhz7ctTq0.mp4', './sample/v_GGSY1Qvo990.mp4']}
feature_type: r21d
model_name: r2plus1d_18_16_kinetics
stack_size: null
step_size: null
extraction_fps: null
device_ids:
- 0
on_extraction: print
output_path: ./output
tmp_path: ./tmp
keep_tmp_files: false
show_pred: false
config: null
file_with_video_paths: null
video_paths:
- ./sample/v_ZNVhz7ctTq0.mp4
- ./sample/v_GGSY1Qvo990.mp4

  0%|                                                                                | 0/2 [00:00<?, ?it/s]Downloading: "https://download.pytorch.org/models/r2plus1d_18-91a641e6.pth" to /home/czy1/.cache/torch/hub/checkpoints/r2plus1d_18-91a641e6.pth
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 120M/120M [00:54<00:00, 2.31MB/s]
r21d|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉| 120M/120M [00:54<00:00, 2.32MB/s]
[[0.42218563 1.17318308 0.40078551 ... 0.66922128 0.06912617 1.18522477]
 [0.52843308 0.86638242 0.48396972 ... 0.87221068 0.06446913 1.26957393]
 [0.45510957 1.24178052 0.28735891 ... 1.1974194  0.04069321 1.1834774 ]
 ...
 [0.36844271 0.72178376 0.43043154 ... 1.50390053 0.64477223 0.92311001]
 [0.36785939 0.57711715 0.39524844 ... 1.55858362 0.47291428 0.55648011]
 [0.26900989 0.62733668 0.15515861 ... 1.86467552 0.16260292 0.45022029]]
max: 5.85777378; mean: 0.97725581; min: 0.00000000

 50%|█████████████████████████████████████████████████████████████████████████████                                                                             | 1/2 [01:01<01:01, 61.32s/it]r21d
[[0.29430833 0.61677468 0.03131339 ... 0.46447253 0.11309772 0.30705026]
 [0.45730111 0.7090205  0.05734326 ... 0.51096797 0.24674344 0.5347752 ]
 [0.53560811 0.64860499 0.03306999 ... 0.41103086 0.22505628 0.42674282]
 ...
 [0.76564747 1.35982907 0.32192281 ... 0.85664588 0.33740634 0.84231055]
 [0.39216471 0.7261017  0.24165478 ... 0.12450667 0.13376112 0.73523462]
 [0.2450196  0.74660909 0.27728859 ... 0.25958988 0.46994063 0.82153547]]
max: 5.41354084; mean: 0.73186871; min: 0.00046144

100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [01:02<00:00, 31.39s/it]

Can you compare lists of installed packages side by side? Is there any difference?
(anaconda) conda list > anaconda.yaml
(miniconda) conda list > miniconda.yaml
diff anaconda.yaml miniconda.yaml

miniconda.txt
anaconda.txt

Ok. I think I am fine with this issue and I will consider it a low priority.
Anyway, thanks for bringing this up and providing more follow-up info on my request. I will leave it open for others to see.
Others, please let me know if you have the same problem as the topic starter. It would be especially useful if someone could help me to fix it (i.e. making it work on anaconda).

Thanks

I will reopen it. So, someone else with a similar problem could see.

The environment has been substantially upgraded in #118 and it should mitigate this issue.

authors: ChenyuLy v-iashin


text:
Video concantenates when a short stream is restarted immediately

I use OBS with streaming configured.
I started a stream then stopped after a minute or so. I almost immediately started another stream. The second video contains the first video as the intro, then it switches to the second at about a minute's worth of time. A recording of the event:
https://zap.stream/naddr1qqjxgwt9vyuxxc3j94jxgd3e956rsdtx95ukxwps956nwe3ev93rzvnrvy6rqq3qeaz6dwsnvwkha5sn5puwwyxjgy26uusundrm684lg3vw4ma5c2jsxpqqqpmxw7x23gl
The first short recording is overlayed onto the second it seems.

Yes it will resume, you need to stop and wait for the stream to go offline on zap.stream first.
This is to allow people to resume the stream if their connection drops or something, its completely intentional


text:
使用ache.sh生成证书配置TLS后打不开网页，客户端日志显示"failed to read response header"

按照教程开启了TLS功能后，Vmess不能够正常使用。证书可以在NGINX下识别并使用。但是配置到Vmess的TLS功能中却不能正确使用。

你正在使用哪个版本的 V2Ray？（如果服务器和客户端使用了不同版本，请注明）
服务端 2.33
客户端2.33.1

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

使用 Chrome 通过 Socks/VMess 代理观看 YouTube 视频

你看到的不正常的现象是什么？
打不开网页，Chrome显示www.youtube.com的响应时间过长。

你期待看到的正确表现是怎样的？
What's your expectation?

请附上你的配置文件（提交 Issue 前请隐藏服务器端IP地址）。
Please attach your configuration file (Mask IP addresses before submit this issue).
Server Configuration File（服务器端配置文件）:

    // 在这里附上服务器端配置文件
{
  "log" : {
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log",
    "loglevel": "debug"
  },

  "inbound": {
    "port": 443,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "level": 1,
          "alterId": 80
        }
      ]
    }

  },
 "streamSettings": {
      "network": "tcp",
      "security": "tls",
      "tcpSettings": {
        "connectionReuse": false,
        "header": {
          "type": "http",
          "request": {
            "version": "1.1",
            "method": "GET",
            "path": [
              "/"
            ],
            "headers": {
              "Host": [
                "www.microsoft.com"
              ],
              "User-Agent": [
                "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36",
                "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
              ],
              "Accept-Encoding": [
                "gzip, deflate"
              ],
              "Connection": [
                "keep-alive"
              ],
              "Pragma": "no-cache"
            }
          },
          "response": {
            "version": "1.1",
            "status": "200",
            "reason": "OK",
            "headers": {
              "Content-Type": [
        "application/octet-stream",
        "application/x-msdownload",
        "text/html",
        "application/x-shockwave-flash"
              ],
              "Transfer-Encoding": [
                "chunked"
              ],
              "Connection": [
                "keep-alive"
              ],
              "Pragma": "no-cache"
            }
          }
        }
      },
      "tlsSettings": {
        "serverName": "mydomain.com",
        "allowInsecure": true,
        "certificates": [
          {
            "certificateFile": "/etc/v2ray/v2ray.crt",
            "keyFile": "/etc/v2ray/v2ray.key"
          }
        ]
      }
    },

"outbound": {
"protocol": "freedom",
"settings": {}
  },

  "outboundDetour": [
    {
      "protocol": "blackhole",
      "settings": {},
      "tag": "blocked"
    }
  ],
  "routing": {
    "strategy": "rules",
    "settings": {
      "rules": [
        {
          "type": "field",
          "ip": [
            "0.0.0.0/8",
            "10.0.0.0/8",
            "100.64.0.0/10",
            "127.0.0.0/8",
            "169.254.0.0/16",
            "172.16.0.0/12",
            "192.0.0.0/24",
            "192.0.2.0/24",
            "192.168.0.0/16",
            "198.18.0.0/15",
            "198.51.100.0/24",
            "203.0.113.0/24",
            "::1/128",
            "fc00::/7",
            "fe80::/10"
          ],
          "outboundTag": "blocked"
        }
      ]
    }
  }
}

    // Please attach your server configuration file here.

Client Configuration File（客户端配置文件）:

    // 在这里附上客户端配置文件
{
  "log": {
    "loglevel": "debug",
    "access":"C:\\access.log",
    "error":"C:\\error.log"
  },

  "inbound": {
    "port": 1080,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "settings": {
      "auth": "noauth",
      "udp": false,
      "ip": "127.0.0.1"
    }
  },

  "outbound": {
    "protocol": "vmess",
    "settings": {
      "vnext": [
        {
          "address": "mydomain.com",
          "port": 443,
          "users": [
            {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxxx",
              "alterId": 80

            }
          ]
        }
      ]
    },

      "streamSettings": {
      "network": "tcp",
      "security":"tls",
      "tcpSettings": {
        "connectionReuse": false,
        "header": {
          "type": "http",
          "request": {
            "version": "1.1",
            "method": "GET",
            "path": ["/"],
            "headers": {
              "Host": ["www.microsoft.com"],
              "User-Agent": [
                "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36",
                        "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/53.0.2785.109 Mobile/14A456 Safari/601.1.46"
              ],
              "Accept-Encoding": ["gzip, deflate"],
              "Connection": ["keep-alive"],
              "Pragma": "no-cache"
            }
          },
          "response": {
            "version": "1.1",
            "status": "200",
            "reason": "OK",
            "headers": {
              "Content-Type": ["application/octet-stream", "application/x-msdownload", "text/html", "application/x-shockwave-flash"],
              "Transfer-Encoding": ["chunked"],
              "Connection": ["keep-alive"],
              "Pragma": "no-cache"
            }
          }
        }

      }
    },

    "mux" :{
      "enabled": true
    }
  },
  "outboundDetour": [
    {
      "protocol": "freedom",
      "settings": {},
      "tag": "direct"
    }
  ],
  "dns": {
    "servers": [
      "8.8.8.8",
      "8.8.4.4",
      "localhost"
    ]
  },
  "routing": {
    "strategy": "rules",
    "settings": {
      "domainStrategy": "IPIfNonMatch",
      "rules": [
        {
          "type": "field",
          "port": "1-52",
          "outboundTag": "direct"
        },
        {
          "type": "field",
          "port": "54-79",
          "outboundTag": "direct"
        },
        {
          "type": "field",
          "port": "81-442",
          "outboundTag": "direct"
        },
        {
          "type": "field",
          "port": "444-65535",
          "outboundTag": "direct"
        },
        {
          "type": "chinasites",
          "outboundTag": "direct"
        },
        {
          "type": "field",
          "ip": [
            "0.0.0.0/8",
            "10.0.0.0/8",
            "100.64.0.0/10",
            "127.0.0.0/8",
            "169.254.0.0/16",
            "172.16.0.0/12",
            "192.0.0.0/24",
            "192.0.2.0/24",
            "192.168.0.0/16",
            "198.18.0.0/15",
            "198.51.100.0/24",
            "203.0.113.0/24",
            "::1/128",
            "fc00::/7",
            "fe80::/10"
          ],
          "outboundTag": "direct"
        },
        {
          "type": "chinaip",
          "outboundTag": "direct"
        }
      ]
    }
  }
}

    // Please attach your client configuration file here.

请附上出错时软件输出的日志。在 Linux 中，日志通常在 /var/log/v2ray/error.log 文件中。
Please attach the log file, especially the bottom lines if the file is large. Log file is usually /var/log/v2ray/error.log on Linux.
Server Log File（服务器端日志）:

    // 在这里附上服务器端日志
2017/06/18 08:00:00 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:01 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5642: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:01 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:02 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5643: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:02 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:03 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5706: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:03 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:04 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5707: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:04 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:05 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5708: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:05 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:06 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5709: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:06 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:08 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5710: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:08 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:12 [Info]Proxy|VMess|Inbound: invalid request from xxx.xxx.xxx.xxx:5711: Proxy|VMess|Encoding: invalid user
2017/06/18 08:00:12 [Info]App|Proxyman|Inbound: connection ends > Proxy|VMess|Encoding: invalid user

    // Please attach your server log here.

Client Log File（客户端日志）:

    // 在这里附上客户端日志
2017/06/18 08:07:37 [Debug]Transport|Internet|UDP: dispatch request to: udp:8.8.8.8:53
2017/06/18 08:07:37 [Info]Transport|Internet|UDP: establishing new connection for udp:8.8.8.8:53
2017/06/18 08:07:37 [Info]App|Dispatcher|Default: default route for udp:8.8.8.8:53
2017/06/18 08:07:37 [Info]App|Proxyman|Mux: dispatching request to udp:8.8.8.8:53
2017/06/18 08:07:37 [Info]Transport|Internet|TCP: dailing TCP to tcp:mydomain.com:443
2017/06/18 08:07:37 [Info]Proxy|VMess|Outbound: tunneling request to tcp:v1.mux.cool:9527 via tcp:mydomain.com:443
2017/06/18 08:07:37 [Info]Proxy|VMess|Encoding: failed to read response header > EOF

    // Please attach your client log here.

服务器端的证书私钥是有密钥保护的吧

没有吧。这个脚本生成的私钥直接打进nginx是正常的

@GEM7 怎么解决的，为啥关了呢？

@LarkinZero 当时直接用V2rayN重新生成了一份配置，成功了。于是就关了issue。

authors: GEM7 LarkinZero wtlusvm


text:
attempt to index a nil value (local 'data') on second launch

Hi,
I just set up a server using vrp_ghmattimysql-js and everything was working on the first start (with empty database) until I restarted it. I then got this error: SCRIPT ERROR: [string "vrp_ghmattimysql-js/init_vrp.lua"]:31: attempt to index a nil value (local 'data')
Then I can't reconnect to the server as it hangs on Loading player data. The only way I found to make it work is to drop the database then recreate it.
Here's more context:
[ghmattimysql] [SUCCESS] Database server connection established.
Sending heartbeat to https://servers-ingress-live.fivem.net/ingress
Authenticating with Nucleus...
<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 10,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 10,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 10,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 10,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 10,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 10,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

[MariaDB:10.4.13-MariaDB] [WARNING] [vrp] [4327ms] CREATE TABLE IF NOT EXISTS vrp_users(
  id INTEGER AUTO_INCREMENT,
  whitelisted BOOLEAN,
  banned BOOLEAN,
  CONSTRAINT pk_user PRIMARY KEY(id)
);

CREATE TABLE IF NOT EXISTS vrp_user_ids(
  identifier VARCHAR(100),
  user_id INTEGER,
  CONSTRAINT pk_user_ids PRIMARY KEY(identifier),
  CONSTRAINT fk_user_ids_users FOREIGN KEY(user_id) REFERENCES vrp_users(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS vrp_characters(
  id INTEGER AUTO_INCREMENT,
  user_id INTEGER,
  CONSTRAINT pk_characters PRIMARY KEY(id),
  CONSTRAINT fk_characters_users FOREIGN KEY(user_id) REFERENCES vrp_users(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS vrp_user_data(
  user_id INTEGER,
  dkey VARCHAR(100),
  dvalue BLOB,
  CONSTRAINT pk_user_data PRIMARY KEY(user_id,dkey),
  CONSTRAINT fk_user_data_users FOREIGN KEY(user_id) REFERENCES vrp_users(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS vrp_character_data(
  character_id INTEGER,
  dkey VARCHAR(100),
  dvalue BLOB,
  CONSTRAINT pk_character_data PRIMARY KEY(character_id,dkey),
  CONSTRAINT fk_character_data_characters FOREIGN KEY(character_id) REFERENCES vrp_characters(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS vrp_server_data(
  id VARCHAR(100),
  dkey VARCHAR(100),
  dvalue BLOB,
  CONSTRAINT pk_server_data PRIMARY KEY(id, dkey)
);

CREATE TABLE IF NOT EXISTS vrp_global_data(
  dkey VARCHAR(100),
  dvalue BLOB,
  CONSTRAINT pk_global_data PRIMARY KEY(dkey)
);

 : []
server thread hitch warning: timer interval of 3543 milliseconds
--> (48) ComPingPacket { command: 14 }

<-- (48) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

--> (48) ComQueryPacket {
  command: 3,
  sql: '    CREATE TABLE IF NOT EXISTS vrp_character_identities(\n' +
    '      character_id INTEGER,\n' +
    '      registration VARCHAR(20),\n' +
    '      phone VARCHAR(20),\n' +
    '      firstname VARCHAR(50),\n' +
    '      name VARCHAR(50),\n' +
    '      age INTEGER,\n' +
    '      CONSTRAINT pk_character_identities PRIMARY KEY(character_id),\n' +
    '      CONSTRAINT fk_character_identities_characters FOREIGN KEY(character_id) REFERENCES vrp_characters(id) ON DELETE CASCADE,\n' +
    '      INDEX(registration),\n' +
    '      INDEX(phone)\n' +
    '    );\n' +
    '    '
}

<-- (48) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

[MariaDB:10.4.13-MariaDB] [vrp] [4ms]     CREATE TABLE IF NOT EXISTS vrp_character_identities(
      character_id INTEGER,
      registration VARCHAR(20),
      phone VARCHAR(20),
      firstname VARCHAR(50),
      name VARCHAR(50),
      age INTEGER,
      CONSTRAINT pk_character_identities PRIMARY KEY(character_id),
      CONSTRAINT fk_character_identities_characters FOREIGN KEY(character_id) REFERENCES vrp_characters(id) ON DELETE CASCADE,
      INDEX(registration),
      INDEX(phone)
    );
     : []
--> (49) ComPingPacket { command: 14 }

<-- (49) OkPacket {
  fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

--> (49) ComQueryPacket {
  command: 3,
  sql: "SELECT dvalue FROM vrp_server_data WHERE id = 'deuxmetrescubes' AND dkey = 'vRP:hidden_transformers'"
}

<-- (49) ResultSetHeaderPacket { fieldCount: 1 }

<-- (49) FieldPacket {
  catalog: 'def',
  db: 'fivem',
  table: 'vrp_server_data',
  orgTable: 'vrp_server_data',
  name: 'dvalue',
  orgName: 'dvalue',
  charsetNr: 63,
  length: 65535,
  type: 252,
  flags: 144,
  decimals: 0,
  default: undefined,
  zeroFill: false,
  protocol41: true
}

<-- (49) EofPacket {
  fieldCount: 254,
  warningCount: 0,
  serverStatus: 2,
  protocol41: true
}

<-- (49) RowDataPacket {
  dvalue: [
    131, 170,  87, 101, 101, 100,  32, 102, 105, 101, 108, 100,
    130, 168, 112, 111, 115, 105, 116, 105, 111, 110, 147, 203,
     64, 161,  96,  97, 192,   0,   0,   0, 203,  64, 181, 200,
    241,  64,   0,   0,   0, 203,  64,  74, 236,  90,  64,   0,
      0,   3, 169, 116, 105, 109, 101, 115, 116,  97, 109, 112,
    206,  94, 236,  26, 214, 175,  87, 101, 101, 100,  32, 112,
    114, 111,  99, 101, 115, 115, 105, 110, 103, 130, 168, 112,
    111, 115, 105, 116, 105, 111, 110, 147, 203,  64, 160, 213,
    180,   0,   0,   0,
    ... 99 more items
  ]
}

<-- (49) EofPacket {
  fieldCount: 254,
  warningCount: 0,
  serverStatus: 2,
  protocol41: true
}

[MariaDB:10.4.13-MariaDB] [vrp] [6ms] SELECT dvalue FROM vrp_server_data WHERE id = ? AND dkey = ? : ["deuxmetrescubes","vRP:hidden_transformers"]
SCRIPT ERROR: [string "vrp_ghmattimysql-js/init_vrp.lua"]:8: invalid value (nil) at index 1 in table for 'concat'
> blob2string (rp_ghmattimysql-js/init_vrp.lua:8)
> ref (rp_ghmattimysql-js/init_vrp.lua:45)
>  (@ghmattimysql/ghmattimysql-server.js:1)

Same but for me also appear an error from mysql saying error in mysql syntax

Same but for me also appear an error from mysql saying error in mysql syntax

SCRIPT ERROR: [string "vrp_ghmattimysql-js/init_vrp.lua"]:31: attempt to index a nil value (local 'data')

SCRIPT ERROR: [string "vrp_ghmattimysql-js/init_vrp.lua"]:31: attempt to index a nil value (local 'data')

For those still encountering this issue, GHMattiMySQL has been discontinued. Try updating to oxmysql.

repo: vRP-framework/vRP-db-drivers


text:
enrich Collada DAE exporter

DAE is an important interchange format for 3D modeling tools.  The current exporter is not actually creating DAE XML; it is simply generating essential data that must be embedded manually into a DAE template file.  I'm attaching an exported "dae" file (with ".dae.txt" extension) and the final XML file (with ".dae.xml.txt" extension).
DAE supports instancing, so the exporter could support both "faithful" and "abstract" modes.  In faithful mode, it should certainly include color information.
orange-short.dae.xml.txt
orange-short-dae.txt

Finished around a year ago

repo: vZome/vzome-desktop


text:
Allow setting a action / suffix component

Description
First of all, I am not sure if this is a vaadin-tabs or a vaadin-tabs-flow issue for now I decided to open this issue here.
When using tabs to present content often a button to close open tabs and a button to open a new tab is needed.
In browsers, this is usually being solved by offering the user a "+" action button directly beside the tabs.

While adding an extra component inside vaadin-tabs can be done easily. Adding such button seems not to be straightforward.
This feature can somehow be compared as a suffix/prefix as already available for components as vaadin-button or vaadin-textfield.
Expected outcome
vaadin-tabs should support setting one or multiple suffix (maybe also prefix but for my usecase this is irrelevant) component.
Actual outcome
vaadin-tabs does not support setting a suffix component.
Browsers Affected

All

Current Workaround
public class CustomTabs extends Tabs {

    private final Tab tab;
    private Runnable addListener;

    public CustomTabs() {
        setAutoselect(false);
        IconButton addButton = new IconButton(VaadinIcon.PLUS.create());
        addButton.getStyle()
                .set("padding", "0px")
                .set("font-size", "20px")
                .set("color", "black");
        tab = new Tab(addButton);
        tab.getStyle()
                .set("--lumo-primary-color", "transparent")
                .set("--lumo-contrast-60pct", "transparent");
        getStyle().set("padding-right", "0px");
        super.add(tab);
    }

    @Override
    public void add(Tab... tabs) {
        Arrays.stream(tabs)
                .peek(tab1 -> tab1.getElement().getStyle().set("padding", "0px"))
                .forEach(currentTab -> addComponentAtIndex(getComponentCount() - 1, currentTab));
    }

    @Override
    public Registration addSelectedChangeListener(ComponentEventListener<SelectedChangeEvent> listener) {
        return super.addSelectedChangeListener(event -> {
            if (event.getSelectedTab() == tab) {
                this.addListener.run();
                if (event.getPreviousTab() != null && getChildren().anyMatch(component -> component == event.getPreviousTab())) {
                    setSelectedTab(event.getPreviousTab());
                } else {
                    tab.setSelected(false);
                }
            } else {
                listener.onComponentEvent(event);
            }
        });
    }

    public void addAddListener(Runnable addListener) {
        this.addListener = addListener;
    }
}

Hi @appreciated
The suffix/prefix you mention are meant to be on the Tabs container or for each Tab? The former could be achieved by placing an element right before/next of Tabs. We were wondering what would differ this functionality from, eg:
HorizontalLayout container = new HorizontalLayout(
	new Button("prefix"),
	new Tabs(...),
	new Button("suffix")
);

The suffix/prefix you mention are meant to be on the Tabs container or for each Tab?
Sorry for the confusion, they are meant to be for the Tabs component. More precisly behind and in front of all tabs.
This feature could also be more abstractly described as "allow adding non selectable Components to the Tabs component".

We were wondering what would differ this functionality from, eg:
From a functionality standpoint there is no difference. Without any aditional work from the developer the UX may differ slightly since the prefix and suffix component would visually, depending on the used theme, not belong to the tabs component. Sure the UX can be improved manually but from a developer standpoint this limitation (not being able to add non-Tab components to the Tabs component) seems a bit unnecessry.

I presume what you're thinking is that, by allowing prefix/suffix content, that content would be visually part of the Tabs e.g. by being above that bottom separator line?

@rolfsmeds yes that is what I meant 👍.
Note: the alignment of the "next"-Button is different to what I showed previously (right instead of left).

Indeed, both use cases should be supported somehow, or maybe the suffix element could take whatever space is left after the tabs, and you can position the contentn in it manually as you wish.

authors: DiegoCardoso appreciated rolfsmeds

repo: vaadin/vaadin-tabs


text:
Haskell Relational Records (HRR) - initial sprint

This sprint's focus is the evaluation of HRR as a DB abstraction. The result should implement the domain API as per specs for Tenant, User and Role data types, encompassing the following:

CreateRole, DeleteRole, AssignRole, RemoveRole, GetRole
CreateUser, UpdateUser, ActivateUser, DeactivateUser, GetUser
CreateTenant, UpdateTenant, ActivateTenant, DeactivateTenant, GetTenant

Furthermore, the result should serve as an example how to implement and/or deal with the following topics in HRR:

DB model setup and migrations in HRR
Mapping to and from Haskell data types
Mapping of special types to and from Haskell: PostgreSQL enums and arrays, JSONB
Expressive power of JOINs in HRR (e.g. fetch a list of Users along with their Roles)
Treatment of housekeeping data in HRR (timestamp columns, transaction log)

Time estimate: 20 hours

@saurabhnanda The domain API is now up and running as described in the PR, minus the topics still open (enums, arrays, jsonb).
This would be a good time for you to review the code, comment some design choices, look at the overall resulting workflow etc. etc. so that I can adjust the code to your feedback, which will be highly appreciated.

@mgmeier ran into the very first (expected) issue. The HRR TemplateHaskell needs to connect to PG in the compilation step itself. How do I configure the PG credentials?

@mgmeier never mind. Figured it out. Btw, hitting a new compile error. Let's discuss it on Gitter.

I've changed HRR default mapping of PostgreSQL type text to Haskell's Data.Text. Such a custom mapping can be specified with HRR's db driver and is done in the module DefineTable.hs.

JSONB and ENUM: investigation results
This is the relation used by the HRR driver to get postgres type info; those will be the types considered for a generating a corresponding attribute in the derived Haskell type (in pseudo-code, taken from module Database.Relational.Schema.PostgreSQL):
(select * from pg_type)
    wheres $ att ! Attr.atttypid'    .=. typ ! Type.oid'
    wheres $ typ ! Type.typtype'     .=. value 'b'  -- 'b': base type only

    wheres $ typ ! Type.typcategory' `in'` values [ 'B' -- Boolean types
                                                  , 'D' -- Date/time types
                                                  , 'I' -- Network Address types
                                                  , 'N' -- Numeric types
                                                  , 'S' -- String types
                                                  , 'T' -- typespan types
                                                  ]

We can see, JSONB is not amongst them as it is of category 'U' (user-defined).
Also, enums are not considered for mapping, they're of category 'E'.
Conlusion: The HRR library has to be patched accordingly for HRR to even consider
generating a datatype derivation for those categories in Haskell.

Do you think this is easy to patch in HRR (JSONB and enums)?
On 18 Nov 2016 9:50 pm, "M. G. Meier" notifications@github.com wrote:

JSONB and ENUM: investigation results
This is the relation used by the HRR driver to get postgres type info;
those will be the types considered for a generating a corresponding
attribute in the derived Haskell type (in pseudo-code, taken from module
Database.Relational.Schema.PostgreSQL):
(select * from pg_type)
wheres $ att ! Attr.atttypid'    .=. typ ! Type.oid'
wheres $ typ ! Type.typtype'     .=. value 'b'  -- 'b': base type only
wheres $ typ ! Type.typcategory' `in'` values [ 'B' -- Boolean types
                                              , 'D' -- Date/time types
                                              , 'I' -- Network Address types
                                              , 'N' -- Numeric types
                                              , 'S' -- String types
                                              , 'T' -- typespan types
                                              ]

We can see, JSONB is not amongst them as it is of category 'U'
(user-defined).
Also, enums are not considered for mapping, they're of category 'E'.
Conlusion: The HRR library has to be patched accordingly for HRR to even
consider
generating a datatype derivation for those categories in Haskell.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/vacationlabs/haskell-webapps/pull/50#issuecomment-261573011,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABu0bDV2S0BeVoeuTFW4sCZIpviWHE0ks5q_dBjgaJpZM4KqFnU
.

Audit logging works fine for now; the logic for creating the JSON diff is in the application layer (Haskell), not on the DB.

Don't forget to create DB from scratch (schema.sql) and possibly completely eliminate .stack-work/, since I've replaced the source repo for HRR with the fork where my patch is applied.

authors: mgmeier saurabhnanda

repo: vacationlabs/haskell-webapps