If you run a puppeteer script with docker and the docker was hang. It’s probably because your browser is still running, you might have some exceptions that cause your script never reaches to the line where you close the browser. We need to make sure that these lines below should be always run at the end: //await har.stop(); //if you collect har file await browser.close(); //process.exit(0);Read More →

When you run puppeteer, you can either to run it in headless mode or normal mode, headless is a little bit faster. Which one you should use? In my case , i select them for a few reason: Normal mode: i need to load a chrome extension to do fix the NTLM authentication Headless mode: i use it since, we have a site using certificate authentication, it has a popup. i couldn’t find a way to get rid of that certificate menu. Running in headless mode force Chrome to not authenticate with certificate.Read More →

We upgraded our puppeteer to v97 and had a challenge with one application , the application show this error when i use the latest version. IDX21323: RequireNonce is ‘System.Boolean’. OpenIdConnectProtocolValidationContext.Nonce was null, OpenIdConnectProtocol.ValidatedIdToken.Payload.Nonce was not null. The nonce cannot be validated. If you don’t need to check the nonce, set OpenIdConnectProtocolValidator.RequireNonce to ‘false’. Note if a ‘nonce’ is found it will be evaluated. It turned out Google chrome has a new flag to manage the cookies. it’s the “samesite” flag. I finaly fix by changing our chrome launch parameter, see the change i bold below: const browser = await puppeteer.launch({headless:false,ignoreHTTPSErrors: true,ignoreDefaultArgs: [“–disable-extensions”,”–enable-automation”], args:[‘–no-sandbox’,’load-extension=/config/chrome-ntlm-ext/’, ‘–disable-extensions-except=/config/chrome-ntlm-ext/’, ‘–disable-features=SameSiteByDefaultCookies’,Read More →

I have an old Mac Pro 2010. This machine does not have internet recovery. I replaced the hard drive, so i need a to boot from USB to start the installation. The process seems easily with the documentation from Apple: https://support.apple.com/en-us/HT201372 I followed the documentation, everything looks good no error. But when i press “Option” to select USB disk , my USB is not displayed, i tried with different working Mac OS, none of them show the USB as a bootable device. I finally found https://diskmakerx.com/ , it works perfectly.Read More →

Under each Splunk application there is a folder name d”README” … there are something behind it. It’s common sense that it’s just a documentation folder, it’s not critical, we can get rid of it. oh no, Splunk uses that folder to check the input parameters for your application. If you remove that folder, all your input modular will not work. Splunk does not show any error in the log. There are some files in this folder such as inputs.conf.spec. , Splunk read this file to know which script it should run when splunk starts. It took me 3 days to figure out this. one ofRead More →

When we upgraded to Splunk 8.2, this module is no longer working.Why ? Splunk 8.2 use python3 by default. This add-on is not compatible with python3 . How did we fix it? Logs ? it’s surprising that we don’t see any error in the log. After some research we found that: Splunk allows us to choose the python version by using the option python.version = python2In our case we edit this file /opt/splunk/etc/apps/[our_emc_app_name]/default/inputs.conf as below Restart splunk will fix the issue.Note: Don’t change the python version at server.conf , if you change the version at server.conf , that version will apply to the whole system,Read More →

When we connect to Oracle , beside the host/port , username/password , there is another important parameter is SID or Service_name . I’m not an Oracle expert but i think SID and Service_name , sometimes we are given a name but we are not sure if it’s SID or service_nameThis code below will use it as a SID: In the case below i believe a dns like this was created:dsn=cx_Oracle.makedsn(args.hostname, args.port, sevice_name=args.db_name) The code below will use it as an server_nameRead More →