build: implement bonding curve

Resolves #430

@Draeieg now is the time to provide your math formula.

@Draeieg now is the time to provide your math formula.

I need the specifics mentioned in another ubq bonding curve issue

how much of the current/projected ubq supply we want this to burn
are we still going for the 1024 target or should we go for more
what's the maximum price at the end of the curve tapering 10 eth, 100 eth?

@Draeieg now is the time to provide your math formula.

I need the specifics mentioned in another ubq bonding curve issue, otherwise I will provide a formula with random undefined variables lol

how much of the current/projected ubq supply we want this to burn

are we still going for the 1024 target or should we go for more

what's the maximum price at the end of the curve tapering 10 eth, 100 eth?

I guess this means I would implement a "Max Balance in the bonding curve vault contract"

I guess this means I would implement a "Max Balance in the bonding curve vault contract"

Sort of,  the curve I modeled is based on a logistic/sigmoid curve, which means the equation will naturally end up tapering to max value
If you wish to implement that taper by directly doing the equation as I modeled them or want to just use a max value is up to you as long as there aren't any inherent problems with the method

I guess this means I would implement a "Max Balance in the bonding curve vault contract"

Sort of,  the curve I modeled is based on a logistic/sigmoid curve, which means the equation will naturally end up tapering to max value
If you wish to implement that taper by directly doing the equation as I modeled them or want to just use a max value is up to you as long as there aren't any inherent problems with the method

Would love to have a look

@Draeieg now is the time to provide your math formula.

I need the specifics mentioned in another ubq bonding curve issue, otherwise I will provide a formula with random undefined variables lol

how much of the current/projected ubq supply we want this to burn
are we still going for the 1024 target or should we go for more
what's the maximum price at the end of the curve tapering 10 eth, 100 eth?

You should just explain the math here with your best assumptions since its easy to modify individual numbers later in the code. Subject to change, but

if we can figure a way to (ideally in perpetuity) burn at a faster rate than we are emitting we're ultrasound money! Perhaps thats a bit too aspirational though.
1024 is fine.
128 ETH seems like a fine number lol staying true to the number pattern.

@FibrinLab
The Formula
we will be working with a standard logistic function where the formula is:
$\huge{\frac E {1+e^{-t(x-x_0)}}}$
Variables/Functions explained
"E" is the maximum price in ETH the UbiquiStick will have this will be equal to $128$ETH, so you can think of the formula as

$\huge{\frac {128} {1+e^{-t(x-x_0)}}}$

the "t" function is what defines the rate at which the curve grows, for now this will be equal to $0.0015$ however this need to be upgradable to a fully fledged function as we're planning more esoteric methods of ramp up
"$x_0$" is the Inflection point of the curve in the same way as "t" this has to be upgradable from a flat number to a function, for now it equals 1800
"$e$" is Euler's number this which equals to $2.718281828$
"$x$" is the number of the UbiquiStick to be minted at that point

For example,  if were minting the 8th ubiquistick this will be equal to
$\Large{\frac {128} {1+2.718281828^{-0.0015(8-1800)}}=8.1517021518}$
This means the 8th UbiquiStick should cost $8.1517021518$ ETH in UBQ to mint

you can find an example of how the curve works on a Graphing calculator to play around Here

Let me have a look

Thanks for providing this. I will work on implementing this with static values. Quick question, why an inflection point of 0.0015?

the Inflection point is $x_0$, which is 1800
$0.0015$ is the growth rate, this value was chosen because we needed the curve to grow slow but not too slow, this will make more sense if you play around the desmos simulation I made for you
also feel free to change those variable names in code to whatever you feel makes sense since its easier to write the math using those names but in code its not the same story

@0xcodercrane please take a look

@zgorizzo69 I understand that you were interested to implement the bonding curve but your attention is better spent on the other smart contracts. It would be lovely if you can add your opinion on here as I imagine that you have quite a bit of contextual knowledge on this matter.

I don't have much clear understanding on math so I wanted to go through everything with unit tests but its currently missing. Would you like to add unit tests to coverage all the functions and new files @FibrinLab ?

I understand the basic math concepts, I will also try to add unit test. Let me work on a draft

@pavlovcik Please have a look at the smart contract.

Hey @FibrinLab unfortunately I'm not a Solidity developer so my review won't be very insightful. I hope that @zgorizzo69 can take a look because I know he has experience with bonding curves. I'll speak with him to see if I can get his input here soon. Thanks!

I temporarily had to create a prettier ignore file, I think there is a bug somewhere. I also added some more ignore words to the cspells ignore list. The smart contract is a fork with some new functions implements. Reviews appreciated.

fork from what contract ?

I temporarily had to create a prettier ignore file, I think there is a bug somewhere. I also added some more ignore words to the cspells ignore list. The smart contract is a fork with some new functions implements. Reviews appreciated.

fork from bancor from what I see

I am not done with the tests yet. I just want to know I am doing the right thing and some guidance

@FibrinLab
The Formula
we will be working with a standard logistic function where the formula is: E1+e−t(x−x0)
Variables/Functions explained
"E" is the maximum price in ETH the UbiquiStick will have this will be equal to 128 ETH, so you can think of the formula as

1281+e−t(x−x0)

the "t" function is what defines the rate at which the curve grows, for now this will be equal to 0.0015 however this need to be upgradable to a fully fledged function as we're planning more esoteric methods of ramp up
x0 is the Inflection point of the curve. In the same way as "t" this has to be upgradable from a flat number to a function, for now it equals 1800
e is Euler's number which equals to 2.718281828
x is the number of the UbiquiStick to be minted at that point

For example,  if were minting the 8th ubiquistick this will be equal to
1281+2.718281828−0.0015(8−1800)=8.1517021518
This means the 8th UbiquiStick should cost 8.1517021518 ETH in UBQ to mint

you can find an example of how the curve works on a Graphing calculator to play around Here

@Draeieg
Is it possible to make your formula bancor compliant ?
indeed the bancor formula is like this
by tweaking the connector weight we can have different kind of curve (i.e linear / exponential / log)
this way we can really "fork" bancor and make sure the code is safe

@FibrinLab
The Formula
we will be working with a standard logistic function where the formula is: E1+e−t(x−x0)
Variables/Functions explained
"E" is the maximum price in ETH the UbiquiStick will have this will be equal to 128 ETH, so you can think of the formula as

1281+e−t(x−x0)

the "t" function is what defines the rate at which the curve grows, for now this will be equal to 0.0015 however this need to be upgradable to a fully fledged function as we're planning more esoteric methods of ramp up
x0 is the Inflection point of the curve. In the same way as "t" this has to be upgradable from a flat number to a function, for now it equals 1800
e is Euler's number which equals to 2.718281828
x is the number of the UbiquiStick to be minted at that point

For example,  if were minting the 8th ubiquistick this will be equal to
1281+2.718281828−0.0015(8−1800)=8.1517021518
This means the 8th UbiquiStick should cost 8.1517021518 ETH in UBQ to mint

you can find an example of how the curve works on a Graphing calculator to play around Here

@Draeieg Is it possible to make your formula bancor compliant ? indeed the bancor formula is like this  by tweaking the connector weight we can have different kind of curve (i.e linear / exponential / log) this way we can really "fork" bancor and make sure the code is safe
Here are my thoughts :

The formula depends on the number of ubiquiStick (NFT that contains a certain amount of UBQ)
so what happen if I don't have enough token to buy an NFT ? @pavlovcik you confirm that I should be able to deposit any amount right ?
We would need other functions like If I deposit x amount of ETH (I understood that it could be any token but for simplicity we take its equivalent in ETH) I will get y amount of UBQ in my ubiquiStick
@FibrinLab we are using abdkMath everywhere else would be nice to use it here also instead of another implementation
for the power you can use   b ^ n == 2^(n*log²(b)) indeed 2^(nlog²(b)) = (2^(log²(b)))^n = b^n

@Draeieg @zgorizzo69 I will wait for the updated formula then refactor.

you confirm that I should be able to deposit any amount right ?

Should be fine unless @Draeieg says otherwise.

in the current design we have to spend a certain amount of ETH to buy a stick my assumption was that no matter how much you spend you should get a stick is that right @pavlovcik ?

in the current design we have to spend a certain amount of ETH to buy a stick my assumption was that no matter how much you spend you should get a stick is that right @pavlovcik ?

@pavlovcik should I fork the bancor formula directly or wait for the updated one?

in the current design we have to spend a certain amount of ETH to buy a stick my assumption was that no matter how much you spend you should get a stick is that right @pavlovcik ?

I think its fine.

@pavlovcik should I fork the bancor formula directly or wait for the updated one?

@Draeieg you should make the formula Bancor compliant to ease implementation.

Making this bancor compliant was more annoying than expected because it wasn't designed for our use case and as a results lacks features and the easy route is going to rekt some of the usability that bancor provides

for now we're going to take the easy route, all data for the updated formula is in this Sheet
however keep in mind if possible that, in an ideal world we would upgrade this to a Bonding Surface instead of a Bonding Curve for all of the usability we have planned
2) No, each UbiquiStick will COST the amount defined in the formula, only by paying that you get the stick.

putting any amount would be like going to buy a car and pay whatever you want lmao.
only way to be able to deposit any amount would be to fractionalize the UbiquiStick, seems like a cool concept taking into consideration our whole cyberpunk style but complicated to implement IMO

this is more UI than curve itself but it should calculate the deposit amount needed for 1 UbiquiStick returned instead o tokens returned as the token returned should be a constant 1 and the variable would actually be how much money is needed

updated formula is in this Sheet, th

For archival purposes I recommend embedding all external files here. In this case, a screenshot can suffice.

Making this bancor compliant was more annoying than expected because it wasn't designed for our use case and as a results lacks features and the easy route is going to rekt some of the usability that bancor provides

for now we're going to take the easy route, all data for the updated formula is in this Sheet, the supply that will be taken into account will be the supply of UbiquiStick NOT the supply of ubq
however keep in mind if possible that, in an ideal world we would upgrade this to a Bonding Surface instead of a Bonding Curve for all of the usability we have planned 2) No, each UbiquiStick will COST the amount defined in the formula, only by paying that you get the stick.

putting any amount would be like going to buy a car and pay whatever you want lmao.
only way to be able to deposit any amount would be to fractionalize the UbiquiStick, seems like a cool concept taking into consideration our whole cyberpunk style but complicated to implement IMO

this is more UI than curve itself but it should calculate the deposit amount needed for 1 UbiquiStick returned instead o tokens returned as the token returned should be a constant 1 and the variable would actually be how much money is needed

Working on this

Bonding Surface

This is a new term for me. Can you elaborate?

updated formula is in this Sheet

For archival purposes I recommend embedding all external files here. In this case, a screenshot can suffice.

A curve is a 2d graph with 2 variables, X and Y. In this case supply of UbiquiSticks and as a result price
A surface is a 3d graph with 3 variables, X, Y and Z. supply of ubiquisticks supply of UBQ and price as aresult
the surface would be the example mentioned a few weeks ago where I proposed to move the inflection point of the logistic curve depending on the supply of ubq to incentivize/disincentivize buying the ubiquistick depending on how much UBQ we would like to burn

Sheet

Can I have access to this sheet. Thanks

@pavlovcik @zgorizzo69 Updated the PR to become more bancor compliant. Waiting for reviews. The connector weights and baseY are part of the constructor rather that being hardcoded values.

@pavlovcik Still waiting for a review. Will this require initial test for now?

Hey @zgorizzo69 do you have any remarks on this? This is more up your alley.

Can I have access to this sheet. Thanks

I gave access.

I don't see any withdraw function so it means that we will never be able to burn a stick to get the collateral out right @Draeieg  ?

I don't see any withdraw function so it means that we will never be able to burn a stick to get the collateral out right @Draeieg  ?

Yes that's correct. If they want to ape out gotta find someone else on opensea

Following up on this @zgorizzo69 @FibrinLab

Following up on this @zgorizzo69 @FibrinLab

Working on an update. I need a few  hours.

Following up on this @zgorizzo69 @FibrinLab

Working on an update. I need a few hours.

ok just ping me then

@pavlovcik @zgorizzo69
Thanks for your patience in this PR. I made the following updates.

Added tests for the bonding curve contract covering all basic functions.
Moved bonding curve parameters to functions so they can my modified with adequate permissions.
Implemented access controls for functions.
Added a "Withdraw" function for deposited tokens can still be recovered.

Sorry for the delay. Had to research a little. 🧐

@FibrinLab bondign test is failing

@zgorizzo69 @pavlovcik

CI now passing.
All assertions updated as recommended
Withdrawal to treasure implemented

@zgorizzo69 @pavlovcik I have moved BondingCurve and Bancor formula to diamond. Had to do a bit of research. Still adapting 1 more test.
Thanks for your patience.

@zgorizzo69 Moved bonding to diamond with tests. Thanks

@zgorizzo69 I appreciate the review. I added some more tests. Cool learning experience.

@zgorizzo69 Review reminder

I only focused on code style and asked a couple of questions because I'm not a Solidity developer.

Nice. Will answer each individually.

I see it failed. It could be that your CI code is out of date on this branch. Here's proof that we updated it to support GitHub review suggestion commits: https://github.com/ubiquity/ubiquity-dollar/pull/623

I see it failed. It could be that your CI code is out of date on this branch. Here's proof that we updated it to support GitHub review suggestion commits: #623

Its actually working fine

@pavlovcik Any other modifications from this PR?


Button: Add PrimaryAlt (purple) variant

Button: Add PrimaryAlt (purple) variant

This update adds a new primary alt (purple) variant to Button (version 2).
This can be rendered by:
<Button version={2} kind="primaryAlt" />

Pull Request Test Coverage Report for Build 1599

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 100.0%

Totals

Change from base Build 1598:
0.0%

Covered Lines:
6195

Relevant Lines:
6195

💛  - Coveralls


HTTPS HAR empty with BrowserMob and Selenium WebDriver

We are using the proxy and WebDriver and followed steps described in https://github.com/lightbody/browsermob-proxy#ssl-support
Still we are not able to see waterfalls. The HAR file is empty.
We tried to add certificates in many places. We are using Ubuntu instances on AWS.
Also looked at this: https://askubuntu.com/questions/244582/add-certificate-authorities-system-wide-on-firefox/248326#248326
So far nothing has worked. Anyone who can help?

I am also having similar problem. My Selenium Tests run on SeleniumGrid and I use following snippet:
ProxyServer proxyServer = new ProxyServer();
int port = 4445;
proxyServer.setPort(port);
proxyServer.start();

org.openqa.selenium.Proxy proxy = proxyServer.seleniumProxy();

dc.setCapability(CapabilityType.PROXY, proxy);
dc.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

driver = new RemoteWebDriver(new URL("http://" + machineName + "/wd/hub"), dc);

driver.get(url);
Har har = proxyServer.getHar();

I am using older version of BMP, 2.0.beta_10.jar
I am able to get through 'http' calls fine but the only problem is with 'https'.
Do we need to add certificate manually? Is there a way to do it programatically? Because often times if we want to run tests on different machines we need to repeat the process.
I see comments in other threads that the above code should work for the version that I am using. Is there something which I am missing in the code?
Also I read in the documentation: "If you're running running tests on a Selenium grid, you will need to customize the Selenium Proxy object created by createSeleniumProxy() to point to the hostname of the machine that your test is running on", how do we do that?
If anyone customize selenium proxy could you guys please provide a sample on how to do that?

We tried to add the certificate, and we tried to put it in many places, but maybe we missed the right one?

Getting empty HAR for new Chrome driver + new Chrome with Selenium 3.4.0 as well, both HTTP & HTTPS

Getting empty HAR for Safari driver + Selenium 3.0.1 on Mac and empty har for Chrome driver + Selenium 3.0.1 Win

Chrome driver 0.16 and selenium 3.4.3. Sad!

the same issue from my end

Could only add, it may help when you check that the name of your PC don't have non latin letters or symbols!

Any solutions ?

@tlytvyn What issue are you having?
An empty HAR indicates that the browser is not configured properly to send traffic to BMP.

In my case the problem is for HTTPS requests only. There should be a MITM to handle this, according to the Browsermob documentation, but either we put the certificate in the wrong place or we need to configure something else. Recently I received the following suggestion that seems to be working when proxy and WebDriver are co-located:
server = BrowserMob::Proxy::Server.new("./browsermob-proxy-2.1.4/bin/browsermob-proxy")
server.start
proxy = server.create_proxy
profile = Selenium::WebDriver::Firefox::Profile.new
profile.proxy = proxy.selenium_proxy(:ssl)
capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(accept_insecure_certs: true)
driver = Selenium::WebDriver.for :firefox, :profile => profile, desired_capabilities: capabilities
But in our case we have a standalone Browsermob, and can not set the profile from my client. At least I was not able to find a way to do so.
I start Browser mob this way, from a shell script:
#!/bin/bash
/root/bmp/bin/browsermob-proxy -port 8888 > /var/log/bmp.log 2>&1 &
sleep 10
curl -XPOST 'http://localhost:8888/proxy' -d "port=9091"
Any idea?

Are you seeing any error in the browser, or just not seeing any entries for https? Browsers have both an http and an https proxy setting, so make sure you're setting both. (That's not done by BMP in standalone mode.)

How do you set this?

@jekh
My HAR file is like that:
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.4","comment":""},"pages":[{"id":"Page 0","startedDateTime":"2017-07-31T06:48:36.079Z","title":"Page 0","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}
Here is a code (selenium latest version library is used):
`public static void main (String [] args) throws IOException {
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.start(0);
    // get the Selenium proxy object
    Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);

    // configure it as a desired capability
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--ignore-certificate-errors");
    // replace 'somedirectory' with a suitable temp dir on your filesystem
    options.addArguments("--user-data-dir=somedirectory");

    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
    capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    // start the browser up
    setChromeDriver();
    WebDriver driver = new ChromeDriver(capabilities);

    // enable more detailed HAR capture, if desired (see CaptureType for the complete list)
    proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);

    // create a new HAR with the label "yahoo.com"
    proxy.newHar();

    // open yahoo.com
    driver.get("http://www.lits.com.ua");
    driver.get("http://www.google.com.ua");

    // get the HAR data
    Har har = proxy.getHar();
    File harFile = new File("target/harfile.har");
	//harFile.mkdirs();
    harFile.createNewFile();
    har.writeTo(harFile);
}`

Hi All,
I am facing the same issue, currently i am using chrome browser, please find below HAR file
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.2","comment":""},"pages":[{"id":"www.seleniumeasy.com","startedDateTime":"2017-11-2T09:55:09.821+11:00","title":"www.google.com","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}

you should try with the latest version of Browsermob 2.1.5 and latest chrome driver, with browsermob certificates imported into chrome.
You seem to be using Browsermob 2.1.2. I am currently on 2.1.5 and have done bunch of testing, but dont have issues with capturing har logs.

@mediga , I tried with latest Browsermob 2.1.5 and latest chrome driver but still facing same issue
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"yahoo.com","startedDateTime":"2017-11-22T07:30:35.618Z","title":"yahoo.com","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}

can you share your reproducer test code? I will try it on my side.

Try this code. I made few changes to the driver options are set and it works fine. got 22 entries in the log
`	System.setProperty("webdriver.chrome.driver","C:/mystuff/qb_collector/drivers/chrome/chromedriver_232.exe");
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.setTrustAllServers(true);
proxy.start(0);
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
// configure it as a desired capability
ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-certificate-errors");
// replace 'somedirectory' with a suitable temp dir on your filesystem
options.addArguments("--user-data-dir=somedirectory");

DesiredCapabilities capabilities = new DesiredCapabilities();

options.setCapability(CapabilityType.PROXY, seleniumProxy);
options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

// start the browser up
WebDriver driver = new ChromeDriver(options);

// enable more detailed HAR capture, if desired (see CaptureType for the complete list)
proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);

// create a new HAR with the label "yahoo.com"
proxy.newHar();

// open yahoo.com
driver.get("http://www.lits.com.ua");
driver.get("http://www.google.com.ua");

// get the HAR data
Har har = proxy.getHar();

System.out.println("Entries count :"+  har.getLog().getEntries().size());
File harFile = new File("c:/mystuff/harfile.har");
try{
//harFile.mkdirs();
harFile.createNewFile();
har.writeTo(harFile);
}catch(Exception e){
e.printStackTrace();
}
}`

Hi,
Is there a resolution identified yet? I am facing the same issue and getting the following empty Har:
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"Rentalcars.com","startedDateTime":"2017-12-04T01:54:03.431Z","title":"Rentalcars.com","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}
I've tried the following but no luck:
Added the certificate manually to Firefox v54
Added 'options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);' to my code
Any help will be greatly appreciated.
Mahdi

have you tried with code I have provided earlier? Share your pom.xml entries if you are using maven.

@mediga - I have tried but it's throwing errors still, I have attached my dependencies and the code.
Please let me know if you see what I'm doing wrong, it feels I'm chasing my own tail.
code.txt
Dependencies.txt
Thanks in advance for all your help.

Can you try by removing this from pom.xml
test

I'm afraid the above didn't make any difference.
I have followed your suggestion to set the proxy instead of the setCapability. It's giving me a 'ConnectionFlowStep failed'.
I get an empty har when I revert back to:
       DesiredCapabilities seleniumCapabilities = new DesiredCapabilities();         seleniumCapabilities.setCapability(CapabilityType.PROXY, SeleniumProxy);         seleniumCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

I ran your code  as a standalone program (main() method) on my machine (windows 10 with geckodriver v0.19.1,  Firefox 57.0b13 (64-bit). Works perfectly fine.
Can you run the same on your side?
MobProxy2.java.txt

It worked like a charm, Thanks again for your help, much much appreciated

I have this interesting quirk:
When running Chrome headless, HAR information will not be captured for HTTPS urls:
ChromeOptions opts = new ChromeOptions();
opts.addArguments("--headless");

Information is captured when running a visible Chrome.

Need to install browsermob certificates into the browser. Refer the solution details here
https://github.com/lightbody/browsermob-proxy/issues/718

Thank you for your comment, but manually installing certificates is not an option for me. (I did not investigate how to automate it, though.)
With a bit of digging in #718 and https://bugs.chromium.org/p/chromium/issues/detail?id=721739#c91 (thanks again for pointing me to them), it looks like --headless and --ignore-certificate-errors can be combined in Chrome 65.
When running with Chrome 65 and Chromedriver 2.36 I have information for HTTPS requests in the HAR. (I used Selenium's DesiredCapabilities.setAcceptInsecureCerts - the Chrome command switch did not work for me.)

Hi All,
I am facing the issue for Https only, I  am using Chrome browser and getting empty HAR file
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"Page 0","startedDateTime":"2018-03-21T23:10:31.573Z","title":"Page 0","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}

Hi everyone,
Been searching for a solution since two days, but things are falling apart.
I need to log network calls, probably what everyone is trying to do here.
Please find my code attached and pom.
Please help as i m new to this.
TrafficAnalyzer.txt
pom.txt
I m using intellij, if any configuration is to be done, please discuss.

Hi
Has anyone found a solution to this issue? I am seen this issue with BrowserMob Proxy (2.1.4) , selenium grid and chrome browser. All those are run inside containers

Can anyone provide me the the java file and pom.xml file for generating har from https.

Hi Ganesh,
This might help u.
Regards,
Bilal Hayat
Con :<PHONE_NUMBER>
On Fri, Nov 2, 2018 at 5:52 PM Ganesh-Mishra<EMAIL_ADDRESS>wrote:

Can anyone provide me the the java file and pom.xml file for generating
har from https.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/lightbody/browsermob-proxy/issues/626#issuecomment-435359748,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AVt6AevZ7VsHgBPS3QIbcP-190THincjks5urDdngaJpZM4M_sjP
.

Hi everyone, I am also having this issue, though my setup might be a bit more complicated.
I am running my tests using Selenium via Maven and the Command console, browserstack local is also activated on the command console.
I am as well getting the empty har file. I can't figure out for the life of me how to get the correct data, seems like I have tried everything.
Below you will find my code, it's more like snippets as I am using PageObjects and Inheritance for my tests. Just overall a bunch of various techniques and techs are involved.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.UnknownHostException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.Capabilities;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import net.lightbody.bmp.BrowserMobProxy;
import net.lightbody.bmp.BrowserMobProxyServer;
import net.lightbody.bmp.client.ClientUtil;
import net.lightbody.bmp.core.har.Har;
import net.lightbody.bmp.core.har.HarEntry;
import net.lightbody.bmp.proxy.CaptureType;
static public BrowserMobProxy proxy = new BrowserMobProxyServer(); // getting browsermob proxy
///////////

public static Proxy getSeleniumProxy(BrowserMobProxy proxyServer) throws UnknownHostException {
int port = proxy.getPort();
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
return seleniumProxy;
}
///////////

// Sending the Test Setup for Analytics Staging //

public static void AnalyticTestSetup(WebDriver driver) throws InterruptedException, IOException {
	JavascriptExecutor LI = (JavascriptExecutor) driver;
	Capabilities cap = ((RemoteWebDriver) driver).getCapabilities();
	String browserName = cap.getBrowserName().toString();
	proxy.setTrustAllServers(true);
	proxy.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
	proxy.enableHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
	proxy.start();
	DesiredCapabilities capability = new DesiredCapabilities();
	Proxy seleniumProxy = PortalFunctions.getSeleniumProxy(proxy);
	capability.setCapability(CapabilityType.PROXY, seleniumProxy);

	// Create object of SimpleDateFormat class and decide the format
	DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");

	// get current date time with Date()
	Date date = new Date();

	// Now format the date
	String date1 = dateFormat.format(date);
	// Print out the fired analytics events//

	proxy.newHar("Analytics"); // creating new HAR

	driver.get(IndexElements.WebURL + date1);

	System.out.println(IndexElements.ANSI_WHITE + driver.getTitle() + ("  Being tested on: ") + Environment
			+ (" and ") + IndexElements.ANSI_GREEN + browserName + (" browser!"));
	driver.manage().window().maximize();
	Thread.sleep(10000);

	// get the HAR data
    Har har = proxy.getHar();
  System.out.println("Entries count :"+  har.getLog().getEntries().size());
    File harFile = new File("Users/joshua/git/Automation_Code/HarFiles/harfile.har");
    try{
   	//harFile.mkdirs();
    harFile.createNewFile();
    har.writeTo(harFile);
    }catch(Exception e){
    	e.printStackTrace();
    }

	IndexElements.iFrame(driver);
}
  ///////////////////////////////////////////////////////////////////////////////////////////////////

package analyticTesting;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import org.junit.Assert;
import java.net.URL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.log4j.BasicConfigurator;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import net.lightbody.bmp.BrowserMobProxy;
import net.lightbody.bmp.BrowserMobProxyServer;
import net.lightbody.bmp.client.ClientUtil;
import net.lightbody.bmp.core.har.Har;
import net.lightbody.bmp.core.har.HarEntry;
import com.browserstack.local.Local;
import pageObjects.AdminInterfaceFunctions;
import pageObjects.IndexElements;
import pageObjects.PortalFunctions;
@SuppressWarnings("unused")
public class AnalyticPortalRun {
public static WebDriver driver;
String methodName;

@BeforeClass
@org.testng.annotations.Parameters(value = { "browser", "version", "os", "os_version" })

public void setUp(String browser, String version, String os, String os_version) throws Exception {

	DesiredCapabilities capability = new DesiredCapabilities();
	capability.setCapability("browserName", browser);
	capability.setCapability("browserVersion", version);
	capability.setCapability("os", os);
	capability.setCapability("os_version", os_version);
	capability.setCapability("project", "Analytic Automation Test");
	capability.setCapability("build", "Staging");
	capability.setCapability("browserstack.debug", "true");
	capability.setCapability("browserstack.console", "verbose");
	capability.setCapability("browserstack.local", "true");
	capability.setCapability("browserstack.localIdentifier", "Test123");
	capability.setCapability("resolution", "1920x1080");
	capability.setCapability("browserstack.safari.enablePopups", "true");
	capability.setCapability("browserstack.safari.allowAllCookies", "true");
	capability.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
	capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
	capability.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);
	capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, "true");
	capability.setCapability("browserstack.ie.enablePopups", "true");
	capability.setCapability("browserstack.edge.enablePopups", "true");
	capability.setCapability("unexpectedAlertBehaviour", "accept");
	capability.setCapability("ignoreProtectedModeSettings", "true");
	capability.setCapability("enablePersistentHover", "true");
	capability.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, "true");
	capability.setCapability("browserstack.use_w3c", "true");
	capability.setCapability("browserstack.maskSendKeys", "true");
	capability.setCapability("browserstack.networkLogs", "true");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--ignore-certificate-errors");

	Credentials.PropertyFile.setCapabilities(capability);

	driver = new RemoteWebDriver(new URL(Credentials.PropertyFile.getBrowserstackURL()), capability);
}

@Test(priority = 1)

public void AccessPortal() throws InterruptedException, IOException {
	methodName = ("Portal Setup Test");

	PortalFunctions.AnalyticTestSetup(driver);
	PortalFunctions.iFrame(driver);
}

@Test(priority = 2)

public void PortalSignin() throws InterruptedException {
	methodName = ("Portal Signin");

	PortalFunctions.LoggingIn(driver);
	// Retrieve Har
	Har har = PortalFunctions.proxy.getHar();

	// Write Har to string
	java.io.StringWriter writer = new java.io.StringWriter();
	try {
		har.writeTo(writer);
	} catch (IOException e) {
		e.printStackTrace();
	}

	String harAsString = writer.toString();
	System.out.println(IndexElements.ANSI_BLUE + "=======CONSOLE=======" + harAsString);

}

@Test(priority = 3)

public void PortalSignOut() throws InterruptedException {
	methodName = ("Portal SignOut");

	PortalFunctions.LoggingOut(driver);

	// Retriecve BS Har
	Har har = PortalFunctions.proxy.getHar();

	// Write Har to string
	java.io.StringWriter writer = new java.io.StringWriter();
	try {
		har.writeTo(writer);
	} catch (IOException e) {
		e.printStackTrace();
	}

	String harAsString = writer.toString();
	System.out.println(IndexElements.ANSI_BLUE + "=======CONSOLE=======" + harAsString);
}

@AfterClass
public void TearDown() throws InterruptedException {
	System.out.println(IndexElements.ANSI_WHITE + "Closing the browser session.");
	PortalFunctions.proxy.stop();
	Thread.sleep(10000);
	driver.quit();

}

}

Browsermob : 2.1.5
Selenium : 3.6.0
chrome driver 2.32
Chrome : 60.x
Try this code. I made few changes to the driver  on how options are set and it works fine. Got 22 entries in the log
System.setProperty("webdriver.chrome.driver","C:/mystuff/drivers/chrome/chromedriver_232.exe");
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.setTrustAllServers(true);
proxy.start(0);
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
// configure it as a desired capability
ChromeOptions options = new ChromeOptions();
options.addArguments("--ignore-certificate-errors");
// replace 'somedirectory' with a suitable temp dir on your filesystem
options.addArguments("--user-data-dir=somedirectory");

DesiredCapabilities capabilities = new DesiredCapabilities();

options.setCapability(CapabilityType.PROXY, seleniumProxy);
options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

// start the browser up
WebDriver driver = new ChromeDriver(options);

// enable more detailed HAR capture, if desired (see CaptureType for the complete list)
proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);

// create a new HAR with the label "yahoo.com"
proxy.newHar();

// open yahoo.com
driver.get("http://www.lits.com.ua");
driver.get("http://www.google.com.ua");

// get the HAR data
Har har = proxy.getHar();

System.out.println("Entries count :"+  har.getLog().getEntries().size());
File harFile = new File("c:/mystuff/harfile.har");
try{
//harFile.mkdirs();
harFile.createNewFile();
har.writeTo(harFile);
}catch(Exception e){
e.printStackTrace();
}
}

@mediga
I tried with the same code what you had mentioned but I get 'page isn't loading - emm_response' error. Har file is empty but I See below in console logs.
http://www.google.com/ : 0,0ms
http://www.google.com/ : 0,0ms
http://www.google.com/ : 0,0ms
Entries count :3
If I change below from options to capabilities, page gets loaded but it will not write anything. Har file is empty.
WebDriver driver = new ChromeDriver(options);
proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, captureType.RESPONSE_CONTENT);
to
WebDriver driver = new ChromeDriver(capabilities);
proxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
Chrome driver: 76+
Selenium Java: 3.141
browsermob-core:2.1.5
In both cases Har file is empty.
Please guide me. Your suggestions will be really helpful.

I also wondered why my entries are empty, even after I imported the the certs into my system.
In the end my mistake was that I only specified httpProxy, but forgot to set sslProxy in my webdrivercapabilities as well.
proxy {
   "proxyType": "manual",
   "httpProxy": "BROWSER-MOB-PROXY SERVER",
   "sslProxy": "BROWSER-MOB-PROXY SERVER",
}

try this:
yum install -y google-chrome-stable
It works for me with the same issue

Facing Same issue Please help me out. My Code getting the proper Logs but the Issue I am facing is that on the Browser it shown Now secured.
Here is my code-https://github.com/ramitd1995/BrowserMob-proxy-with-Selenium/tree/master

yum install -y google-chrome-stable

Is it for ubuntu

Hi All I am facing thew same issue trying to capture HAR file with selenium java. But the HAR file shows only 1 kb ideally it should be more as I am opening google and searching. The script is successful but the HAR file is not being filled with content. Can you please help me out:

code:
@Test
public void generateHARFile2() throws InterruptedException, IOException {
//1. Start the proxy on some port
BrowserMobProxy myProxy=new BrowserMobProxyServer();

myProxy.start(0);

//2. Set SSL and HTTP proxy in SeleniumProxy
Proxy seleniumProxy=new Proxy();
seleniumProxy.setHttpProxy("localhost:" +myProxy.getPort());
seleniumProxy.setSslProxy("localhost:" +myProxy.getPort());

//3. Add Capability for PROXY in DesiredCapabilities
DesiredCapabilities capability=new DesiredCapabilities();
capability.setCapability(CapabilityType.PROXY, seleniumProxy);
capability.acceptInsecureCerts();
capability.setCapability(CapabilityType.ACCEPT_INSECURE_CERTS, true);

//4. Set captureTypes
EnumSet <CaptureType> captureTypes=CaptureType.getAllContentCaptureTypes();
captureTypes.addAll(CaptureType.getCookieCaptureTypes());
captureTypes.addAll(CaptureType.getHeaderCaptureTypes());
captureTypes.addAll(CaptureType.getRequestCaptureTypes());
captureTypes.addAll(CaptureType.getResponseCaptureTypes());

//5. setHarCaptureTypes with above captureTypes
myProxy.setHarCaptureTypes(captureTypes);

//6. HAR name
myProxy.newHar("MyHAR");

//7. Start browser and open URL

WebDriverManager.chromedriver().setup();

ChromeOptions options=new ChromeOptions();
options.merge(capability);
WebDriver driver=new ChromeDriver(options);

//Print Driver Capabilities
System.out.println("Driver Capabilities===> \n" +((RemoteWebDriver)driver).getCapabilities().asMap().toString());

driver.get("https://www.google.com/");
driver.findElement(By.xpath("(//input[@type='text'])[1]")).sendKeys("selenium");
Thread.sleep(2);
driver.findElement(By.xpath("(//input[@type='text'])[1]")).sendKeys(new CharSequence[] {Keys.ENTER});
Thread.sleep(2);
driver.findElement(By.xpath("(//*[contains(text(),'Selenium')])[1]")).click();
Thread.sleep(2);

driver.manage().window().maximize();

Thread.sleep(14000);

Har har=myProxy.getHar();

File myHARFile=new File(System.getProperty("user.dir")+"/HARFolder/googleHAR3.har");
har.writeTo(myHARFile);

System.out.println("==> HAR details has been successfully written in the file.....");

driver.close();

}

Hi
I am getting HAR empty.
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"Page 0","startedDateTime":"2024-05-12T10:16:42.060Z","title":"Page 0","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}
I am using

4.0.0
<groupId>org.example</groupId>
<artifactId>mobproxy-har-project</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.1.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.testng/testng -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.10.2</version>
        <!--<scope>test</scope> -->
    </dependency>

    <dependency>
        <groupId>net.lightbody.bmp</groupId>
        <artifactId>browsermob-core</artifactId>
        <version>2.1.5</version>
        <!--<scope>test</scope>-->
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>22.0</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.8.0-beta0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.20</version>
        <scope>provided</scope>
    </dependency>

</dependencies>

could you please some one suggest me why it is not generating?

Hello everyone,
I am facing same issue and getting below in har file
{"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"MyHAR","startedDateTime":"2024-05-27T11:34:15.437Z","title":"MyHAR","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}
using
selenium-java : 4.21.0 ,
browsermob-core : 2.1.5
nonheadless mode
Windows
Can anyone help me out here please?? It’s been 2 days trying out to resolve and finally ended up here with the same issue everyone facing.
Can we please get the solution on this?
Thanks in advance:)

Hello everyone,
I am facing same issue and getting below in har file {"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"MyHAR","startedDateTime":"2024-05-27T11:34:15.437Z","title":"MyHAR","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}
using selenium-java : 4.21.0 , browsermob-core : 2.1.5 nonheadless mode Windows
Can anyone help me out here please?? It’s been 2 days trying out to resolve and finally ended up here with the same issue everyone facing. Can we please get the solution on this? Thanks in advance:)

Can anyone please help here??

Hello everyone,
I am facing same issue and getting below in har file {"log":{"version":"1.2","creator":{"name":"BrowserMob Proxy","version":"2.1.5","comment":""},"pages":[{"id":"MyHAR","startedDateTime":"2024-05-27T11:34:15.437Z","title":"MyHAR","pageTimings":{"comment":""},"comment":""}],"entries":[],"comment":""}}
using selenium-java : 4.21.0 , browsermob-core : 2.1.5 nonheadless mode Windows
Can anyone help me out here please?? It’s been 2 days trying out to resolve and finally ended up here with the same issue everyone facing. Can we please get the solution on this? Thanks in advance:)

Can anyone please help here??

@jekh can you please help here?


[False Positive]  Scaffolding Bug

Before you report:

[ ] This issue does not happen on the default Matrix config files.
[x] I am on the latest version of Matrix and MatrixChecks.
[x] I can reproduce this issue and have the steps to do so.
Steps to reproduce
https://drive.google.com/file/d/10BYnaFs-riT5haaWVE-S3Q2DWiW9d3Y_/view?usp=sharing
Scaffolding bug
if I jump in gamemode 1 its normaly, but in gm 0 it is very buggy you can see in that video. I tested it without Matrix and it was normal.
Information

Client Version:  1.16.5
Server Version:  Paper 1.16.5

This is an issue with the anticheat itself, nothing I can do. Report this on their issue tracker.


Security controls > Tokenization docs

Describe what tokenization is
Add Rust example

WIP:

[ ] Golang example of gRPC API usage
[ ] HTTP API usage example

Questions:

What should we put in acra/security-controls/_index.md? The main reason this page exists is to give us access to sub-pages, but it cannot be empty or just contain "TODO".
Tokenisation or tokenization? I used the second one, but if the first one is better and used everywhere else I'll replace.

"tokenization" is fine


Change siac wallet send siacoins documentation to remove the legacy 10 SC fee

The 10 SC transaction fee was replaced with a dynamic fee a long time ago, but the siac documentation still mentioned the old fee.

thanks!


Incorrectly Normalized Importance Weights in Prioritized Experience Replay

In the original PER paper, the priority importance weights are normalized by the max weight.
However, in the code, what is being called "max_weight" is actually the normalized weight minimum...
Was this done intentionally? Wouldn't this make the importance weights much larger than they should be?
Not just larger, if the priorities were not already normalized, this would put many of them at a value above 1.0
Additionally, I understand fixing this would require a MaxSegTree.
It would replace the MinSegTree.
https://github.com/openai/baselines/blob/master/baselines/deepq/replay_buffer.py#L159
`#

class PrioritizedReplayBuffer(ReplayBuffer):
....
....
def sample(self, batch_size, beta):
....
assert beta > 0
idxes = self._sample_proportional(batch_size)
    weights = []
    p_min = self._it_min.min() / self._it_sum.sum()
    max_weight = (p_min * len(self._storage)) ** (-beta)

    for idx in idxes:
        p_sample = self._it_sum[idx] / self._it_sum.sum()
        weight = (p_sample * len(self._storage)) ** (-beta)
        weights.append(weight / max_weight)
    weights = np.array(weights)
    encoded_sample = self._encode_sample(idxes)
    return tuple(list(encoded_sample) + [weights, idxes])

`

I think that the intention is to use the min for inverse normalization.
That is due to the weights needing to be small for high priority states, but big for low priority states.
You could just as easily do regular normalization, and then weights = 1-weights.
This isn't a negligible decision, however, as when using inverse normalization the ratios of the weights to eachother,
is not identical to the ratios of priorities to eachother.
Consider the following:
`>>> a
array([1, 2, 3, 4, 5])

a / a.max()
array([0.2, 0.4, 0.6, 0.8, 1. ])
a.min() / a
array([1.        , 0.5       , 0.33333333, 0.25      , 0.2       ])`

As you can see, with inverse normalization the priority ratios are not preserved.
I don't know why this decision was made, but it's definitely not clear from the code.

I have run into this same confusion about the implementation here - it has cropped up in several other pieces of code and implementations, but no one has given any indication as to why the weights are being calculated differently than the original PER approach.
Is anyone able to give any insight into this implementation decision?


pull request for e2e test at 12/05/2016 15:56:02

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Fix to change illuminate/support dependency version to allow installation with laravel 5.6.1

Visually tested with mysql backend but may be issues with sqlite.
Putting this here for others to run alternative tests.

This change removes support for laravel 5.5, and doesn't fix any other dependencies.


Wrong / \

In multiple places on this page / is used when \ should be used.

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

ID: 7e58e411-8997-2db1-5965-cc657dc862db
Version Independent ID: 7e58e411-8997-2db1-5965-cc657dc862db
Content: Troubleshooting the new Teams installation - Microsoft Teams
Content Source: Teams/new-teams-troubleshooting-installation.md
Service: msteams
GitHub Login: @JoanneHendrickson
Microsoft Alias: jhendr

@hoyty76 thank you for reaching out and helping to improve Microsoft Docs. I've had a look at the document and the punctuation marks might have been fixed in the interim. Please can you check to confirm, or point out where you noticed a correction that is necessary. Thanks again.

Thank you for submitting feedback. We understand that this issue has been resolved.
Please feel free to re-open this issue if there is a specific area of the docs that we can improve or make better. Thank you.


GitHub Wiki

You might wanna consider Not Using GitHub Wiki.

( I saw that you have a separate repo for generating the docs,
though that I'm referring to not use it to display the content )
As the guide shows, an alterentive would be having a separate
repo, which you already do, so why not have the generated files
be there instead?

We have plans to create our own documentation platform for SGG-Modding, that isn't to be viewed from GitHub so it can be indexed by search engines.
For now I have kept the documentation and code (of ModUtil) separate because I don't update the documentation to match the code at the moment anyway (it's already fragmented without there being more than one version or contributor)
Thanks for the suggestion though, keep doing what you're doing.

We have plans to create our own documentation platform for SGG-Modding, that isn't to be viewed from GitHub so it can be indexed by search engines.

Well you could utilize a separate repository
and enable GitHub Pages, that will allow you
to have it be indexed.


Allow typing in date widget

Fixes #1178 : Allow typing in date widget
- Summary
Allow typing in date widget by setting the date only if the format is valid
- Test plan
Test date widget behavior is ok
- Description for the changelog
Allow typing in date widget

Deploy preview for cms-demo ready!
Built with commit 67be56c1cd47d26163f196e3e0b877ad9574dbea
https://deploy-preview-1247--cms-demo.netlify.com

Deploy preview for netlify-cms-www ready!
Built with commit 67be56c1cd47d26163f196e3e0b877ad9574dbea
https://deploy-preview-1247--netlify-cms-www.netlify.com

This looks great -- I think reverting to the previous value if the date is invalid is reasonable. Do you think we need to warn the user at that point, or just revert it? For simple changes, the user wouldn't necessarily notice that it was reverted (e.g. entered SM instead of AM).

@tech4him1 The empty case is now supported and the user is warned onBlur that the date is invalid.

This is definitely an improvement, thanks @Dammmien!
I do find the warning jarring, especially considering the case where a user types in a date, and it's almost guaranteed to be the wrong format, then they get a generic warning and the field goes blank.
I'd like us to consider attempting to moment.parse whatever they type, and use the result if it's valid. Moment is really good at parsing dates, and while much of the fast and loose parsing is deprecated, their 3.0 milestone is years old and looks unlikely to ever come to fruition. In the future we could also move to date-fns which seems quite happy to parse strings as well.
Thoughts?

Also, if we do choose to use moment.parse, I don't see any problem with just using the functions in react-datetime directly to parse and check validity. We should simply be able to set the dateFormat on it.

@erquhart , @tech4him1
I pushed a new version, where the input is parsed with moment(...) if the date is valid it's used otherwise it's reverted to the previous value.
What do you think about it ?

@erquhart Just so I understand -- we're not warning users if the date is invalid because of why? Now that we are parsing with Moment it should rarely be invalid.

Right, so you'd have to type something pretty odd to get a blank field.

Is there any reason we can't throw the warning only if the value is invalid, since that should be rare now?

It is clearer that way - your call, I'm good with either.
Sent with GitHawk

@tech4him1 I changed isValid to isValidDate and restored the warning when the value can't be parsed by Moment.


TypeError: EventSource is not a constructor

I want to add event source in stencil component but it shows me error .
i have used this code.
import { NativeEventSource, EventSourcePolyfill } from 'event-source-polyfill';
const EventSource = NativeEventSource || EventSourcePolyfill;

componentWillLoad () {
    this.base = new BaseComponent(this, dxp)
    this.base.i18Init(dxp, 'Notification', messages)
    const eventSource = new EventSource('http://localhost:9999/notify')
    eventSource.onmessage = e => {
      const msg = e.data
      this.message = msg
    }

Could you debug this issue? Could you look what you have in the EventSource variable?

Actually even if i do not import eventsource it should work for crome. but it shows "[ts] Cannot find name 'EventSource'". but if i write it in script tag then it works but script tag is not allowed in .tsx. so any idea how to use eventsource or script tag in .tsx file ?

I have no ideas, sorry

'NativeEventSource' is not exported by node_modules\event-source-polyfill\src\eventsource.js i figured it  but now i am getting this error while building.
any idea about that ?

No, what is the best way to export the NativeEventSource?

can you provide eventsource.ts typeScript of same eventsource.js file ?
that might work.

could you create a pulll request with that file?

Similar issue below?
TypeError: ActiveXObject is not a constructor
at new XMLHttpRequest (/Users/ts-cortez.franz/ts-sample/node_modules/event-source-polyfill/src/eventsource.js:37:14)
at getBestXHRTransport (/Users/ts-cortez.franz/ts-sample/node_modules/event-source-polyfill/src/eventsource.js:724:9)
at start (/Users/ts-cortez.franz/ts-sample/node_modules/event-source-polyfill/src/eventsource.js:743:148)
at new EventSourcePolyfill (/Users/ts-cortez.franz/ts-sample/node_modules/event-source-polyfill/src/eventsource.js:719:5)
at /Users/ts-cortez.franz/ts-sample/dist/index.js:32:22
at Layer.handle [as handle_request] (/Users/ts-cortez.franz/ts-sample/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/ts-cortez.franz/ts-sample/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/ts-cortez.franz/ts-sample/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/ts-cortez.franz/ts-sample/node_modules/express/lib/router/layer.js:95:5)
at /Users/ts-cortez.franz/ts-sample/node_modules/express/lib/router/index.js:281:22

@franzcortez1127 , are you trying to use it in node.js? It was never working this way, only in browsers, which provide "fetch API". Not sure if it is hard to add node.js support.

I have tried it with Nest.js. Looks like the same issue.
TypeError: eventsource_1.EventSource is not a constructor.
Possible some updates or plans with fixing it?

@alexfilitaryn-awtg , please propose a fix, I have no idea how to fix it

In my case the issue happened with the origin lib https://www.npmjs.com/package/eventsource and I thought that here could be similar solution. Anyway for my case with origin lib was enough only use correct importing import * as EventSource from 'eventsource';.

@alexfilitaryn-awtg thanks for the info
Thus lib does not export anything as es module and so you can only import 'EventSource.js' and then aget the constructor from globalThis . I do not know howpeople use it or if someone uses packers and if they modify the code somehow. The lib cannot be updated to export for compatibility with okd browsers


Add Badge to display devDep status on repo, with link to details

Makes it a bit easier to keep an eye on outdated deps.

Thanks!


Prevent Resizer from resizing specific cells

Hi,
When adding buffer cells to the input pins (using buffer_ports -inputs command), they get resized by the resizer script.  Even tough i specified MIN_BUF_CELL_AND_PORTS = BUFX1, some of the input pins buffers get resized to BUFX2 or BUFX4.
This can be seen also on gcd example with the following resize.tcl script , where the BUFX1 input buffers get resized to CLK_BUFX1's
...
# Set the buffer cell
set buffer_cell [get_lib_cell [lindex $::env(MIN_BUF_CELL_AND_PORTS) 0]]
set_dont_use $::env(DONT_USE_CELLS)

puts "Perform input port buffering..."
buffer_ports -inputs -buffer_cell $buffer_cell

set db [::ord::get_db]
set block [[$db getChip] getBlock]
foreach inst [$block getInsts] {
    #puts "instance name: [$inst getName]"
    if { [regexp {^input[0-9]+$} [$inst getName] whole number] } {
        puts "matched name: $whole"
        set inst_master [$inst getMaster]
        put "master is : [$inst_master getName]"
        #i tried marking the input buffer as FIXED, to avoid being resized by resizer, but it did not work
 #       $inst setPlacementStatus FIRM
    }
}

puts "Perform buffer insertion..."
set_max_fanout $::env(MAX_FANOUT) [current_design]
repair_design -max_wire_length $::env(MAX_WIRE_LENGTH) -buffer_cell $buffer_cell

# Perform resizing
puts "Perform resizing after buffer insertion..."
resize
...

Is there a way to prevent Resizer to resize specific cells ? (like marking them as DONT_RESIZE or something)
What i am hoping for is that in case of slew rate repair, Resizer adds a new buffer after the existing one, instead of replacing it (BUFX1-->BUFX4--> (rest of logic)..., instead of BUFX4-->(rest of logic)...) if it is marked as DONT_RESIZE.
My goal here is to not modify the capacitance presented at input pin, but i guess that other people could have situations where they do not want resizer to resize specific cells.
Is there something allowing this in Resize code ?
Thanks

why not just swap the command order?

Well then i was wondering how would Resizer resize the logic behind the input buffer without knowing what is driving it, but i guess that if i specify  in the sdc a set_driving_cell  for each input pin corresponding to the input buffer, it would know...
I will try this, Thanks !

set_driving_cell
On Tue, Aug 18, 2020 at 11:38 PM quentinw91<EMAIL_ADDRESS>wrote:

Well then i was wondering how would Resizer resize the logic behind the
input buffer without knowing what is driving it, but i guess that if i
specify in the sdc a set_driving_cell for each input pin corresponding to
the input buffer, it would know...
I will try this, Thanks !
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/The-OpenROAD-Project/OpenROAD/issues/478#issuecomment-675882600,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIJDZFMZTDLSQDXROMFF2ALSBNXM5ANCNFSM4QDDCF2Q
.

Hi,
apparently the set_driving_cell won't solve this because it will get in the way of Resizer to repair max_fanout violation (see #496 ).  So i think I should try this other approach to solve my issue : (without the need to modify Resizer for my specific case)
I use the buffer_ports -input and let Resizer resize them if needed (that way the max_fanout is solved).
And then search for all buffer inputs that were resized, and "re-buffer" them.
For that, I would need to have a function to put an input buffer to a specific pin.  Is it possible to add it ?
I guess the code should look like that:
Lines to add to Resize.tcl:
proc parse_pin { keys_var required } {
  upvar 1 $keys_var keys
  set pin "NULL"
  if { [info exists keys(-pin)] } {
    set pin_name $keys(-pin)
    if { $pin_name != "" } {
      set pin [get_pin_error "-pin" $pin_name]
      if { $pin != "NULL" } {
	if { ![get_property $pin is_pin] } {
	  ord::error "[get_name $pin] is not a pin."
	}
      }
    }
  } elseif { $required } {
    ord::error "-pin required for pin buffer insertion."
  }
  if { $pin == "NULL" && $required } {
    ord::error "-pin required for pin buffer insertion."
  }
  return $pin
}

define_cmd_args "buffer_input_port" {-pin pin\
				  -buffer_cell buffer_cell}

proc buffer_input_port { args } {
  parse_key_args "buffer_input_port" args \
    keys {-buffer_cell -pin} flags {}

  set buffer_cell [parse_buffer_cell keys 1]
  set pin [parse_pin keys 1]
  check_argc_eq0 "buffer_input_port" $args

  buffer_input_port $pin $buffer_cell
}

and lines to add to Resize.i:
void
buffer_input_port(Pin *input_pin,
			   LibertyCell *buffer_cell)
{
  ensureLinked();
  Resizer *resizer = getResizer();
  resizer->bufferInput(input_pin, buffer_cell);
}

I am not sure this is the only files that should be modified.  And I am a bit confused about what is a "pin" and a "port", which seems to be a bit mixed in the code (especially for the is_pin verification in parse_pin proc...).  So could you maybe review this and add it if it is okay ?
Thanks

@quentinw91
Still are you facing the issue?
Provide right test case to reproduce the same.

stale


How to calculate SRI for nonlinear models?

@mtsokol
https://github.com/BCG-X-Official/facet/issues/374 related.
Thank you. I have modified your code and considered non-linear models such as KernelRidge.
However, KernelRidge is naturally not compatible with TreeExplainerFactory, so I considered using KernelExplainerFactory or ExactExplainerFactory. However, since ExactExplainerFactory is not usable depending on the size of the dataset, I adopted KernelExplainerFactory(shap_interaction=True).
In this case, a RuntimeError occurs.
RuntimeError: SHAP interaction values have not been calculated. Create an inspector with parameter 'shap_interaction=True' to enable calculations involving SHAP interaction values.
Checking your implementation, it seems that KernelExplainerFactory does not compute shap_interaction.
https://github.com/BCG-X-Official/facet/blob/66bea1574e7a05e8db13cc25b5f071a260d0f66b/src/facet/explanation/_explanation.py#L377
https://github.com/BCG-X-Official/facet/blob/66bea1574e7a05e8db13cc25b5f071a260d0f66b/src/facet/inspection/_learner_inspector.py#L139
I have two questions.
1.
For non-linear models, is it necessary to use ExactExplainerFactory and perform inspector.fit()? What should I do if the data size is large?
2.
The specification that KernelExplainerFactory internally converts shap_interaction=True to False is confusing. Would it be better to throw an error if shap_interaction=True is specified, or change it so that the shap_interaction argument cannot be specified at all?
import pandas as pd
from sklearn.model_selection import RepeatedKFold, GridSearchCV

# some helpful imports from sklearndf
from sklearndf.pipeline import RegressorPipelineDF
from sklearndf.regression import RandomForestRegressorDF

# relevant FACET imports
from facet.data import Sample
from facet.selection import LearnerSelector, ParameterSpace

from sklearn.datasets import load_diabetes
X,y = load_diabetes(return_X_y=True)
data = load_diabetes()

X = pd.DataFrame(X)
X.columns  = data["feature_names"]
y = pd.DataFrame(y)
y.columns = ["target"]
diabetes_df = pd.concat([X,y], axis=1)

# create FACET sample object
diabetes_sample = Sample(observations=diabetes_df, target_name="target")

# create a (trivial) pipeline for a random forest regressor

from sklearn.kernel_ridge import KernelRidge
model = KernelRidge()
model.fit(X,y)

# fit the model inspector
from facet.inspection import NativeLearnerInspector
inspector = NativeLearnerInspector(
    model=model,
    explainer_factory=KernelExplainerFactory(),
    n_jobs=-3,
    shap_interaction=True

)
inspector.fit(diabetes_sample)

# visualise synergy as a matrix
from pytools.viz.matrix import MatrixDrawer
synergy_matrix = inspector.feature_synergy_matrix()

# visualise redundancy as a matrix
redundancy_matrix = inspector.feature_redundancy_matrix()
# visualise redundancy using a dendrogram
import matplotlib
from pytools.viz.dendrogram import DendrogramDrawer
redundancy = inspector.feature_redundancy_linkage()

Sorry @jckkvs  this slipped through
Re (1) totally agree an exception would be better - we will make that change
Re (2) FACET relies on the shap package for all SHAP calculations. I agree it would be great to see support for interaction values for a broader set of models - probably best to raise that to the shap maintainers. Alternatively we may consider adding our own interaction explainer to a future version of FACET (in our own work, we find that ensemble models work great so we're fine using the TreeExplainer)

That's right, for SHAP interaction values I believe you are mostly limited to tree based models.


Document kprobes attached to syscalls

Handling arguments in syscall functions (like __x64_sys_execve) works a bit different than for the most of kernel functions. All syscalls are wrapped in macros which wrap all the arguments in struct pt_regs *regs.
For example, this definition of the execve syscall:
SYSCALL_DEFINE3(execve,
		const char __user *, filename,
		const char __user *const __user *, argv,
		const char __user *const __user *, envp)
{
	return do_execve(getname(filename), argv, envp);
}

https://elixir.bootlin.com/linux/latest/source/fs/exec.c#L2101
gets preprocessed to a signature like int __x64_sys_execve(struct pt_regs *regs)  (not literally, but the struct pt_regs *regs argument is imporant here!).
All the arguments like const char __user *, filename are inside *regs, they are not the part of the signature of __x64_sys_execve directly.
Unwrapping those syscall arguments in Rust in Aya looks like:
fn try_execsnoop(ctx: ProbeContext) -> Result<u32, u32> {
    let regs = PtRegs::new(ctx.arg(0).ok_or(1u32)?);

    let task: *const task_struct = regs.arg(0).ok_or(1u32)?;
    let fp: *const u8 = regs.arg(1).ok_or(1u32)?;
    let argp: *const usize = regs.arg(2).ok_or(1u32)?;

    // Do something with those args.

    Ok(0)
}

This might be very confusing for people, so we should definitely make a separate doc section about syscalls.
Preferably after aya-rs/aya#534 is done - syscall function names depend on architecture.

This example is very likely to fail because bpf_probe_read_kernel call is missing, making the verifier tripping up
  let regs = PtRegs::new(ctx.arg(0).ok_or(1u32)?);
 // bpf_probe_read_kernel call must be inserted here to read the pt_regs
 let task: *const task_struct = regs.arg(0).ok_or(1u32)?;

We came to conclusion that we don't want to document it. We should encourage people to use tracepoint instead.
See: https://discord.com/channels/855676609003651072/855676609003651075/1158678307328499782


fix-774 | added tooltip in case of the longer text than the container.

added tooltip in case of the longer text than the container.

Thank you for your contribution to the repo. Before submitting this PR, please make sure:

[X] Your code builds clean without any errors or warnings
[X] You are using approved terminology
[X] You have added unit tests
[X] You have updated documentation
[X] You have tested your changes

Please provide a description of the changes proposed in the pull request and reference any related issues in the repository.
Please indicate if this PR contains:

[X] A bug fix
[ ] A feature request
[ ] Breaking changes
[ ] An enhancement

Hello @Anilpandiya,
Thank you for your contribution. The current issue is way deeper than the solution you suggested as it also stems from incorrect behavior within the component where we modify the inner data.
Taking that into account and trying to address the issue we already have it handled in a similar fashion in #803


Edits and improvements to GAP_PRODUCTS.DESIGN_YEAR

Issue Description
1. Content: Shouldn't DESIGN_YEAR in the GAP_PRODUCT.SURVEY_DESIGN table be the year that year's area calculations were calculated in? Here, all EBS entries have DESIGN_YEARs of 2022 even for YEARs before 2022 (which is impossible). For example and if I recall correctly, design-based estimates calculated in 2023 and 2022 were calculated with area estimates where DESIGN_YEAR = 2022, but estimates from 2021 thru 2019 were originally estimated with the area calculations produced in 2019, 2018-2010 with 2010, 2009-1993 with 1993, and so on. This will be an issue with NBS and (I believe) BSS, too.

2. Description: Stock assessors asked for some more direction and documentation about how to use/impliment the SURVEY_DESIGN table. Here is what is currently listed:

### Tasks
- [ ] Fix the years listed in the `GAP_PRODUCTS.SURVEY_DESIGN.DESIGN_YEAR` column. _I've added a new column to the table in [future oracle](https://docs.google.com/spreadsheets/d/1wgAJPPWif1CC01iT2S6ZtoYlhOM0RSGFXS9LUggdLLA/edit?usp=sharing) table temporarily called `DESIGN_YEAR1` with what I think the years should be (referencing `GAP_PRODUCTS.AREA.DESIGN_YEAR and RACEBASE.STRATUM`). Edit and use this column to update the `DESIGN_YEAR` column when everything looks right and if these changes are appropriate._
- [ ] There are years of the NBS (`SURVEY_DEFINITION_ID` = 143) that are listed in the `DESIGN_YEAR` table but were never conducted. _I have highlighted these years in red and struckout the text. Please go in and delete them if you agree with these changes._ Are there any other surveys listed there that were never conducted?
- [ ] Should 2023 Bering Sea slope (`SURVEY_DEFINITION_ID` = 78) be added to the `DESIGN_YEAR` table (as is currently in the `AREA` table). If we are not doing a BSS survey in 2023, does it get added to DESIGN_YEAR? _I've added these to the [future oracle](https://docs.google.com/spreadsheets/d/1wgAJPPWif1CC01iT2S6ZtoYlhOM0RSGFXS9LUggdLLA/edit?usp=sharing) table in green for your review._
- [ ] Change `DESIGN_YEAR` description from to "The year that the AREA_KM2 of the AREA_ID was calculated. AREA_ID areas are recalculated as needed with better bathymetric and land-water boundary data. " Or something like this.
- [x] `SURVEY` should be deleted as it is redundant to SURVEY_DEFINITION_ID. _I've deleted this column from the [future oracle](https://docs.google.com/spreadsheets/d/1wgAJPPWif1CC01iT2S6ZtoYlhOM0RSGFXS9LUggdLLA/edit?usp=sharing) table and should update directly in the next data product run._
- [ ] More documentation in the table description about how this table should be used to select the `DESIGN_YEAR` in `GAP_PRODUCTS.AREA`/`AKFIN_AREA` should be included. In addition to what is here, we should add something like: `"For a given YEAR of the survey, use the associated DESIGN_YEAR to recreate the design-based estimates with the stratum areas of that survey YEAR. DESGIN_YEAR is survey specific. "` after the first sentence (or something like it).
- [ ] @Duane-Stevenson-NOAA can you also check my new designations for the new and temporary `DESIGN_YEAR1` column?

I feel like I need more context on this. The "content" portion of this
issue seems like a misunderstanding about the fact that we recalculate all
the biomass, agecomps, sizecomps for all years after each new survey year.
So it's not impossible that the 1999 biomass estimates were calculated
with  DESIGN_YEAR = 2022. Thus, I'm not sure why we need a new column or an
update to the DESIGN_YEAR column. Em, maybe we should chat about this.
Duane
On Wed, Feb 7, 2024 at 6:35 PM Em Markowitz (NOAA) @.***>
wrote:

Assigned #23 https://github.com/afsc-gap-products/gap_products/issues/23
to @Duane-Stevenson-NOAA https://github.com/Duane-Stevenson-NOAA.
—
Reply to this email directly, view it on GitHub
https://github.com/afsc-gap-products/gap_products/issues/23#event-11740119221,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANKDWAVFACXAAAC2AGLOF5TYSQ2WJAVCNFSM6AAAAABC63NMZ6VHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJRG42DAMJRHEZDEMI
.
You are receiving this because you were assigned.Message ID:
@.***
com>

--
Duane Stevenson, Ph.D.
Supervisory Fish Biologist
Groundfish Assessment Program
NMFS, Alaska Fisheries Science Center

I had the impression from the conversation in the virtual room that much of the confusion about DESIGN_YEAR had to do with the introduction of a lookup field that the users didn't anticipate having to leverage and was less about which design year's stratum areas you used to do your computations. That said, I would suggest that both concepts, the one Duane raised and the one I raised, be explored the next time we get the team together in Office Hours.

Sounds good. It'll be good to table this until @zoyafuso-NOAA can join in on this discussion, too!

@Duane-Stevenson-NOAA is correct in that all survey years' indices are calculated with the 2022 version of the EBS stratum areas. So the DESIGN_YEAR value for YEAR = (1982-2023) for the EBS SURVEY_DEFINITION_ID = 98 should all be DESIGN_YEAR=2022. It sounds redundant but this format is important when the GOA survey time series goes from DESIGN_YEAR=1984 for YEAR = (1990-2023) and DESIGN_YEAR=2025 for YEAR = (2025-onwards) due to the restratificaiton.
This table is definitely used internally within gapindex and is the main reason for existing. I was probably not privy to this conversation at the last office hours so I am not sure how this table is used outside of that. It seems like folks want to query the GAP_PRODUCTS.AREA with just the appropriate stratum records used in the index calculation?
@EmilyMarkowitz-NOAA  you’re right about the NBS years, thanks for cleaning that up. For the slope, there shouldn't be a record for the BSS with YEAR = 2023 because there wasn't a slope survey in 2023. However, when the time is appropriate, the value for DESIGN_YEAR for the BSS years will be updated from 2002 -> 2023.

Oh thanks for clearing that up, Zack. So... I think I am the one who was confused about what this table was for and suspect I have likely mislead folks/started this confusion. I thought it was documenting what stratum calculations estimates were previously calculated with (which I now see is wrong). We'll just clear it up at the next office hours I suppose? But glad I was able to fix a few other finds! @zoyafuso-NOAA, you'll go through everything here and implement stuff as needed and close the issue? Or is there anything else I can provide/help with?
Also, we currently make the AKFIN_SURVEY_DESIGN table available to AKFIN. Do we want to remove that table from the dump if it is internal/should only be needed in gapindex?

I think for now we can still provide the SURVEY_DESIGN table to AKFIN and continue discussions with users as to whether this table will still be useful to them before removing the table from the AKFIN table transfer.


Would you consider adding a branch to make this a Visual Studio Extension?

I use Visual Studio community for Mac to run and test my .NET Core projects. Having this feature would be really useful. I would be willing to help and I know C#, which BTW is similar to Typescript.

@ionutvmi - started working on this for MacOS. https://github.com/inunotaisho26/path-autocomplete

hi @inunotaisho26 ,
I'm happy to add a link in the readme once your extension is published.
You can create a PR with that change to the readme file once you consider it stable.


feat/ci: add backport GHA

Description
Standardizing across deploy-* repos

Checklist

[ ] Update CHANGELOG.md
[ ] Update K8s Upgrade notes
[ ] Kustomiz-specific changes
[ ] Update sister repository: deploy-sourcegraph-helm
[ ] Update sister repository: deploy-sourcegraph-docker
[ ] Verify all images have a valid tag and SHA256 sum

Test plan
NA

BACKPORT_GITHUB_TOKEN added to repository secrets

Label created

5.7.x branch created https://github.com/sourcegraph/deploy-sourcegraph-k8s/tree/5.7.x


ODBC Direct Query count_big

Hi!
We are trying to make DQ ODBC for our DB, and it works somehow, but when we add DateTime Slicer to PBI the query genereated to our DB starts to use COUNT_BIG() instead of COUNT().
COUNT_BIG() is not supported by our DB, is there any way to map COUNT_BIG() to COUNT() ?

I'm a little confused by this because we don't ever generate COUNT_BIG in our ODBC SQL generation code. Is this going through an M-based wrapper?

@CurtHagenlocher
We wrote a custom connector using latest Power Query SDK and sample from this repo. When we trying to use it for aggregations, it generates sql with COUNT_BIG function. We found generated SQL in trace log.

Yes, Analysis Services would send us a "COUNT_BIG" but we then translate that into M. When we emit SQL again to send that to the ODBC driver, it should be as "COUNT". What is the name of the action/event where you see COUNT_BIG?

We mistakenly assumed that SQL that we see in trace log is the same as sent to ODBC.
Could you tell us where we can see final SQL query? This issue can be closed

The action should be "Engine/IO/Odbc/Command/ExecuteDirect", and the SQL-92 we send to the driver should be in the "CommandText" value.

@CurtHagenlocher Thank you


Inputs name used for YAML example should be consistent with IntelliSense provided in vscode

Right now there is a lot of documentation examples about pipeline definition in YAML which seem to rely on input names.
Problem is this is not what we are facing as developpers because IntelliSense in pipeline extension for vscode relies on aliases instead. Same problem with pipeline editor provided in web interface, which also uses aliases. Documentation seem to be the only one using input name instead.
Here is an example about DownloadPipelineArtifact, where input names for example are source and path (as in doc) while intellisense and web editor use buildType and targetPath instead from input aliases:

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

ID: b03d67d0-8738-72e6-dbe7-324c1784d4fc
Version Independent ID: bbb4d774-cd98-3ecb-7ccf-5f49e6f2b425
Content: Download Pipeline Artifacts task - Azure Pipelines
Content Source: docs/pipelines/tasks/utility/download-pipeline-artifact.md
Product: devops
Technology: devops-cicd-tasks
GitHub Login: @vijayma
Microsoft Alias: vijayma

@vijayma This suggestion seems to be more general than just the article referenced.

Thanks for letting us know. This issue is fixed in our new task reference, which is generated using the task source code and includes all task inputs, including any aliases.
The YAML block and the task input table all use the intellisense name as the primary name for the input.
https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/download-pipeline-artifact-v2?view=azure-pipelines
Please check it out and let us know what you think. Thank you.


[WIP] Fix clang-tidy.

@hcho3 Sorry for flushing the tests farm,  but I have to see Jenkins in action. :(

Finally closing to complete...  @hcho3 @RAMitchell Here are some status reports:

clang-tidy is not working perfectly.  There's a missing namespace declaration of cub in thrust.  My suggestion is patching thrust with one line using namespace cub.  CUDA 10.0/1 are not tested yet, which might be interesting.

Due to above mentioned problem, some warnings in gpu side appears on my machine doesn't appear on Jenkins.  Two of them are noteworthy,  in updater_gpu, there's memory address raw casting which might create "garbage value" according to clang's term. atomicAdd in gpu_updater_common is not properly handled by clang-tidy but OK with clang ...

I opened a PR in dmlc-core to workaround a clang bug, see https://github.com/dmlc/dmlc-core/pull/513.

As of writing, tidy for unitests code is disabled, will add it back at next commit.  Don't worry, warnings in there are addressed.

GTest is upgraded to 1.8 for clang-tidy to reduce number of unfiltered warnings.

This is rather huge and tedious, so maybe it's a good idea to review it piece at a time ...

@hcho3 Changed sh script for preparing GTest.

@RAMitchell @hcho3 Thanks!


Resources not loaded properly when refreshing after scrolling

Following up on what @Carreau opened on #4. If you scroll down the page and then refresh, you get the following.
Buttons and logo are awkward.

Still the case for me:

Or is it because the fix seem to not have been deployed ?

@Carreau I had not deployed -- I wasn't sure if I should be the one deploying or not. I can right now.

@Carreau I had not deployed -- I wasn't sure if I should be the one deploying or not. I can right now.

I would just make a PR against master. Then once it's merge it will auto close the issue and deploy it to gh-pages.

BTW I see that this repo as both a master and a gh-pages branch, IIUC the second one seem unnecessary as this is an org pages, and not a per-repo page.

I think we will need a second branch to make a pull request against -- I don't think I can make a pull request from landing-page to master because master contains only the contents of the /dist/ folder. I would love to know what you think would be the best way to automate the deployment process, @Carreau.

Hum, if you use jekyll only, then gh-pages would build automatically it before deploying.
If you need to run gulp or something else, you can use Travis-CI that would run only on gh-pages or similar and push back on master if test pass.

I just enabled Travis, we could generate and encrypt an ssh-key then on after_success :
#!/bin/bash

if [[ ( "$TRAVIS_BRANCH" == "gh-pages" ) && ( "$TRAVIS_PULL_REQUEST" == 'false' ) && ( "$TRAVIS_REPO_SLUG" == "nteract/nteract.github.io" ) ]] ;
then
  echo 'deploying site'
  gulp whatever

  # decrypt  credential for github.
  echo 'Decrypting ssh key ...'
  openssl aes-256-cbc -K $encrypted_669152acb59a_key -iv $encrypted_669152acb59a_iv -in .id_rsa.enc -out ~/.shh/id_rsa -d
  git push whatever on master
else
  echo 'Not master, not nteract website repo, or in a pull request: doing nothing.'
fi

But I think you are right that we might have to close issues manually. Unless we have the website on a separate repo.
That what we do for https://github.com/ipython/ipython-website which deploy on https://github.com/ipython/ipython.github.com

@Carreau: I'm a little confused by what this is trying to do. Do we need Travis to build the site? Could we just use a post-recieve hook to compile with gulp?
Also, could we set up SSL on Cloudflare?

just use a post-recieve hook to compile with gulp

No because you can't have a post-receive on github. Unless you achieve to ssh to github and install a post-receive. So you need to build before pushing to github. The master branch have to be the final html version.
Sidenote, github git tree is not stored on a filesystem, it uses in memory DB. so you can't run a post receive hook.
hence you :

push on github on branch B,
travis get triggered, clone the website, build it,
push on branch A,
Branch A is displayed on gh-pages.

Does that make sens ?

OK. So a .travis.yml script needs to be added to the dev branch with the script above?

On Jun 9, 2016, at 3:48 PM, Matthias Bussonnier<EMAIL_ADDRESS>wrote:
just use a post-recieve hook to compile with gulp
No because you can't have a post-receive on github. Unless you achieve to ssh to github and install a post-receive. So you need to build before pushing to github. The master branch have to be the final html version.
Sidenote, github git tree is not stored on a filesystem, it uses in memory DB. so you can't run a post receive hook.
hence you :
push on github on branch B,
travis get triggered, clone the website, build it,
push on branch A,
Branch A is displayed on gh-pages.
Does that make sens ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Probably. You can also (likely) inline the script in the travis.yml, but since @aulneau  made https://github.com/nteract/nteract.github.io/pull/7 that will be even simpler. THe only hard things is to genereate tokens, and encrypt them for travis to be able to push back.


[Task] 添加 TSC 代码检查

Task Description
Briefly describe the goal that this task aims to achieve.
Specific Task Requirements

[x] 添加 TSC 代码检查

Claiming Process
If you would like to claim this task, please reply with “I want to claim this task” in the comments.
Task Remarks
在根目录中添加 npx tsc --noEmit 的检查，并添加到 husky 中的 pre-commit 中，目前遇到的问题就是 tsconfig.json 文件没有配置好：

I want to claim this task


Question about the Position of Lidar Backbone in the Model Architecture

Hi Authors, thanks for your fancy paper and code. I've been reading the forward procedures of BEVFusion. Regarding these lines, it shows that the Lidar backbone SECOND is applied after the fusion module. I wonder that if this is an update from your original design, or that "Lidar Backbone" is actually the "BEV encoder" shown in Fig 2 (the model pipeline) of your paper. Looking forward to your reply.

Thank you for your interest in our project. This repository is no longer actively maintained, so we will be closing this issue. Please refer to the amazing implementation at MMDetection3D. Thank you again!


Enhancement request - provide the ability to choose the artifact name for uploading the results to AzureDevOps

I would like the ability to choose the name of the artifact that the GitLeaks task uses when uploading the results to AzureDevOps.
There are two use cases where this is useful:

When a pipeline is performing multiple gitleaks scans across multiple repos.
When a re-run of a job/stage is performed and the gitleaks task has already uploaded

It's easy to work around by suppressing the upload and taking manual control of uploading with the publish task, but this task offers to do it for me so it would be nice to make use of that functionality.

Hi @daughey I have added a reportartifactname parameter where you can steer the artifact name. Default remains CodeAnalysisLogs and is needed to make use of the 'Scans / SAST' tab.
Together with the report name you can steer everything regarding multiple scans/re-runs


Popups show as previous narrow state in browser history (Drafts, Settings, Streams, Shortcuts)

It is useful to be able to browse and navigate the history to see previous narrows/views.
However, currently this is made confusing since entering and exiting a message view which shows an overlaid popup adds the title of the previous narrow to the history, and has no description of that popup.
For example, if in the topic narrow where this was discussed #design>navigate to search result, toggling into and out of drafts using D twice (DD) leads to two entries being added to the history, as expected. However, all three entries (original+2) have the same title - there is no indication that the drafts menu is one of those history entries.
Similarly if one then enters settings and exits it, then manage-streams and exits, one can be left with a long sequence of what appears to be the same history - yet some correspond to a popup, and some to the narrow previously visible.
After originally only noticing and mentioning this applying to Drafts in the topic linked above, I also found it in other popups as per the issue title, but there may be others.

I'm guessing working on this will require some discussion in the development community, but marking it as "help wanted", since I think starting on it will help frame any open questions.

@zulipbot claim

@zulipbot claim

@zulipbot  abandon

@zulipbot  claim

@zulipbot claim

@zulipbot abandon


Error: Unable to add global "country" as the extensions have already been initialized.

Can someone explain how these class of errors appear? I have absolutely no idea how to keep this form happening. It happens once every so often to someone random in production and I can't figure out why.
How are the extensions being initialized? How can I ensure globals are added before extension initialization? I can't find any documentation on this.
If I need to post code for this explanation, please let me know.

@ChandlerVS Having the exact same problem, would love some feedback on this! Did you find a solution?

@ChandlerVS Having the exact same problem, would love some feedback on this! Did you find a solution?

@ChandlerVS Having the exact same problem, would love some feedback on this! Did you find a solution?

Unfortunately I did not have time to sit around and figure it out. I remove twing from my project and used an engine that Express recommends.

@ChandlerVS Having the exact same problem, would love some feedback on this! Did you find a solution?

Unfortunately I did not have time to sit around and figure it out. I remove twing from my project and used an engine that Express recommends.


Error while get TransformTrack keys in sequencer

I want get all transform keys from all actors in level sequencer
But the Translation,Rotation,Scale keys seems wrong
the value that i get only include x axis,missing y and z
import unreal_engine as ue
from unreal_engine.classes import MovieScene3DTransformTrack

selSeq = ue.get_selected_assets()[0]
rootFolder = selSeq.MovieScene.RootFolders
binding = selSeq.MovieScene.ObjectBindings

for thisBind in binding:
    tracks = thisBind.Tracks
    for track in tracks:
        if track.get_class() == MovieScene3DTransformTrack:
            transSec = track.Sections
            for thisSec in transSec:
                pos = thisSec.Translation
                rot = thisSec.Rotation
                scal = thisSec.Scale
                keys = pos.Keys
                for key in keys:
                    print key.as_dict()

Hi, Rich Curves are aligned as c arrays, so you need to get the Translation field by index:
xCurves = thisSec.get_property('Translation', 0);
yCurves = thisSec.get_property('Translation', 1);
zCurves = thisSec.get_property('Translation', 2);

More infos here:
https://github.com/20tab/UnrealEnginePython/blob/master/examples/curve_generator.py

Hi，I have test in this way ，but I got different returns in different projects:
one of them got follow:
get_property() takes exactly 1 argument (2 given)
Traceback (most recent call last):
File "", line 18, in
TypeError: get_property() takes exactly 1 argument (2 given)
they other runs ok
I just test put an empty actor in a level sequencer add a transform track got different returns

ok,that is a version probblem thx!


ND4j getWhere tests should fail

Issue Description
This test passes:
@Test
public void testGetWhereNumber() {
    INDArray input = Nd4j.create(new double[] { 1, -3, 4, 8, -2, 5 });
    INDArray expected = Nd4j.create(new double[] { 8, 5 });
    INDArray actual = input.getWhere(4, Conditions.greaterThan(6));

    assertEquals(expected, actual);
}

It should fail since 5 < 6.
The "4" seems to be a bit of a magic number. Changing it makes the test fail harder;
@Test
public void testGetWhereNumber() {
    INDArray input = Nd4j.create(new double[] { 1, -3, 4, 8, -2, 5 });
    INDArray expected = Nd4j.create(new double[] { 8, 5 });
    INDArray actual = input.getWhere(0, Conditions.greaterThan(6));

    assertEquals(expected, actual);
}

actual  = [    1.0000,    4.0000,    8.0000,    5.0000], way off.
Version Information
1.0.0-beta4
There is already a ticket open for the issue with Nd4J getWhere.
Lets make this issue about the getWhere unit tests.

It should not. Author of this op/method doesn't use comparator argument at all. Only condition itself. And comparators are 4/0 respectively.


S3 regex

The Regex for the "AllowedPattern" for the parameters "S3ConfigPath" and "WlmSchedulerConfigLocation" don't let you provide a bucket name that contains numbers.
For example:
s3://cf-templates-1ud54sbq8a-eu-west-1/config.json should be a valid value, but it gives the error of parameter constraint as the bucket name contains numbers.

Should be fixed now.


Add disabled props to fieldPicker

Add a new disabled props to fix its bad behavior when being disabled only with CSS changes using the HTML property rule.

@sgg-adraynrion we're redesigning field picker; please see https://github.com/cortezaproject/corteza-webapp-compose/pull/293.

@sgg-adraynrion  thank you for your request. I will review your code and implement it
if it's aligned with our new design for the FieldPicker component.

@sgg-adraynrion disabled props was implemented into redesigned FieldPicker. Thank you for the suggestion.


Skungee server execution effect

Is your feature request related to a problem? Please describe.
Yes, i need to execute commands from my proxy.
Describe the suggestion you'd like
(execute|run) (bungee|proxy) command %string% [in [proxy] server(s) %string%]
Additional context
I want to execute command in both proxy and other connected servers

I also need this for a ranking system using luck perms bungeecord which its commands can only be run through proxy server

We are waiting.

i also need this and thanks for maintaining and updating skungee

If I’m honest I found a second skript addon for bungeecord that does server console stuff, but doesn’t do network variables. So what i did is I have both plugins. Skungee for variables and sending players, the other one does console commands, and looping players so on and so forth

Added in 2.0.0-BETA-21
execute command %strings% on %skungeeservers%


Materialize for Meteor

https://atmospherejs.com/materialize/materialize
The planettraining:material-design-icons-font package utilizes local icon pack instead of fetching from Google servers. Since the internet might be slow on mobile phones, its better to load local icon fonts.
I can see the font files here: /project/.meteor/local/build/programs/web.browser/packages/materialize_materialize/dist/font
How can I utilize these already present font files instead of using Google font CSS link?

Whether it is google's servers or your own server it will still be from the internet. Mobile phones don't come with a local version of the icons.

Can you check this: https://atmospherejs.com/planettraining/material-design-icons ? I installed this package and the CSS pointed to the local font file instead of google server and worked without active internet. I've also checked both Roboto and Material Icons font files are present in the materialize/materialize package but yet we reference it from google servers. Sorry to bother you though.

The icon font we have bundled is not the same. If you want to use the one google provides offline, just download it.