Unexpected behavior after implementing TableBotDataStore

Install Azure Storage Emulator and check operation
Steps to reproduce using SampleAADv2Bot:

Install NuGet Package Autofac.WebApi2
Install NuGet package Microsoft.BotBuilder.Azure

in Global.asax.cs

Add the following after the Application Start method
private void ConfigureBotTableStorage()
{
string tableName = "UserStateDev";
     TableBotDataStore store = new TableBotDataStore(CloudStorageAccount.DevelopmentStorageAccount, tableName);

     var builder = new ContainerBuilder();

     builder.Register(c => store)
         .Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
         .AsSelf()
         .SingleInstance();

     builder
         .Register(c =>
         {
             return new CachingBotDataStore(store, CachingBotDataStoreConsistencyPolicy.ETagBasedConsistency);
         })
         .As<IBotDataStore<BotData>>()
         .AsSelf()
         .InstancePerLifetimeScope();

     // Get your HttpConfiguration.
     var config = GlobalConfiguration.Configuration;

     // Register your Web API controllers.
     builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

     // OPTIONAL: Register the Autofac filter provider.
     builder.RegisterWebApiFilterProvider(config);

     // Set the dependency resolver to be Autofac.
     //var container = builder.Build();
     builder.Update(Conversation.Container);
     config.DependencyResolver = new AutofacWebApiDependencyResolver(Conversation.Container);
   @@}

Before the line
GlobalConfiguration.Configure(WebApiConfig.Register);
insert the line
ConfigureBotTableStorage();

Save and compile

Connect to the bot on http://localhost:3978/api/messages with the Bot Framework Channel Emulator

Send logon to the bot inthe emulator

Click the Authentication Required link in the emulator

Log in using a Microsoft account in the browser window that opens

Copy the magic number to send back to the bot

Expected behavior
Bot prompts for the magic number
Actual behavior
Bot displays sign-in card again.

Same issue.  Did you figure out how to get past this problem?

If someone has the answer to this please post.
Thanks!

Afraid not.. I'm still experiencing the problem.

@weretygr @yellowwidget @shrubby
This is due to the fact that the current implementation of AuthBot is using the default state client in the OAuthCallbackController.  Modifying the controller as follows will make it work with the TableBotDataStore implementation you are using:

add a new class that implements IAddress:

public class AddressKey : IAddress
{
	public string BotId { get; set; }
	public string ChannelId { get; set; }
	public string ConversationId { get; set; }
	public string ServiceUrl { get; set; }
	public string UserId { get; set; }
}

In place of IStateClient sc = scope.Resolve();  retrieve the IBotDataStore>

var botDataStore = scope.Resolve<IBotDataStore<BotData>>();`

Instead of sc.BotState.GetUserData use the botDataStore to retrieve the user BotData object:

var userData = await botDataStore.LoadAsync(key, BotStoreType.BotUserData, CancellationToken.None);

Instead of sc.BotState.SetUserData use the botDataStore to save the userData

await botDataStore.SaveAsync(key, BotStoreType.BotUserData, userData, CancellationToken.None);
await botDataStore.FlushAsync(key, CancellationToken.None);

I've created a PR for this: https://github.com/MicrosoftDX/AuthBot/pull/37

@EricDahlvang - Thank you very much for your time investigating and figuring this out.  I just tested and it works great.

How do we fix this as we are using the AuthBot Nuget

@vibjain Please switch your project to using BotAuth. AuthBot uses the default state client, and will be deprecated in the future.
https://www.nuget.org/packages/BotAuth/3.9.0-alpha
https://github.com/richdizz/BotAuth

Can you provide some guidance on moving to the BotAuth, currently I am stuggling with the ContextExtensions methods like Logout & GetAccessToken will we have to implements these methods ourselves now? I don't see them in the BothAuth anywhere. Thanks

There is a little information on this page: https://github.com/richdizz/BotAuth/tree/7138ecf743423bcf13f53c09644ecdb60f0ec7da/CSharp  and five sample applications.  Have you reviewed those?

Hi @EricDahlvang, thanks for your help. I think I made progress and changed my code form AuthBot to BotAuth. However after completing all the steps I am hitting this open issue.
https://github.com/richdizz/BotAuth/issues/8
So, I cannot use the TableBotDataStore because AuthBot is not compatible & BotAuth has an open issue currently.

@vibjain I've created a PR to address this: https://github.com/richdizz/BotAuth/pull/10  Until it is merged, you can clone the repository, modify the local CallbackController.cs and include it in your project.
I hope this helps.


Fixes on v1.2.0

This PR contains following fixes done on top of SAML Raider v1.2.0.

Unit test for XSW1 was not complete previously and with this it is completed.

A new textbox 'Evil Subject' is added to the GUI. A user can enter the username of the victim account in this textbox and apply a particular XSW. When the malicious SAML response is generated, the evil assertion's name identifier value is replaced with the value in this textbox if it is provided. The user does not need to manually modify the evil assertion with this improvement.

All the unit tests were directly calling particular XSW attack methods without calling the common applyXSW method passing the XSW type as a parameter. Now all unit tests are calling the common method passing the particular XSW type.

The image that showed all XSW attacks' XML tree had incorrect diagrams. XSW2 diagram was not correct which actually was a duplicate of XSW1 diagram. XSW5 was also not correct which actually was a duplicate of XSW4 diagram. Apart from that, the XML tree was showing Assertion -> Assertion -> Subject for original assertion where the correct tree should be Assertion -> Subject.  All the XSW attacks diagrams are corrected with this pull request.

Hey @thariyarox
Thanks very much for your work, which we really appreciate! This are nice features/improvements/fixes!
I'll publish the new release 1.3.0 soon.

Hi @thariyarox
Today I had time to check the new added code. I had some issues concerning the new introduced textbox.
I tried several assertions, but it was not possible to apply the XSW attacks. The problem is, that the content of the textbox is replacing the content of the XML tag NameID, which is not always available. See here for an example: https://github.com/SAMLRaider/SAMLRaider/blob/master/scripts/samltest/saml_response.xml.
In some assertions, the the NameID tag is available, but just a Transient Identifier (see https://www.oasis-open.org/committees/download.php/4587/ chapter 7.3.7), which is only a temporary id, which will not contain a username or something like that.
I think it's quite difficult to implement atextbox to set the evil subject on the correct position. Sometimes, you may want to change a e-mail address and sometimes a group the user belongs to. These can be in one or more attribute statement. During a test, the part(s) I want to change in the evil assertion can be anywhere. That's why I had to revert the commits related to the textbox. Sorry.
But I thank you anyway for the other commits!

Hi Emanuel,
No worries. I would like to contribute with new attack types. I will send a PR later.
Thanks !


Multiple menus should not be able to be open at once

This situation should not be possible:

Instead when a user clicks on a new menu item the other menu should close.

duplicate of #1424


fix(WEB-8917): [Literature] Unable to upload images

Pull Request Test Coverage Report for Build ead8c612d362f76eb4fd58ad1dadda5790ee11a1

17 of 19 (89.47%)  changed or added relevant lines in 4 files are covered.
7 unchanged lines in 3 files lost coverage.
Overall coverage increased (+0.008%) to 69.486%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

lib/literature/components/forms/post_form_component.ex
12
14
85.71%

Files with Coverage Reduction
New Missed Lines
%

lib/literature/helpers/meta_tag_helpers.ex
1
84.62%

test/support/router.ex
1
46.15%

lib/literature/router.ex
5
0.0%

Totals

Change from base Build 28975dad9bfdf139d9fba3d3f21f4e75acd44ee6:
0.008%

Covered Lines:
1150

Relevant Lines:
1655

💛  - Coveralls


Encoding/embedding used in publication?

Hi,
Thanks for making this code available. I have a question about the embedding/encoding used in your associated publication. In pretrain_trfm.py, the TrfmSeq2seq._encode function produces encodings which are the concatenation of the means, maxs, and 0-index of the last and second-to-last outputs. Is this concatenation the encoding which is used for the t-SNE reductions in Figure 3?
Have you investigated the effect of SMILES randomization on the embedding outputs?
Best regards,
Steve

Hi, thanks for your interest.

Is this concatenation the encoding which is used for the t-SNE reductions in Figure 3?

Yes, that is done in this notebook.

Have you investigated the effect of SMILES randomization on the embedding outputs?

No, I haven't. But that would be worth a try!
Shion

This manuscript was an excellent inspiration. Thank you very much for sharing it.


Feature: custom placeholder

As a developer I would like to have a custom placeholder.
This is useful in situations where you implement the following logic

selecting no element means selecting all available elements
selecting a single element => selected elements

If you do this in a dependant-scenario (let's say the city you pick depends on the country), it can appear that no previous selection will mean no available selection.
A custom placeholder like
customPlaceholder() => {
  return (logic.allOptions) ? `all cities for ${logic.country}` : 'no cities'
}

Would come in handy to solve this issue.

You can pass a dynamic placeholder. All the data is already available outside of VueMultiselect internals so a computed property or function call should be enough.
Example:
// template
<VueMultiselect v-model="value" :options="allOptions" :placeholder="customPlaceholder"/>

// computed in script
computed: {
  customPlaceholder () {
    return this.allOptions ? `all cities for ${this.country}` : 'no cities'
  }
}

I hope it helps.
Cheers1

How to allow html markup in palceholder? if i need insert span with color?


RequestHeader type edge cases

The way the RequestHeader type is built brings up some possibly undefined edge cases.  For example, this returns false:
ContentType applicationJSON == RequestHeader "Content-Type" "application/json"

And are these the same?
affjax $ defaultRequest { headers = [ ContentType applicationJSON ] }

affjax $ defaultRequest { headers = [ RequestHeader "Content-Type" "application/json" ] }

Yeah, this is a known thing, but something I haven't gotten around to sorting out. The HTTP headers shouldn't even be managed by this project really, I did start a more comprehensive version in contrib: https://github.com/purescript-contrib/purescript-http-headers but it needs plenty of work too.
Being able to pattern match on the headers is quite useful, so hiding the constructor and just providing a smart constructor that will ensure that the types are canonicalised isn't ideal, so maybe we either need to provide a canoncialiseHeader function, or perhaps a CanoncialHeader type that can be matched on or something like that.


Withdraw all id/salv kits

[20:17] John Click: Does the store/withdraw all salvage kits only store/withdraw one for anyone else?

Hey, i've noticed the same with minipets, i guess item need to be stackable

That'll be dedicated vs non dedicated

They were all unded and all the same


TextEditor control causes postback when page is invalid

Description of bug
When a form contains a TextEditor control, the validation state of the page is ignored and the form is posted. This is caused by the code added to the WebForm_OnSubmit function that in one case (page is invalid) does not return false, thus causing the postingback of the page.
Steps to reproduce
Just open in edit an HTML/Text module and check the page source code received by the webserver.
The following code appears in my case for the WebForm_OnSubmit and therefore might slightly differ from the one of the HTML/Text. Nevertheless the line with the return without a value (true or false) is the same.
function WebForm_OnSubmit() {
if (CKEDITOR && CKEDITOR.instances && CKEDITOR.instances.dnn_ctr642_Edit_Description_Description)
{
CKEDITOR.instances.dnn_ctr642_Edit_Description_Description.updateElement();
if (typeof Page_IsValid !== 'undefined' && !Page_IsValid) return;
CKEDITOR.instances.dnn_ctr642_Edit_Description_Description.destroy();
};
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;

}
Current behavior
When the page is invalid, by not returning false causes the postingback of the page.
Expected behavior
The page should not postback as the client validation is failing.
Error information
I am not sure if the above code is added by DNN or by the CKEDITOR itself. I failed to find the code in both but something is puting it there. In fact if TextEditor is removed from the page the WebForm_OnSubmit is different.
Affected version

[ ] 10.0.0 alpha build
[ ] 9.5.0 alpha build
[ X] 9.4.4 latest supported release

Affected browser

[ X] Chrome
[ X] Firefox
[ ] Safari
[ ] Internet Explorer 11
[ X] Microsoft Edge (Classic)
[ ] Microsoft Edge Chromium

I am not sure I understand the issues, what do you mean by validation, other fields in other modules of the page? Can you give a clear non-developer example of the issue with what should happen and what happens instead.

Hi sorry for not being clear.
What I mean is that in a webform with fields validated with validators (such as RequiredFieldValidator) if I add a TextEditor (CKEDITOR) to the page, when I press the button to submit the form, the form is sent to the server even if the page is not valid. If I remove the TextEditor the validation works as expected, that is, it is not sent to the server until the validation succeed.
Looking at the .net validation process I found out that the postback of the page happens if the following condition happens:
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
The highlighted instruction calls the code I wrote in my original post. Because the page is invalid, the mentioned code returns "undefined" that is != false and the postback happens instead of being stopped as it should do.
I hope this clarifies the problem, even if, as I said, I am not sure if it depends on DNN or on CKEDITOR itself… I was not able to find out who writes the code that appears in the WebForm_OnSubmit function when the TextEditor control is added to the form.


Translate reference/access-authn-authz/service-accounts-admin/ into Korean

This is a Feature Request
What would you like to be added
Translate reference/access-authn-authz/service-accounts-admin/ into Korean.
Why is this needed
There is no document of reference/access-authn-authz/service-accounts-admin/ which is translated into Korean.
Comments
Page to translate: https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/

/language ko
/assign

/close


Error when installing scipy 1.11.2

After adding scipy = "^1.11.2" to pyproject.toml and doing poetry install, I get this error:
Installing scipy (1.11.2): Failed

  ChefBuildError

  Backend subprocess exited when trying to invoke build_wheel

  + meson setup /private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmpyufnnfe9/scipy-1.11.2 /private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmpyufnnfe9/scipy-1.11.2/.mesonpy-s4dpkl63/build -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=/private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmpyufnnfe9/scipy-1.11.2/.mesonpy-s4dpkl63/build/meson-python-native-file.ini
  The Meson build system
  Version: 1.2.2
  Source dir: /private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmpyufnnfe9/scipy-1.11.2
  Build dir: /private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmpyufnnfe9/scipy-1.11.2/.mesonpy-s4dpkl63/build
  Build type: native build
  Project name: SciPy
  Project version: 1.11.2
  C compiler for the host machine: cc (clang 13.0.0 "Apple clang version 13.0.0 (clang-13<IP_ADDRESS>)")
  C linker for the host machine: cc ld64 711
  C++ compiler for the host machine: c++ (clang 13.0.0 "Apple clang version 13.0.0 (clang-13<IP_ADDRESS>)")
  C++ linker for the host machine: c++ ld64 711
  Cython compiler for the host machine: cython (cython 0.29.36)
  Host machine cpu family: aarch64
  Host machine cpu: aarch64
  Program python found: YES (/private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmptv_17tzb/.venv/bin/python)
  Found pkg-config: /opt/homebrew/bin/pkg-config (0.29.2)
  Run-time dependency python found: YES 3.11
  Program cython found: YES (/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmptv_17tzb/.venv/bin/cython)
  Compiler for C supports arguments -Wno-unused-but-set-variable: NO
  Compiler for C supports arguments -Wno-unused-function: YES
  Compiler for C supports arguments -Wno-conversion: YES
  Compiler for C supports arguments -Wno-misleading-indentation: YES
  Library m found: YES
  Fortran compiler for the host machine: gfortran (gcc 13.2.0 "GNU Fortran (Homebrew GCC 13.2.0) 13.2.0")
  Fortran linker for the host machine: gfortran ld64 711
  Compiler for Fortran supports arguments -Wno-conversion: YES
  Checking if "-Wl,--version-script" : links: NO
  Program pythran found: YES (/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmptv_17tzb/.venv/bin/pythran)
  Found CMake: /opt/homebrew/bin/cmake (3.20.5)
  WARNING: CMake Toolchain: Failed to determine CMake compilers state
  Run-time dependency xsimd found: NO (tried pkgconfig, framework and cmake)
  Run-time dependency threads found: YES
  Library npymath found: YES
  Library npyrandom found: YES
  pybind11-config found: YES (/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmptv_17tzb/.venv/bin/pybind11-config) 2.10.4
  Run-time dependency pybind11 found: YES 2.10.4
  Run-time dependency openblas found: NO (tried pkgconfig, framework and cmake)
  Run-time dependency openblas found: NO (tried pkgconfig, framework and cmake)

  ../../scipy/meson.build:159:9: ERROR: Dependency "OpenBLAS" not found, tried pkgconfig, framework and cmake

  A full log can be found at /private/var/folders/cw/l9gt1jf96fd06t2_f6p0sb040000gn/T/tmpyufnnfe9/scipy-1.11.2/.mesonpy-s4dpkl63/build/meson-logs/meson-log.txt

  at ~/.pyenv/versions/3.9.4/lib/python3.9/site-packages/poetry/installation/chef.py:147 in _prepare
      143│
      144│                 error = ChefBuildError("\n\n".join(message_parts))
      145│
      146│             if error is not None:
    → 147│                 raise error from None
      148│
      149│             return path
      150│
      151│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with scipy (1.11.2) not supporting PEP 517 builds. You can verify this by running 'pip wheel --use-pep517 "scipy (==1.11.2)"'.

The issue was solved by doing:
PKG_CONFIG_PATH="/opt/homebrew/opt/openblas/lib/pkgconfig" poetry install


Integrate jupyter-videochat into qhub by default

To help with trainings, etc, we want jupyter-videochat installed by default. It becomes a JupyterLab extension enabled by default and provided on the right sidebar.

@yuvipanda I have this added to the latest qhub deployment but for some reason I am unable to "join room by name". Am I missing something in the configuration?

@costrouc can you tell me what version of jupyterlab-videochat is installed? Also does it show the hardcoded 'CA 16A' style room names?

Version

This is the screen I see with no default chats


Add owners parameter to CoinbaseWalletSDK

Related to #1275
Add support for initializing owners implicitly at the time of setup in CoinbaseWalletSDK.

CoinbaseWalletSDK.ts and CoinbaseWalletSDK.native.ts

Add owners parameter to the CoinbaseWalletSDK constructor.
Update makeWeb3Provider method to pass the owners parameter to the CoinbaseWalletProvider.

CoinbaseWalletProvider.ts

Add owners parameter to the CoinbaseWalletProvider constructor.
Update initialize method to handle owner initialization during setup.
Add initializeOwners method as a placeholder for owner initialization logic.

Tests

Update CoinbaseWalletProvider.test.ts to add tests for the new owners parameter in the CoinbaseWalletProvider constructor.
Update CoinbaseWalletSDK.test.ts to add tests for the new owners parameter in the CoinbaseWalletSDK constructor.
Update CoinbaseWalletSDK.native.test.ts to add tests for the new owners parameter in the CoinbaseWalletSDK constructor.

Documentation

Update README.md to include instructions for initializing owners during setup.

For more details, open the Copilot Workspace session.

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
1

Sum
2

🟡 Heimdall Review Status

Requirement
Status
More Info

Reviews

🟡
0/1

Denominator calculation

Show calculation

1 if user is bot
0

1 if user is external
0

From .codeflow.yml

1

Additional review requirements

Show calculation

Max
0

0

From CODEOWNERS

0

Global minimum
0

Max

1

1

1 if commit is unverified
1

Sum
2

@bangtoven Could you take a look at this PR?

sdk is not a proper abstraction layer to take this. sdk constructor is to define dapp’s configuration, not account specific parameters.
if we plan to support this, it should be on the scw wallet side.
the pr is to just take parameters and store them without actual implementation, which is not possible on the sdk side anyway.

@ebamishaye thanks for opening the pr. but doesn’t seem like it has actual feature. please chime in on the discussion thread.

Thanks for the feedback!


'Maximum default elements' on main options

Please add to the general options an editable number 'maximum elements' to allow change default value 25 when registering to a new RSS.
Currently, it is needed to edit every registered RSS and change 25 to user preference which can be quickly tiring.

@byblo @nt1m sorry to revive this rather old issue for my own purpose but I am looking for this setting to increase it on a couple of my livemarks but I can't find it... Even if I have to do it for each feed, that's OK in my case.
Thanks for the great tool by the way.

I found it. Let me document it if anyone else stumble upon that issue.
Go to "Settings" and click on the "Extensions and Themes" (or type the following address in the URL bar "about:addons"). Then in the "Manage Your Extensions" section, find "Livemarks" and click the "..." button and choose "Preferences". There you will find a list of all your livemarks and each has a "..." button to access the individual feed settings, including the maximum items displayed.


When using aliased union types, intellisense shows the constituent types and not the alias name

TypeScript Version:  3.7 && playground
Search Terms:
union type alias
Code
When using a union type with an alias, you expect the intellisense label to show the name of the alias, not the constituent types.
In the following example, I would expect to see the label as "C", however TypeScript reports the type label as "A & B"

However, when using interfaces which extend multiple interfaces, you see the interface name:

Expected behavior:
Type alias intellisense should function the same as interface intellisense
Playground Link:
Union types with type alias
Interfaces

Relevant / duplicate (?): #34556

Please note that you're talking about intersection types (&) and not union types (|).

Thanks for the heads up, I have updated the ticket accordingly

This is the intended behavior. When you over over C you see C's definition; saying "C is C" is not a useful hover. Interfaces don't have a useful right-hand-side thing to show here, so interface C is sort of the best we can do.
When you invoke foo, you see the alias as expected, which is the place where it is useful:


Volume don't work in iOS Safari

Change Volume in mobile iOS Safari, I handle volume by states, works well on android mobile with Chrome. react-player 1.7.0 and "react": "^16.6.0",

See https://github.com/CookPete/react-player/issues/129#issuecomment-263335172


Unable to setup Development Environment

Describe the bug
Unable to build with Option 1: Using the Docker-based FPC Development Environment
To Reproduce
Add steps to reproduce the behavior, e.g.

git clone --recursive https://github.com/hyperledger-labs/fabric-private-chaincode.git
cd fabric-private-chaincode/
cd utils/docker/
sudo apt install make
make dev

Expected behavior
Docker container should build
Log-file
`make[2]: Leaving directory '/tmp/intel-sgx-ssl/openssl_source/openssl-1.1.1g'
make -C /tmp/intel-sgx-ssl/Linux/sgx/libsgx_tsgxssl/ all
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_tsgxssl'
/opt/intel/sgxsdk/bin/x64/sgx_edger8r --header-only --trusted /tmp/intel-sgx-ssl/Linux/sgx/../package/include//sgx_tsgxssl.edl --search-path /opt/intel/sgxsdk/include
GEN  =>  sgx_tsgxssl_t.c
CXX  <=  tSgxSSL_api.cpp
CXX  <=  tcpu_utils.cpp
CXX  <=  tctype.cpp
tmem_mgmt.cpp: In function 'void* mmap_alloc(size_t)':
tmem_mgmt.cpp:99:24: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=]
99 |  catch (std::bad_alloc e) {
|                        ^
CXX  <=  tmem_mgmt.cpp
tpthread.cpp: In function 'int sgxssl_pthread_rwlock_init(pthread_rwlock_t*, const pthread_rwlockattr_t*)':
tpthread.cpp:83:24: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=]
83 |  catch (std::bad_alloc e) {
|                        ^
tpthread.cpp: In function 'int sgxssl_pthread_key_create(pthread_key_t*, void ()(void))':
tpthread.cpp:416:26: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=]
416 |  } catch (std::bad_alloc e) {
|                          ^
tpthread.cpp: In function 'int sgxssl_pthread_setspecific(pthread_key_t, const void*)':
tpthread.cpp:537:25: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=]
537 |   catch (std::bad_alloc e)
|                         ^
tpthread.cpp:555:24: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=]
555 |  catch (std::bad_alloc e)
|                        ^
CXX  <=  tpthread.cpp
CXX  <=  trand.cpp
CXX  <=  tsgxssl_version.cpp
CXX  <=  tsocket.cpp
CXX  <=  tstdio.cpp
CXX  <=  tstdlib.cpp
CXX  <=  tstring.cpp
CXX  <=  ttime.cpp
CXX  <=  tucontext.cpp
CXX  <=  tunistd.cpp
CC  <=  bionic_localtime.c
bionic_sscanf.c: In function 'sgxssl_vsscanf':
bionic_sscanf.c:381:19: warning: array subscript has type 'char' [-Wchar-subscripts]
381 |     while (ccltab[str_buf]) {
|                   ^~~~~~~~
bionic_sscanf.c:395:19: warning: array subscript has type 'char' [-Wchar-subscripts]
395 |     while (ccltab[str_buf]) {
|                   ^~~~~~~~
CC  <=  bionic_sscanf.c
texceptions.c: In function 'setup_cpuinfo':
texceptions.c:130:9: warning: incompatible implicit declaration of built-in function 'memcpy'
130 |         memcpy(cpuinfo, cpuinfo_table, sizeof(uint32_t)84);
|         ^~~~~~
texceptions.c:38:1: note: include '<string.h>' or provide a declaration of 'memcpy'
37 | #include "tcommon.h"
+++ |+#include <string.h>
38 |
CC  <=  texceptions.c
ar rcs libsgx_tsgxssl.a release/tSgxSSL_api.o release/tcpu_utils.o release/tctype.o release/tmem_mgmt.o release/tpthread.o release/trand.o release/tsgxssl_version.o release/tsocket.o release/tstdio.o release/tstdlib.o release/tstring.o release/ttime.o release/tucontext.o release/tunistd.o release/bionic_localtime.o release/bionic_sscanf.o release/texceptions.o
LINK =>  libsgx_tsgxssl.a
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_tsgxssl'
make -C /tmp/intel-sgx-ssl/Linux/sgx/libsgx_usgxssl/ all
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_usgxssl'
CC  <=  usgxssl_version.cpp
In file included from utime.cpp:34:
ucommon.h:40: warning: ignoring #pragma warning  [-Wunknown-pragmas]
40 | #pragma warning( disable: 4100 )
|
utime.cpp: In function 'void u_sgxssl_ftime(void, uint32_t)':
utime.cpp:60:32: warning: 'int ftime(timeb)' is deprecated [-Wdeprecated-declarations]
60 |  ftime((struct timeb ) timeptr);
|                                ^
In file included from utime.cpp:32:
/usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here
39 | extern int ftime (struct timeb __timebuf)
|            ^~~~~
utime.cpp:60:32: warning: 'int ftime(timeb)' is deprecated [-Wdeprecated-declarations]
60 |  ftime((struct timeb ) timeptr);
|                                ^
In file included from utime.cpp:32:
/usr/include/x86_64-linux-gnu/sys/timeb.h:39:12: note: declared here
39 | extern int ftime (struct timeb __timebuf)
|            ^~~~~
CC  <=  utime.cpp
ar rcs libsgx_usgxssl.a release/usgxssl_version.o release/utime.o
LINK =>  libsgx_usgxssl.a
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_usgxssl'
make -C /tmp/intel-sgx-ssl/Linux/sgx/test_app/ all
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make -f sgx_u.mk LINUX_SGX_BUILD=0 all
make[3]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
GEN  =>  app/TestEnclave_u.c
CC   <=  app/TestEnclave_u.c
app/TestApp.cpp: In function 'int initialize_enclave()':
app/TestApp.cpp:184:45: warning: argument to 'sizeof' in 'char strncpy(char, const char, size_t)' call is the same expression as the source; did you mean to use the size of the destination? [-Wsizeof-pointer-memaccess]
184 |         strncpy(token_path, TOKEN_FILENAME, sizeof(TOKEN_FILENAME));
|                                             ^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:495,
from app/TestApp.cpp:34:
In function 'char* strncpy(char*, const char*, size_t)',
inlined from 'int initialize_enclave()' at app/TestApp.cpp:179:16:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:34: warning: 'char* __builtin___strncpy_chk(char*, const char*, long unsigned int, long unsigned int)' output truncated before terminating nul copying as many bytes from a string as its length [-Wstringop-truncation]
106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (_dest));
|          ^~~~~~~~~~~~~~
app/TestApp.cpp: In function 'int initialize_enclave()':
app/TestApp.cpp:177:16: note: length computed here
177 |         (strlen(home_dir)+strlen("/")+sizeof(TOKEN_FILENAME)+1) <= MAX_PATH) {
|          ^~~~
CXX  <=  app/TestApp.cpp
LINK =>  TestApp
make[3]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make -f sgx_t.mk LINUX_SGX_BUILD=0 all
make[3]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
GEN  =>  enclave/TestEnclave_t.c
CC   <=  enclave/TestEnclave_t.c
CXX  <=  enclave/TestEnclave.cpp
CC  <=  enclave/tests/ecdhtest.c
CC  <=  enclave/tests/sha1test.c
CC  <=  enclave/tests/missing_funcs.c
CC  <=  enclave/tests/threadstest.c
CC  <=  enclave/tests/stdio_func.c
CC  <=  enclave/tests/dhtest.c
CC  <=  enclave/tests/ecdsatest.c
CC  <=  enclave/tests/rsa_test.c
CC  <=  enclave/tests/bntest.c
CC  <=  enclave/tests/sha256t.c
CC  <=  enclave/tests/ectest.c
LINK =>  TestEnclave.so
tcs_num 10, tcs_max_num 10, tcs_min_pool 1
The required memory is 22507520B.
The required memory is 0x1577000, 21980 KB.
Succeed.

0
0
0x40000
0x1000000
10
1
0

SIGN =>  TestEnclave.signed.so
make[3]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[1]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx'
make -C sgx/ test
make[1]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx'
make -C /tmp/intel-sgx-ssl/Linux/sgx/libsgx_tsgxssl/ all
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_tsgxssl'
/opt/intel/sgxsdk/bin/x64/sgx_edger8r --header-only --trusted /tmp/intel-sgx-ssl/Linux/sgx/../package/include//sgx_tsgxssl.edl --search-path /opt/intel/sgxsdk/include
GEN  =>  sgx_tsgxssl_t.c
ar rcs libsgx_tsgxssl.a release/tSgxSSL_api.o release/tcpu_utils.o release/tctype.o release/tmem_mgmt.o release/tpthread.o release/trand.o release/tsgxssl_version.o release/tsocket.o release/tstdio.o release/tstdlib.o release/tstring.o release/ttime.o release/tucontext.o release/tunistd.o release/bionic_localtime.o release/bionic_sscanf.o release/texceptions.o
LINK =>  libsgx_tsgxssl.a
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_tsgxssl'
make -C /tmp/intel-sgx-ssl/Linux/sgx/libsgx_usgxssl/ all
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_usgxssl'
make[2]: Nothing to be done for 'all'.
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/libsgx_usgxssl'
make -C /tmp/intel-sgx-ssl/Linux/sgx/test_app/ all
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make -f sgx_u.mk LINUX_SGX_BUILD=0 all
make[3]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make -f sgx_t.mk LINUX_SGX_BUILD=0 all
make[3]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[3]: Nothing to be done for 'all'.
make[3]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make -C /tmp/intel-sgx-ssl/Linux/sgx/test_app/ test
make[2]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make -f sgx_u.mk test
make[3]: Entering directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[3]: *** [sgx_u.mk:108: test] Illegal instruction (core dumped)
make[3]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[2]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx/test_app'
make[2]: *** [Makefile:38: test] Error 2
make[1]: *** [Makefile:74: test] Error 2
make: *** [Makefile:58: test] Error 2
make[1]: Leaving directory '/tmp/intel-sgx-ssl/Linux/sgx'
The command '/bin/sh -c git clone 'https://github.com/intel/intel-sgx-ssl.git'   && cd intel-sgx-ssl   && . /opt/intel/sgxsdk/environment   && git checkout lin${SGXSSL}   && cd openssl_source   && wget -q https://www.openssl.org/source/openssl-${OPENSSL}.tar.gz   && cd ../Linux   && make SGX_MODE=SIM DESTDIR=${SGX_SSL} all test   && make install' returned a non-zero code: 2
make: *** [Makefile:170: base-dev] Error 2
vagrant@hlf-fpc:~/fabric-private-chaincode/utils/docker$ cd /tmp
vagrant@hlf-fpc:/tmp$ git clone 'https://github.com/intel/intel-sgx-ssl.git

'
Cloning into 'intel-sgx-ssl'...
warning: url contains a newline in its path component: https://github.com/intel/intel-sgx-ssl.git
/
fatal: credential url cannot be parsed: https://github.com/intel/intel-sgx-ssl.git
/
`

Environment (please complete the following information):

in a vagrant 20.04 image
installed docker & docker-compose
followed [https://github.com/hyperledger-labs/fabric-private-chaincode] Option 1: Using the Docker-based FPC Development   Environment

It looks something goes wrong when SGXSSL is compiled during the docker build. Not sure why this happens.
Can you please post the docker version you are using?
I've noticed that you "checkout" the master branch, which may be sometime unstable, however, I've tried to reproduce it by following the steps you reported but on a baremetal ubuntu 20.04 - no vagrant. Unfortunately I cannot reproduce the the reported error.
Also note that in vagrant@hlf-fpc:/tmp$ git clone 'https://github.com/intel/intel-sgx-ssl.git there is a ' before the github url. Nevertheless, I think is is not related to the SGXSSL error you've experienced.
When you re-run make dev do you get the same error? Maybe cleanup your local docker registry to make sure you start from scratch.  Please let me know if this error remains.

@joyosive Any luck?
I was compiling the FPC dev docker image including SGX SSL yesterday and I was not able to reproduce the error you reported here.

Let's close this issue for now, if you still experience this issue, please re-open. Thank you!


Column Delimeter and Row Delimeter - Empty String

Hi,
Column Delimeter and Row Delimeter - Empty String is not supported in Copy Activity.
Please update the documentation accordingly if that is expected behavior.
Regards,
Vishal

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 2309a152-b9bc-7876-e010-b3bde6945d42
Version Independent ID: 751c7679-b01c-301d-8211-30f43ff50c54
Content: Delimited text format in Azure Data Factory - Azure Data Factory
Content Source: articles/data-factory/format-delimited-text.md
Service: data-factory
GitHub Login: @linda33wj
Microsoft Alias: jingwang

@vishalaj1 Thanks for bringing this to our notice. I am assigning the issue to the content owner to review and update as appropriate.
@linda33wj Can you please take a look at this? I can confirm that when using a dataset with no delimiters in a copy activity, the following errors are thrown :

Thanks for the feedback! It's correct that currently empty string as delimiter is not supported in Copy activity. I've updated the doc to clarify this.
#please-close


attempt to sync time using ntp

It looks like there's SNTP functionality in esp-idf. We probably ought use it to try and set the RTC to something real.

                                                                                dankdryer
a drying comes across the sky

   lpwm: 32 upwm: 32
   lrpm: 0 urpm: 0
   motor: off heater: off
   mass: 0.000000
   lm35: 38.644688 esp32s3: 27.700001
   dryends: 0

     --------------------------------------------------------------------------------------------------------------------------

   Thu Oct 31 14:52:04 2024

w00t! this only works currently if there's a valid NTP server in the DHCP options.

https://docs.espressif.com/projects/esp-idf/en/stable/esp32s3/api-reference/network/esp_netif.html#use-both-static-and-dynamic-servers explains how to use both a static server and DHCP-provided ones


Maintenance QOL: Update build artifacts to match release names

Artifacts should match our release format, which includes version number

On tag creation, a pipeline should kick off matching the below format, which will then be used as the assets in question (automatic release is possible, bonus to look into that - this repo for example has this working - GitHub Actions performs the release on tag)
For PR artifacts that are non-releases / non-tagged, the short commit hash should be included
Optional: drop the matrix style pipeline for Windows, I don't think we need debug to run in CI.

Note:  On releases we directly upload the unzipped AppImage as there is no compression savings. this can be ignored if we can't directly push as an AppImage
Current format
linux-ubuntu-22.04-appimage.zip
linux-ubuntu-22.04-binary.zip
macOS-intel.zip
windows-release.zip

Planned Format
Release/Tagged format:
dolphin-memory-engine-1.1.1-linux-x86_64.AppImage
dolphin-memory-engine-1.1.1-macOS-intel.zip
dolphin-memory-engine-1.1.1-ubuntu-22.04-x86_64.zip
dolphin-memory-engine-1.1.1-windows-amd64.zip

PR / Non-release format, assuming the last commit is e8ea2b3 :
dolphin-memory-engine-1.1.1-e8ea2b3-linux-x86_64.AppImage
dolphin-memory-engine-1.1.1-e8ea2b3-macOS-intel.zip
dolphin-memory-engine-1.1.1-e8ea2b3-ubuntu-22.04-x86_64.zip
dolphin-memory-engine-1.1.1-e8ea2b3-windows-amd64.zip

Amendment: Package linux binaries in .tar.gz to preserve executable permission


WebDriver' object has no attribute 'find_element_by_name

Thanks for share your script, but get these error:
[2022/09/30 10:23:32] - Debug level: 2
[2022/09/30 10:23:32] - Opening https://www.noip.com/login...
[2022/09/30 10:23:35] - Logging in...
[2022/09/30 10:23:35] - 'WebDriver' object has no attribute 'find_element_by_name'

you should use webdriver.find_element("name", VALUE) instead

I have the same problem

I'm also having this problem, any way to fix it?

noip-renew.txt
Copy the contents of the txt file and paste it in noip-renew.py. Copy the created file into /usr/local/bin/ and replace the existing file.
Modified the noip-renew.py as per @juniorik

noip-renew.txt Copy the contents of the txt file and paste it in noip-renew.py. Copy the created file into /usr/local/bin/ and replace the existing file.
Modified the noip-renew.py as per @juniorik

I was having the same issue as maykel535 and tried the script you posted. It got further than before but still having errors. Pasted the output below minus the IP that it was showing.
[2023/07/02 15:25:44] - Debug level: 2
[2023/07/02 15:25:44] - Opening https://www.noip.com/login...
[2023/07/02 15:25:47] - Logging in...
[2023/07/02 15:25:48] - Message: element not interactable
(Session info: headless chrome=...)
Stacktrace:
#0 0xaaaab33da088
#1 0xaaaab3149690
#2 0xaaaab317ff88
#3 0xaaaab3176848
#4 0xaaaab31761d4
#5 0xaaaab31b21c4
#6 0xaaaab3174aa8
#7 0xaaaab3175a04
#8 0xaaaab33a0aec
#9 0xaaaab33a36b0
#10 0xaaaab33a3c88
#11 0xaaaab33ab6e4
#12 0xaaaab33a42dc
#13 0xaaaab337eda0
#14 0xaaaab33c2e98
#15 0xaaaab33c3028
#16 0xaaaab33d26c4
#17 0xffffb33dc648 start_thread
#18 0xffffb2f07c1c

@TarkinMX I'm also facing the same issue.

I am have same issue as @TarkinMX

noip-renew.txt
So it determined that the whole thing is pretty much bungled.
The initial script that @adithyapi4 issued fixed part of the problem.  The xauth element grabs need to be updated as well, same format he used would apply.  host.find_element**_by_xpath**(".//a[@class='link-info cursor-pointer']") would be host.find_element("xauth", ".//a[@class='link-info cursor-pointer']").  I used an imported library to be more intuitive, so my command looks like this host.find_element(By.XAUTH, ".//a[@class='link-info cursor-pointer']").
I also found the noip-renew-skd.sh script used to update cronjob will update the next cronjob to the past so I fixed that in the .py script.  The line in question is Line 117, it uses current month to set the next cronjob which end up putting it in the past.  I changed from month = str(today.month) to **** .  I ended up updated  noip-renew-skd.sh to also update the cronjob to properly dump the print statements as well as run the cronjob on my raspberry pi4.  The cronjob was formatted to as "30 0 $1 $2 *   $USER $INSTEXE $LOGDIR", I ended up with "30 0 $1 $2 *   $INSTEXE >> $LOGDIR 2>&1".  Keep in mind the logs ownership needs to be rw for $USER.
I uploaded the noip-renew.py script I am currently using and is working for me in the .txt file, I also left some of my debug lines in there in case people might want to figure out there own new issues and have a starting point.
All in all, this script works great after the fixes. I assume some kind of update occurred with the Selenium webdriver or chrome because I setup roughly 1 month ago and it worked but 30 days later when noip needed a renewal it did not function. If anyone has question feel free to ask, I dumped 24 straight hours into these scripts and I am feeling proficient. HAHAHA

@ECLAYA4188
Thank you for the update, it works great here.

@ECLAYA4188 Can you post the working script

I tried the script on WSL, but it didn't detect any hosts :(
user@MyPC:/usr/local/bin$ bash noip-renew-user.sh
[2023/08/13 14:18:04] - Debug level: 2
[2023/08/13 14:18:04] - Opening https://www.noip.com/login...
[2023/08/13 14:18:07] - Logging in...
[2023/08/13 14:18:12] - Opening https://my.noip.com/dynamic-dns...
[2023/08/13 14:18:16] - No hosts or host table rows not found

I tried looking for the screenshots where selenium is supposed to be saving them, but couldn't find them.
    def get_hosts(self):
        host_tds = self.browser.find_elements(By.XPATH, "//td[@class=\"word-break-col\"]")
        self.browser.save_screenshot("end.png")
        if len(host_tds) == 0:
            raise Exception("No hosts or host table rows not found")
        return host_tds

@ECLAYA4188 As you are the expert one :D, do you have any idea why is not finding any hosts? I definitely have one under Dynamic DNS --> no-ip Hostnames

Hi all sorry about the delayed answer. Busy time, I am on the proxy game these days :P
@redespace i suspect it can't detect any host is because maybe when you were tinkering with it you adjusted some of the xpath search strings.  I did the same thing because in the beginning I thought some of the search strings were outdated, I have confirmed that all of them work, the major issue with the original script is the selenium driver was update and some syntax was deprecated.  Also be mindful some libraries are for 64bit, I am running a 8GB raspberry pi4 with 64bit bullseye distro.  This was not an issue for me but I am not sure how this works with any other OS as I run all my projects on 64bit pi's.
Here is my script in its entirety, but ignore the following libraries I imported them while I was debugging and they are no longer needed.  I kept them in for future T/S
"from selenium.webdriver.support.ui import WebDriverWait"
"from selenium.webdriver.support import expected_conditions as EC"
"from selenium.common.exceptions import TimeoutException"
@adithyapi4 Here Functioning .py script is as follows
#!/usr/bin/env python3
Copyright 2017 loblab

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
from selenium import webdriver
These are very key library imports for my .py to work, i used the keys library for UN/Password passthrough and the By
library for to avoid mistyping while T/S as library will let me know if search method was is incorrect (ie XPath rather than
xpath)
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
These are TS libraries
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
#libraries from original script
from datetime import date
from datetime import timedelta
import time
import sys
import os
import re
import base64
import subprocess
class Logger:
def init(self, level):
self.level = 0 if level is None else level
def log(self, msg, level=None):
    self.time_string_formatter = time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(time.time()))
    self.level = self.level if level is None else level
    if self.level > 0:
        print(f"[{self.time_string_formatter}] - {msg}")

class Robot:
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0"
LOGIN_URL = "https://www.noip.com/login"
HOST_URL = "https://my.noip.com/dynamic-dns"

def __init__(self, username, password, debug):
    self.debug = debug
    self.username = username
    self.password = password
    self.browser = self.init_browser()
    self.logger = Logger(debug)

@staticmethod
def init_browser():
    options = webdriver.ChromeOptions()
    #added for Raspbian Buster 4.0+ versions. Check https://www.raspberrypi.org/forums/viewtopic.php?t=258019 for reference.
    options.add_argument("disable-features=VizDisplayCompositor")
    options.add_argument("headless")
    options.add_argument("no-sandbox")  # need when run in docker
    options.add_argument("window-size=1200x800")
    options.add_argument(f"user-agent={Robot.USER_AGENT}")
    options.add_argument('disable-extensions')
    if 'https_proxy' in os.environ:
        options.add_argument("proxy-server=" + os.environ['https_proxy'])
    browser = webdriver.Chrome(options=options)
    browser.set_page_load_timeout(90000) # Extended timeout for Raspberry Pi.
    return browser

def login(self):
    self.logger.log(f"Opening {Robot.LOGIN_URL}...")
    self.browser.get(Robot.LOGIN_URL)
    time.sleep(1)
    #html = self.browser.page_source
    #print (html)
    if self.debug > 1:
        self.browser.save_screenshot("debug1.png")

    self.logger.log("Logging in...")
    ele_usr = self.browser.find_element("name","username")
    ele_pwd = self.browser.find_element("name","password")
    ele_usr.send_keys(self.username)
    ele_pwd.send_keys(self.password)
    self.browser.find_element(By.ID , "clogs-captcha-button").click()
    time.sleep(1)
    #html = self.browser.page_source
    #print (html)
    if self.debug > 1:
        time.sleep(1)
        self.browser.save_screenshot("debug2.png")

def update_hosts(self):
    count = 0
    self.open_hosts_page()
    time.sleep(1)
    iteration = 1
    next_renewal = []
    self.browser.save_screenshot("test.png")
    hosts = self.get_hosts()
    for host in hosts:
        host_link = self.get_host_link(host, iteration) # This is for if we wanted to modify our Host IP.
        host_button = self.get_host_button(host, iteration) # This is the button to confirm our free host
        host_name = host_link.text
        expiration_days = self.get_host_expiration_days(host, iteration)
        next_renewal.append(expiration_days)
        self.logger.log(f"{host_name} expires in {str(expiration_days)} days")
        if expiration_days < 7:
            self.update_host(host_button, host_name)
            count += 1
        iteration += 1
    self.browser.save_screenshot("results.png")
    self.logger.log(f"Confirmed hosts: {count}", 2)
    nr = min(next_renewal) - 6
    today = date.today() + timedelta(days=nr)
    day = str(today.day)
    month = str(today.month + 1)
    subprocess.call(['/usr/local/bin/noip-renew-skd.sh', day, month, "True"])
    return True

def open_hosts_page(self):
    self.logger.log(f"Opening {Robot.HOST_URL}...")
    try:
        self.browser.get(Robot.HOST_URL)
        time.sleep(2)
        #html = self.browser.page_source
        #print (html)
    except TimeoutException as e:
        self.browser.save_screenshot("timeout.png")
        self.logger.log(f"Timeout: {str(e)}")

def update_host(self, host_button, host_name):
    self.logger.log(f"Updating {host_name}")
    host_button.click()
    time.sleep(3)
    intervention = False
    try:
        if self.browser.find_elements(By.XPATH,"//h2[@class='big']")[0].text == "Upgrade Now":
            intervention = True
    except:
        pass

    if intervention:
        raise Exception("Manual intervention required. Upgrade text detected.")

    self.browser.save_screenshot(f"{host_name}_success.png")

@staticmethod
def get_host_expiration_days(host, iteration):
    try:
        host_remaining_days = host.find_element(By.XPATH,".//a[@class='no-link-style']").text
    except:
        host_remaining_days = "Expires in 0 days"
        pass
    regex_match = re.search("\\d+", host_remaining_days)
    if regex_match is None:
        raise Exception("Expiration days label does not match the expected pattern in iteration: {iteration}")
    expiration_days = int(regex_match.group(0))
    return expiration_days

@staticmethod
def get_host_link(host, iteration):
    return host.find_element(By.XPATH ,".//a[@class='link-info cursor-pointer']")

@staticmethod
def get_host_button(host, iteration):
    return host.find_element(By.XPATH ,".//following-sibling::td[4]/button[contains(@class, 'btn')]")

def get_hosts(self):
    host_tds = self.browser.find_elements(By.XPATH, "//td[@class=\"word-break-col\"]")
    self.browser.save_screenshot("end.png")
    if len(host_tds) == 0:
        raise Exception("No hosts or host table rows not found")
    return host_tds

def run(self):
    rc = 0
    self.logger.log(f"Debug level: {self.debug}")
    try:
        self.login()
        if not self.update_hosts():
            rc = 3
    except Exception as e:
        self.logger.log(str(e))
        self.browser.save_screenshot("exception.png")
        subprocess.call(['/usr/local/bin/noip-renew-skd.sh', "*", "*", "False"])
        rc = 2
    finally:
        self.browser.quit()
    return rc

def main(argv=None):
noip_username, noip_password, debug,  = get_args_values(argv)
return (Robot(noip_username, noip_password, debug)).run()
def get_args_values(argv):
if argv is None:
argv = sys.argv
if len(argv) < 3:
print(f"Usage: {argv[0]} <noip_username> <noip_password> [] ")
sys.exit(1)
noip_username = argv[1]
noip_password = argv[2]
debug = 1
if len(argv) > 3:
    debug = int(argv[3])
return noip_username, noip_password, debug

if name == "main":
sys.exit(main())
EOF
Again shoot me a question and if you have any I will try to respond faster.

Sorry for the delay, I have been heavy in the proxy game these days MITM type garbage :P
@redespace I suspect you were tinkering with the xpath search strings and forgot to change some back... I also redirected the browser in parts of the code but after initial login the script depends on the webpage being "https://my.noip.com/dynamic-dns", maybe you redirected somewhere prior on accident. I did this when I was troubleshooting and got the same error.  I can assure you all search strings function as intended.  The major issue with the original script I believe to be that the selenium web-driver updated and deprecated some methods and syntax.
Another unrelated that I have had battles with in the past but no longer have this issue because all my pi's are hardwired is the webpage needs to fully load after each action.  this is where the script delay comes in handy.  after each page interaction ("click", "enter", etc) hard code a delay this might help if you are not hardwired.
@adithyapi4 Here is function script
#!/usr/bin/env python3
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from datetime import date
from datetime import timedelta
import time
import sys
import os
import re
import base64
import subprocess
class Logger:
def init(self, level):
self.level = 0 if level is None else level
def log(self, msg, level=None):
    self.time_string_formatter = time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(time.time()))
    self.level = self.level if level is None else level
    if self.level > 0:
        print(f"[{self.time_string_formatter}] - {msg}")

class Robot:
USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0"
LOGIN_URL = "https://www.noip.com/login"
HOST_URL = "https://my.noip.com/dynamic-dns"

def __init__(self, username, password, debug):
    self.debug = debug
    self.username = username
    self.password = password
    self.browser = self.init_browser()
    self.logger = Logger(debug)

@staticmethod
def init_browser():
    options = webdriver.ChromeOptions()
    #added for Raspbian Buster 4.0+ versions. Check https://www.raspberrypi.org/forums/viewtopic.php?t=258019 for reference.
    options.add_argument("disable-features=VizDisplayCompositor")
    options.add_argument("headless")
    options.add_argument("no-sandbox")  # need when run in docker
    options.add_argument("window-size=1200x800")
    options.add_argument(f"user-agent={Robot.USER_AGENT}")
    options.add_argument('disable-extensions')
    if 'https_proxy' in os.environ:
        options.add_argument("proxy-server=" + os.environ['https_proxy'])
    browser = webdriver.Chrome(options=options)
    browser.set_page_load_timeout(90000) # Extended timeout for Raspberry Pi.
    return browser

def login(self):
    self.logger.log(f"Opening {Robot.LOGIN_URL}...")
    self.browser.get(Robot.LOGIN_URL)
    time.sleep(1)
    #html = self.browser.page_source
    #print (html)
    if self.debug > 1:
        self.browser.save_screenshot("debug1.png")

    self.logger.log("Logging in...")
    ele_usr = self.browser.find_element("name","username")
    ele_pwd = self.browser.find_element("name","password")
    ele_usr.send_keys(self.username)
    ele_pwd.send_keys(self.password)
    self.browser.find_element(By.ID , "clogs-captcha-button").click()
    time.sleep(1)
    #html = self.browser.page_source
    #print (html)
    if self.debug > 1:
        time.sleep(1)
        self.browser.save_screenshot("debug2.png")

def update_hosts(self):
    count = 0
    self.open_hosts_page()
    time.sleep(1)
    iteration = 1
    next_renewal = []
    self.browser.save_screenshot("test.png")
    hosts = self.get_hosts()
    for host in hosts:
        host_link = self.get_host_link(host, iteration) # This is for if we wanted to modify our Host IP.
        host_button = self.get_host_button(host, iteration) # This is the button to confirm our free host
        host_name = host_link.text
        expiration_days = self.get_host_expiration_days(host, iteration)
        next_renewal.append(expiration_days)
        self.logger.log(f"{host_name} expires in {str(expiration_days)} days")
        if expiration_days < 7:
            self.update_host(host_button, host_name)
            count += 1
        iteration += 1
    self.browser.save_screenshot("results.png")
    self.logger.log(f"Confirmed hosts: {count}", 2)
    nr = min(next_renewal) - 6
    today = date.today() + timedelta(days=nr)
    day = str(today.day)
    month = str(today.month + 1)
    subprocess.call(['/usr/local/bin/noip-renew-skd.sh', day, month, "True"])
    return True

def open_hosts_page(self):
    self.logger.log(f"Opening {Robot.HOST_URL}...")
    try:
        self.browser.get(Robot.HOST_URL)
        time.sleep(2)
        #html = self.browser.page_source
        #print (html)
    except TimeoutException as e:
        self.browser.save_screenshot("timeout.png")
        self.logger.log(f"Timeout: {str(e)}")

def update_host(self, host_button, host_name):
    self.logger.log(f"Updating {host_name}")
    host_button.click()
    time.sleep(3)
    intervention = False
    try:
        if self.browser.find_elements(By.XPATH,"//h2[@class='big']")[0].text == "Upgrade Now":
            intervention = True
    except:
        pass

    if intervention:
        raise Exception("Manual intervention required. Upgrade text detected.")

    self.browser.save_screenshot(f"{host_name}_success.png")

@staticmethod
def get_host_expiration_days(host, iteration):
    try:
        host_remaining_days = host.find_element(By.XPATH,".//a[@class='no-link-style']").text
    except:
        host_remaining_days = "Expires in 0 days"
        pass
    regex_match = re.search("\\d+", host_remaining_days)
    if regex_match is None:
        raise Exception("Expiration days label does not match the expected pattern in iteration: {iteration}")
    expiration_days = int(regex_match.group(0))
    return expiration_days

@staticmethod
def get_host_link(host, iteration):
    return host.find_element(By.XPATH ,".//a[@class='link-info cursor-pointer']")

@staticmethod
def get_host_button(host, iteration):
    return host.find_element(By.XPATH ,".//following-sibling::td[4]/button[contains(@class, 'btn')]")

def get_hosts(self):
    host_tds = self.browser.find_elements(By.XPATH, "//td[@class=\"word-break-col\"]")
    self.browser.save_screenshot("end.png")
    if len(host_tds) == 0:
        raise Exception("No hosts or host table rows not found")
    return host_tds

def run(self):
    rc = 0
    self.logger.log(f"Debug level: {self.debug}")
    try:
        self.login()
        if not self.update_hosts():
            rc = 3
    except Exception as e:
        self.logger.log(str(e))
        self.browser.save_screenshot("exception.png")
        subprocess.call(['/usr/local/bin/noip-renew-skd.sh', "*", "*", "False"])
        rc = 2
    finally:
        self.browser.quit()
    return rc

def main(argv=None):
noip_username, noip_password, debug,  = get_args_values(argv)
return (Robot(noip_username, noip_password, debug)).run()
def get_args_values(argv):
if argv is None:
argv = sys.argv
if len(argv) < 3:
print(f"Usage: {argv[0]} <noip_username> <noip_password> [] ")
sys.exit(1)
noip_username = argv[1]
noip_password = argv[2]
debug = 1
if len(argv) > 3:
    debug = int(argv[3])
return noip_username, noip_password, debug

if name == "main":
sys.exit(main())
'''''' EOF
Shoot me any questions, I will try to be faster!


Can't select text with disabled touch on some devices

Hi,
I disabled touch as I use text arrows for text slides.
    touchMove: false,
    swipe: false,
    draggable: false,

http://jsfiddle.net/fmo50w7n/80/
When on Opera Developer 34 I can select text with at least swipe: false, then on Chrome 43+, Chrome Andoid, Opera Android I can't until I disable -webkit-user-select: none; property for top-level slider's element:

I don't see it in slick script and I am not JS expert, so please tell me how to fix it.
Thanks in advance,
Greetings

Damn, am I so stupid?
This is in slick.css :tired_face:


[Bug]: Chrome animation in smaller screens

Give a brief about the bug ✍
In home page the chrome gaming animation is bigger than screen width for smaller screens (it should act like Play Games Page in smaller screens)
What is the expected behavior? 🤔
Its size should be according to screen size
Provide step by step information to reproduce the bug 📄

Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

@Manaregr8 Logo is in 2 pages :Home page as well as about page.
When i'm trying to fix the logo in about page, I need to fix alignment of whole page since everything is overflowing. Kindly assign this as level 3 because i need to modify whole code for this.

It needs to be somewhat like this:

@Manaregr8  kindly review this

@Manaregr8 kindly review this

Nice Explaination! assigned level3, go for it.


Change to_parquet default to write_metadata_file=False

Some parquet tools and libraries make use of a _metadata file. This file aggregates the parquet metadata from all files in the dataset, making it more efficient to access this metadata.
Doing some software history spelunking:

This convention appears (without comment) in the apache/parquet-mr repo ~9 years ago.
It's then deprecated (equally without comment) ~4 years ago as "not recommended"
Spark (the main historical producer of such files) stopped writing these files ~6 years ago due to scalability issues

The issue is that creation of a _metadata file requires collecting the metadata from all parquet files in a written dataset, merging this metadata, and then writing it out. The size of this metadata scales with total_n_row_groups * n_columns in the dataset - for large datasets (for varying definitions of "large") the size of this metadata can swamp a worker leading to execution failure. A rudimentary benchmark shows creating this file using pyarrow takes roughly 1 KiB per row group per column (this seems very high, but even if it was lower we'd still eventually hit a limit). There are several issues in the dask issue tracker documenting this:

https://github.com/dask/dask/issues/4410
https://github.com/dask/dask/issues/6600
https://github.com/dask/dask/issues/3873

Note that this can also cause issues in the read_parquet side if the _metadata file is large, though the scaling is a bit different here.
Currently creation of the _metadata file can be disabled by passing write_metadata_file=False to to_parquet, which is the recommendation we give in #8899. I'd prefer not to have to mention this caveat though, and have our defaults match our recommendations. Given that other tools have stopped creating or using this file I'd argue that we should stop as well.
I'm not sure if there's a good way to smoothly deprecate this behavior. The best option I've come up with is warning if write_metadata_file isn't set explicitly, but that may be overly noisy for users who won't care about this change. Not sure.

cc @martindurant, @rjzamora, @ian-r-rose, @bryanwweber

I'd like to point out in pf's favour:
conda install -n wfp python fastparquet
du -sh <new dir>
-> 293MB

conda install -n wpa python pyarrow
du -sh <dew dir>
-> 422MB

(on macos with python 3.10)

So two issues, one at a time:

do we in fact want to change the default?
if yes, how to implement this in a way that is obvious but not too annoying to users.

Note that we do allow an option to ignore the file on read, even if it is present, for better or worse. Also, we are able to create such a file after a successful write of all of the data files, but I doubt this happens often. Finally, we allow to aggregate an effective _metadata file from data fles when it is not present, for the purposes of allowing row-group filtering, and this can be done either by the client or dask workers.

Yes, that's an accurate summary. Do you have thoughts on these two questions?

It is not straight forward. A _metadata file can be a significant read-time optimisation:

for opening a dataset (single read can be faster than even just a file listing)
for avoiding unnecessary reads via filter pushdown
and is not a significant cost for 1-100 files.

Aside: it is unfortunate that people store ML models in parquet, using a tabular structure for what is an array; they should use something like zarr instead.
At read, if there is such a file, we can ignore it, and if not, we can scan all the datafiles anyway; so the default we choose needs to be considered in conjunction with these other defaults.
Since it is the number of row-groups * number of columns which matters, we can make a sensible default of writing only when we expect the metadata to be small enough. Unfortunately, there's no way to know at write  time whether the stats information might become useful for filtering purposes. Also, if there is directory partitioning, is becomes much less likely that the global statistics are useful. Note that, as least with fastparquet, the user can opt not to create statistics on write, which saves a little time and not insignificant space in the metadata - and this can be done per-column, so you might only do it for columns you intend to filter on. More options, more complications.
So I think I advocate write_metedata_file="auto" (or suitable) name, where we do write if nrowgroup*ncols < 100,000, or configurable value.
On read, we can similarly prefer to ignore the metadata file if it exists and it's size is above some threshold, for the case that the user doesn't explicitly want to get statistics.

I forgot to mention another side-issue: you would not recommend a _metadata file for datasets intended for multiple append; but at append time, you need to respect one if it's already there (removing it or leaving it inconsistent seem bad, and adding row groups is relatively cheap).

We've talked in person since the above comments, but rehashing for posterity:

for opening a dataset (single read can be faster than even just a file listing)

Agreed, but in my experience the cost of a file listing is usually not that expensive. It might be slower, but not by much.

for avoiding unnecessary reads via filter pushdown and is not a significant cost for 1-100 files.

Since most dask-dataframe operations scale linearly with the number of partitions (as opposed to dask-array, where quadratic+ isn't uncommon), I think I'm fine with creating partitions that will ultimately be empty at runtime. We can still filter at runtime to load less data from disk using the underlying parquet engine, the same as we do for columns. If users really need to reduce the number loaded files, they might make use of directory partitioning (which can be done efficiently) instead of relying on a _metadata file to allow row-group filtering.

So I think I advocate write_metedata_file="auto" (or suitable) name, where we do write if nrowgroup*ncols < 100,000, or configurable value.

I'm not enthused about systems where the generated artifact changes form based on some characteristic of the data (in this case its size). Since the behavior of reading with a _metadata file is different than that without, having a magic switch would likely confuse users (they'd see one behavior on small data and a different behavior on large data).
I'm advocating that we should drop writing the _metadata file by default. Users can still ask to explicitly write it if they want, but it won't be the default.
Aside: since other systems have moved to more complicated (but also more scalable) metadata files, we may also want to make it simpler for users to bring their own metadata (Rick's mentioned some related ideas in https://github.com/dask/dask/issues/8937#issuecomment-1101609249 and https://github.com/dask/dask/pull/8944). Users can already specify a list of file paths, making it easier to also include divisions/metadata/... might be an interesting problem.
Since this change will be tricky to deprecate without annoying most users, I'll make the following proposal:
Change the default to write_metadata_file=None. If None, a metadata file is only written when appending to an existing dataset that has a metadata file. Otherwise no metadata file is written. No deprecation period or warnings added, we'll just be sure to highlight this change in the release notes.
I think this is unlikely to cause downstream issues, but it might. The other option is to warn unless write_metadata_file is explicitly set, which would definitely alert users but would also mean all usage would have to set this parameter for a while which feels unfriendly.
One issue with this proposal is that afaict the pyarrow engine only supports appending to datasets that currently have a _metadata file. The fastparquet engine doesn't appear to have this restriction (based on https://github.com/dask/dask/blob/76770db4285db43d9056d4fa9ce5b8e8006de7d1/dask/dataframe/io/parquet/fastparquet.py#L1165-L1171, cc @martindurant for clarification on the expected behavior here). This means that writing and appending to a dataset with the pyarrow engine would then break without explicitly passing in write_metadata_file=True, which we don't want. So this change would also require modifying the existing engines so append would still work if no metadata file is present.

the cost of a file listing is usually not that expensive.

On a remote datastore with >=1000 files, it is indeed slow, because the listing must be paged. If we know something about the distribution of paths beforehand, we can run listing concurrently, in theory, but paging will be serial as things stand.

for clarification on the expected behavior here

This simply ensures that append works even if the original location doesn't yet contain any data.

ould also require modifying the existing engines so append would still work if no metadata file is present

That should be the easier case - you just need to know the file numbering to go with to avoid any overwrites. However, we would need to decide what to do if a _metadata file does exist: do we still use it, remove it, error, or ...?

I'm not enthused about systems where the generated artifact changes form based on some characteristic of the data (in this case its size). Since the behavior of reading with a _metadata file is different than that without, having a magic switch would likely confuse users (they'd see one behavior on small data and a different behavior on large data).

This is a conclusion that I have also recently reached. I think it makes a lot of sense to use "magic" switches to select internal algorithm defaults, but these switches should never affect the structure or content of the result.  In other words, I think its fine to use file count and/or _metadata presence to decide if we will do things like process metadata in parallel. However, these characteristics should not control partition sizes and/or metadata output. (This is obviously just my personal opinion, but I'm starting to feel more strongly about it by the day)

However, we would need to decide what to do if a _metadata file does exist: do we still use it, remove it, error, or ...?

This is a good question. It certainly feels like we would definetly want to update the _metadata file on append if one is present. So, this would probably be the exception to the write_metadata_file=False-default rule. It may make sense to add an ignore_metadata_file=False to to_parquet in the off-chance that the user really does want to append to a dataset without updating the global metadata, but I have a hard time imagining a case where this isn't a terrible idea. So, throwing a clear error is probably the "correct" thing to do.

It certainly feels like we would definetly want to update the _metadata file on append if one is present.

Agreed, this is what I suggested above:

Change the default to write_metadata_file=None. If None, a metadata file is only written when appending to an existing dataset that has a metadata file. Otherwise no metadata file is written. No deprecation period or warnings added, we'll just be sure to highlight this change in the release notes.

The issue is that appending behavior doesn't currently work without a _metadata file, and there are some inconsistencies between backends with regards to what happens. Assorted issues:

pyarrow doesn't work with appending without a _metadata file. An error is raised suggesting setting ignore_divisions=True should make things work, but it doesn't
fastparquet only works without a _metadata file if ignore_divisions=True, even if df.known_divisions is False.

I can fix these, but I'm curious about what the expected behavior is here.

If df has known_divisions and no _metadata file, fastparquet will load the last file and attempt to see if the divisions are still sorted (and if not will error). Is this a restriction we want to keep?
If known_divisions is False for df, should we skip this check (basically treat this as ignore_divisions=True). Is there a good way to tell from the last file if previous writes had known divisions even if the new data doesn't?

More broadly, what kind of changes to the backing engine classes are acceptable, given implementations live outside of dask. Can I change the signature of a backend method? Only add new methods (and don't call them if they're missing)? What's the best way to not break cudf here?

I completely agree with your proposal @jcrist:

Change the default to write_metadata_file=None. If None, a metadata file is only written when appending to an existing dataset that has a metadata file. Otherwise no metadata file is written. No deprecation period or warnings added, we'll just be sure to highlight this change in the release notes.

Also, it is good to know that there are existing bugs related to appending. Thanks for summarizing!
I don’t have any strong feelings on exactly how to resolve existing bugs, but my intuition is that we should probably assume the user doesn’t want to calculate/preserve divisions unless they explicitly ask for this extra work (note that one of my proposals below is to do this in read_parquet anyway, and I would assume reading and appending should have consistent defaults).

More broadly, what kind of changes to the backing engine classes are acceptable, given implementations live outside of dask. Can I change the signature of a backend method? Only add new methods (and don't call them if they're missing)? What's the best way to not break cudf here?

I wouldn’t be too nervous about “breaking” dask_cudf on the write side. If a test breaks as a result of different default behavior, I can certainly find and “fix” it before the related Dask PR is even merged.  Regarding Engine-API changes: dask_cudf is just doing to_parquet = partial(dd.to_parquet, engine=CudfEngine), and CudfEngine is just inheriting from ArrowDatasetEngine (and overriding the write_partition and write_metadata class methods). CudfEngine does not override initialize_write (where most appending logic currently lives), so fixing append bugs is probably pretty "safe."
Just to clarify some of the Parquet-related changes I am personally supportive of:

Change write_metadata_file default to None (becomes False, unless appending)

Change split_row_groups default to False (starts as None in the top-level signature so we can temporarily “warn” users when we hit the “old” code path where split_row_groups was originally switching to True). We would then submite a follow-up PR in ~2+ months to remove the warning (and set the False default in top-level function signature)

Add calculate_divisions argument, and deprecate gather_statistics. The default for calculate_divisions will be False, but we will start with None in the top-level function signature (for now) so we can warn the user if they do not set anythin explicitly and there is a _metadata file present (because they will no longer get known divisions).  We could then submit a follow-up PR in ~2+ months to remove gather_statistics altogether and remove the warning (and set the False default in top-level function signature)

[Explicit Plan TBD] Modify (and maybe deprecate?) chunksize and/or aggregate_files. I would like to use from_dataset to explore “good” defaults/options for this.

[Explicit Plan TBD] Modify categories to include directory-partitioned columns. Converting a partitioned column to a pandas-category column has overhead, and not all users want/need a categorical dtype (e.g. Dask-sql). My opinion is that the user should need to “opt-in” to this extra work by including directory-partitioned columns in categories (right now this is actually not allowed).


⚠ Bofrost.be has degraded performance

In ac11a42, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1717 ms

Resolved: Bofrost.be performance has improved in 83a6434.


Svg does not render

import com.raquo.laminar.api.L._
import com.raquo.laminar.api.L.{svg => s}

    div(
      s.svg(
        s.height := "800",
        s.width := "500",
        s.circle(
          s.cx := "100",
          s.r := "30",
          s.fill := "red"
        )
      )
    )

svg is present in chrom dev tool but is not showed

Hrm, looks like this is caused by Scala DOM Builder passing an incorrect XML namespace when setting SVG attributes. Too bad we can't test such things with jsdom...
Desired behaviour is explained here: https://developer.mozilla.org/en-US/docs/Web/SVG/Namespaces_Crash_Course#Scripting_in_namespaced_XML
We should be passing null as the XML namespace for most attributes in setAttributeNS calls.
However, xlinkTitle and xlinkHref svg attributes will need a different SVG namespace specified.
I need to figure out a good way to deal with this. As a temporary workaround you can probably replace svgNamespaceUri with null on this line in SDB: https://github.com/raquo/scala-dom-builder/blob/af7c63b8deb23ce7c1db7fde87f8068ad79fe8b4/js/src/main/scala/com/raquo/dombuilder/jsdom/domapi/JsSvgElementApi.scala#L23 I haven't had a chance to test this fix in SDB / Laminar context, but a simple js fiddle indicates that this should work.
Thanks for reporting this. I'm really swamped right now, I'll try to get this fixed within a couple weeks.

Thanks!  This kind of behavior is quite annoying:  In other words, although the attributes belong to the namespace of the tag, you do not use the tag's namespace name. Instead, you must use null as the namespace name for unqualified (prefixless) attributes

https://github.com/raquo/scala-dom-builder/pull/5


ROS2 header reference

Hey there, I looked through your message file and noticed that on the jazzy branch you use Header and duration as field types. Shouldn't this be std_msgs::Header and builtin_interfaces::Duration in ROS2?
https://github.com/luxonis/depthai-ros/blob/b39899f2f31c626e15ef49040542455be7cf345b/depthai_ros_msgs/msg/ImageMarker.msg#L11

Hi, actually those messages are not used and they should be deprecated in the future releases. IIRC they were based on API of old Foxglove ROS messages


HTTP/2 issues

This is only experienced in canary, where we enable http/2 for testing.
Occasionally commands have uncaughts like this:
> Error! An unexpected error occurred!
  TypeError: Cannot read property 'readStop' of undefined
    at ClientHttp2Stream.streamOnPause (internal/http2/core.js:1156:17)
    at ClientHttp2Stream.emit (events.js:159:13)
    at ClientHttp2Stream.Readable.pause (_stream_readable.js:841:10)
    at ClientHttp2Stream.ondata (_stream_readable.js:655:11)
    at ClientHttp2Stream.emit (events.js:159:13)
    at ClientHttp2Stream.Readable.read (_stream_readable.js:478:10)
    at flow (_stream_readable.js:849:34)
    at Gunzip.<anonymous> (_stream_readable.js:710:7)
    at Gunzip.emit (events.js:159:13)
    at onwriteDrain (_stream_writable.js:465:12)
    at afterWrite (_stream_writable.js:453:5)
    at onwrite (_stream_writable.js:446:7)
    at Gunzip.afterTransform (_stream_transform.js:89:3)
    at Zlib.processCallback (zlib.js:572:8) TypeError: Cannot read property 'readStop' of undefined
    at ClientHttp2Stream.streamOnPause (internal/http2/core.js:1156:17)
    at ClientHttp2Stream.emit (events.js:159:13)
    at ClientHttp2Stream.Readable.pause (_stream_readable.js:841:10)
    at ClientHttp2Stream.ondata (_stream_readable.js:655:11)
    at ClientHttp2Stream.emit (events.js:159:13)
    at ClientHttp2Stream.Readable.read (_stream_readable.js:478:10)
    at flow (_stream_readable.js:849:34)
    at Gunzip.<anonymous> (_stream_readable.js:710:7)
    at Gunzip.emit (events.js:159:13)
    at onwriteDrain (_stream_writable.js:465:12)
    at afterWrite (_stream_writable.js:453:5)
    at onwrite (_stream_writable.js:446:7)
    at Gunzip.afterTransform (_stream_transform.js:89:3)
    at Zlib.processCallback (zlib.js:572:8)

Do you remember what command you ran that caused this?
I seem to not be running into this issue on latest canary with Node 10.0.0

All good since Now CLI 12.0.0!


Improving serial port output

We've experienced very slow serial port output in Virtualbox. @AndreasAakesson found this thread from OSv which has some nice pointers. In particular we should look into utilizing the serial port buffer better, and reduce time in the busy-wait loop.

This command made some big improvements on the speed. Around 10x as fast.
VBoxManage setextradata VM_NAME "VBoxInternal/Devices/serial/0/Config/YieldOnLSRRead” 1


UncontrolledTooltip causes infinite loop when wrapper has overflow-x:auto

components: UncontrolledTooltip
reactstrap version #8.0.0
import method umd/csj/es
react version #16.8.6

What is happening?
When an element with overflow-x:auto has an attached UncontrolledTooltip, triggering the tooltip causes an infinite loop, locking the browser
What should be happening?
The tooltip should show
Steps to reproduce issue
Add overflow-x:auto to a wrapper containing an element with a tooltip
Error message in console
None
Code
CodeSandbox: https://codesandbox.io/s/polished-framework-2mtgx

Had the same problem.
I think it's related to the container's height. If i put a min-height on the container enough for the tooltip to be displayed it seems to work fine.

#1488 #1482 Related?

Does #1669 fix this?

This looks to be fixed in the latest version. Going to close but can re-open if anyone sees otherwise.


Add options to MPerf

Improve MPerf to track received messages for all receivers, and add
options to ignore local messages and display received per sender

Merged into master


API version required by SDK

[x] This only affects the JavaScript OpenTelemetry library
[ ] This may affect other libraries, but I would like to get opinions here first

In #2737 API range was extended from >=1.0.0 <1.1.0 to >=1.0.0 <1.2.0 to add support for 1.1 but keep compatible as much as possible.
Unfortunately this resulted in broken CI for nodejs 16 (see #2755).
In #2759 API version range in SDKs was narrowed to >=1.1.0 <1.2.0 to fix the CI.
I think we should clarify how to continue here and if more changes then hat one done in #2759 are needed to stay consistent or if we should revert it and solve the CI problem in a different way.
In general allowing SDK to use an 1.0 API seems to be problematic as it avoids that e.g. instrumentation use API 1.1. Reason is that SDK registers TracerProvider,.. in version 1.0 and the version check in API doesn't accept newer minor (only olders).

Refs: #2892


Set the html lang attribute on language change

This PR does what it says in the title, no more no less 😆

.deploy to development

.deploy


Export auto-certification report

For portal owner:

campaign limited report of all datasets that didn't get a certificate and reasons why (usually licensing)


msm_hsic_host wakelock: improve (confusing) description text for toggle.

Obviously it should be the opposite.

Toggle on will allow the service to acquire a wakelock. -> So, this will NOT prevent wakelocks.
Toggle off will prevent the service from acquiring a wakelock. -> Use this one to actually prevent wakelocks.

Also see: http://forum.xda-developers.com/showpost.php?p=58781322&postcount=3153
Signed-off-by: spezi77<EMAIL_ADDRESS>

Thanks for correcting some translations.


Error page in case touch Icon account in Browser tab

Describe the bug
Version test: v1.0.6(182)
Devices test: IP 11
To reproduce the bug
Steps:

Go to the Browser tab
Touch the Icon account and then observe the display screen

Actual: Error page
https://github.com/Koniverse/SubWallet-Mobile/assets/117999489/ef741ba9-16f2-43f8-bbe7-596584f3c5c1

Version test: v1.0.6(183)
Devices test: IP 11
Validation passed.


SQL Editor: tab should action the autocomplete suggestion

Currently enter actions the autocomplete. TBD whether we should keep enter in addition to tab.

my 2 cents: I'd vote for autocompletes on both enter and tab since that's what vscode does and it seems to have emerged as the market leading text editor in the last couple years


Store RunTime Configuration of GooseAttack in a sub-struct and expose it via a read-only getter / get+clone

Could even allow to get_config and store configured values in a GooseRuntimeConfig substruct, which can be cloned and is returned as cloned or read-only struct from GooseAttack.

I'm happy to say this already partially implemented. The configuration currently lives in a GooseConfiguration struct which lives inside GooseAttack (as we're using Structopt to derive command line configuration).

And is there an "official" configuration file that use to set the configuration for the Goose, so that we can not only specific the option provided by goose, but also custom configuration?

Are you referring to custom defaults, such as is documented here?
https://book.goose.rs/config/defaults.html

Are you referring to custom defaults, such as is documented here?
https://book.goose.rs/config/defaults.html

I know about the set_default's, but I need a file to manage these params and custom environments, based on profile


dep: upgrade connected-react-router to 6.5.2

Checklist

[ ] npm test passes
[ ] tests are included
[ ] documentation is changed or added
[ ] commit message follows commit guidelines

Description of change

any feature?
close https://github.com/dvajs/dva/ISSUE_URL

Coverage remained the same at 86.635% when pulling 1cf1b0f6a7ab13bf31a5d1e90bc5c77ed832ca10 on fix/subscription-execute into caa83ceac0dc5837de3eb2b8259f802d79f372f1 on master.


refactor(profile): Update HTML/CSS for profile page

Update HTML/CSS for profile page
Closes: #535

There were the following issues with your Pull Request

Commit: ff92b64b1a334b324ad2e916aa9eddf6a0832077
Your subject line is longer than 50 characters

Guidelines are available at https://github.com/fabric8io/fabric8-ui

This message was auto-generated by https://gitcop.com


Events are not connected after setting user id

My app has the following flow:

The user opens the app for the first time, first_app_open and Start Session are sent.
After async request, the app sets userID in Amplitude
The rest of the events

It worked great and most of my conversion charts are based on first_app_open -> some_event. After upgrading Amplitude-Swift 1.4.5 -> 1.5.2 it doesn't work anymore. After setting the user id the amplitude can not connect previous events to the user. The first 2 events have different Amplitude ID and, therefore, are not considered as coming from the same user.
Is there something in the updates that I'm missing? I've checked the changelog but without success.

Sorry for reporting this, the problem was in my code. I accidentally was setting a random user id at the beginning and changing to a persistent one afterward


Fix Typos in Creating Offerings Page

Fix Typos in Creating Offerings Page
🚀 Goal
We want to ensure our website's documentation don't have any mistakes.
🤔 Background
This issue focuses specifically on fixing typos across our docs. Your contributions here make a difference!
🤝 How You Can Contribute
We've broken it down into specific typos for you to address. Every contribution counts!
🔑 Tasks and Acceptance Criteria
❗You must only assign yourself one task at a time to give everyone a chance to participate.❗
You may assign yourself your next task after your current task is reviewed & accepted.

Fix Typos in Creating Offerings page

[ ] Change "a example" to be "an example"

Make sure all tests are passing.

🌟 Resources

Creating Offerings Page
Docs, Developer Website

Getting Started

Comment ".take" on this issue to get assigned
Fork the repository and create a new branch for this task
Follow the tasks outlined above
Submit a pull request with your changes
Respond to any feedback during the review process

Questions?
If you have any questions or need clarification, please comment on this issue or join our Discord community.
Happy coding! 🎉

.take

Hi @imperialc0der - I noticed you also assigned yourself the following task https://github.com/TBD54566975/developer.tbd.website/issues/1561
Within the issues above, it states that you must only take one issue at a time, and wait for your PR to be reviewed & accepted before taking on another issue. This is to give everyone a fair chance at participating, especially for tasks that don't require code.
Is there a preference for one of these tasks you'd like to keep? After your first issue is reviewed & accepted, you're free to take on the next. I'd also highly encourage you to explore all our participating projects here: https://github.com/orgs/TBD54566975/projects/44


Add methods to set detector offsets to StripConnection

This PR adds two methods to the StripConnection class (in file striptease/stripconn.py): set_offset and set_offsets: they send a SLO command to set the offsets of one detector or of all detectors on a polarimeter.
Before merging, two things need to be checked:

[ ] Is the DET{detector}_OFFS command a BIAS or a DAQ kind command?
[ ] Should set_offsets also accept numpy arrays? This is already possible thanks to the cast in the call to slo_command, but the type hint needs to be changed (meaning that numpy.ndarray has to be imported or a general "Indexable" type needs to be used - I do not know if such a type exist).

Please let me know if I should change or add something (perhaps a test?). Thanks!

Hi @teozec, thanks for the PR! Regarding DET*_OFFS, I verified that they are DAQ commands.
Regarding set_offsets, I would not bother providing the exact type for the parameter: just specify it as Union[int, List], as numpy.array can be converted from and to List (but the conversion never happens, those type hints are just hints). We use type hints mostly for documentation, and this should be enough.

Perfect, thanks! So I think the code is OK as it it, since set_offsets expects a List and set_offset expects a int. Let me know if I should make any changes!


Add custom attributes

In some cases, it might be useful to have some custom attributes over the generated properties.
[AutoBindable]
[property: JsonRequired]
[property: JsonPropertyName("name")]
private readonly string? _username;

This would generate a Username property, with those two [JsonRequired] and [JsonPropertyName("name")] attributes over it.
For information, this feature is already supported by CommunityToolkit.Mvvm in its ObservableProperty source generator.
https://learn.microsoft.com/en-us/dotnet/communitytoolkit/mvvm/generators/observableproperty#adding-custom-attributes
I think it would be a great addition to BindableProperty source generator.

Hi @tranb3r totally agree, that implementation is on my to-do list. I am working on an internal refactor to use "SyntaxFactory" instead of "String building". This change will not affect the final result or how it should be implemented, but this is important to be able to add this new feature


Advertise quilt support on modrinth

Title describes it. Works with quilt, advertiseing quilt supports adds auto updateing on thesus(modrinth launcher) and lets you add it without "overiding loaders" on thesus

I don't test with Quilt, thats why I don't add the tag. Quilt users have to test themselves, but usually, all Fabric mods should work.

i recomend adding it just to indicate that issues involving quilt will be fixed and quilt is supported

(and add it to any other of ur mods that will have quilt-only bugs fixed

i recomend adding it just to indicate that issues involving quilt will be fixed and quilt is supported

I don't test with Quilt, thats why I don't add the tag.

Thats the exact point. Quilt is not supported and issues won't be fixed as it's Quilt issues, not Fabric.


Static imports fail with ambiguous type parameters

On the gosu-lang email list, @hiraethus pointed out unexpected behavior using the new static import syntax.
@rsmckinney and I traced the problem down to org.hamcrest.core.IsEqual#equalTo. This is because the class defines a type parameter <T>, but the static method equalTo also defines a type parameter <T>.
public class IsEqual<T> extends BaseMatcher<T> {
...
    public static <T> Matcher<T> equalTo(T operand) {
        return new IsEqual<T>(operand);
    }

Despite having the same name, these two parameters have no relationship - and in fact, creating such ambiguous class/method declarations is disallowed in Gosu. In other words, this could only happen when performing a static import from a Java type.
We are currently preparing a fix for the parser to address this.

@rsmckinney fixed this with commits 24ca6e642fb1536278e308b15cc741b8e7bb6fdf and 8e7881c46da7e1a9b04dd0202ddcbb824f26c467.
Testing is still in progress.

This is now fixed.
@hiraethus please compile your project again using version 1.14.1

Thanks very much!
On 2 Aug 2016 02:48, "Kyle Moore"<EMAIL_ADDRESS>wrote:

Closed #78 https://github.com/gosu-lang/gosu-lang/issues/78.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gosu-lang/gosu-lang/issues/78#event-741791231, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ACIJAc7Ef3EuhI8MfId3QCtA9JrpjYCLks5qbqHZgaJpZM4JVqyP
.


nat: add dmzHost option

Motivation for this change
When configuring a NAT (especially for a simple network), it's common to want to establish a DMZ host, which serves all ports by default; most dedicated router hardware provides this feature.  This PR adds that functionality to networking.nat.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@zimbatm Thanks!