kandi background
Explore Kits

micro | a modular micro MVC framework for Java web applications | Model View Controller library

 by   florinpatrascu Java Version: Current License: Non-SPDX

 by   florinpatrascu Java Version: Current License: Non-SPDX

Download this library from

kandi X-RAY | micro Summary

micro is a Java library typically used in Architecture, Model View Controller, Bootstrap, Spring, Framework applications. micro has no bugs, it has no vulnerabilities, it has build file available and it has high support. However micro has a Non-SPDX License. You can download it from GitHub.
Micro, for short: (μ) or Mu, is a modular Model View Controller framework (MVC Pull) for rapid web development. Flexible and powerful at the same time, Micro lets you choose your tools from a decently sized pool of well known products:. The easiest way to start developing with Micro is to download the source code from Github. Create a new webapp using the Micro quickstart Maven archetype.
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • micro has a highly active ecosystem.
  • It has 85 star(s) with 1 fork(s). There are 10 watchers for this library.
  • It had no major release in the last 12 months.
  • There are 0 open issues and 8 have been closed. On average issues are closed in 86 days. There are no pull requests.
  • It has a negative sentiment in the developer community.
  • The latest version of micro is current.
micro Support
Best in #Model View Controller
Average in #Model View Controller
micro Support
Best in #Model View Controller
Average in #Model View Controller

quality kandi Quality

  • micro has 0 bugs and 0 code smells.
micro Quality
Best in #Model View Controller
Average in #Model View Controller
micro Quality
Best in #Model View Controller
Average in #Model View Controller

securitySecurity

  • micro has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • micro code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
micro Security
Best in #Model View Controller
Average in #Model View Controller
micro Security
Best in #Model View Controller
Average in #Model View Controller

license License

  • micro has a Non-SPDX License.
  • Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.
micro License
Best in #Model View Controller
Average in #Model View Controller
micro License
Best in #Model View Controller
Average in #Model View Controller

buildReuse

  • micro releases are not available. You will need to build from source code and install.
  • Build file is available. You can build the component from source.
  • Installation instructions are not available. Examples and code snippets are available.
  • micro saves you 4141 person hours of effort in developing the same functionality from scratch.
  • It has 8794 lines of code, 719 functions and 162 files.
  • It has medium code complexity. Code complexity directly impacts maintainability of the code.
micro Reuse
Best in #Model View Controller
Average in #Model View Controller
micro Reuse
Best in #Model View Controller
Average in #Model View Controller
Top functions reviewed by kandi - BETA

kandi has reviewed micro and discovered the below as its top functions. This is intended to give you an instant insight into micro implemented functionality, and help decide if they suit your requirements.

  • Equals two objects .
    • Refresh the properties cache .
      • Requests extension .
        • Entry point for the Jetty server .
          • Find a controller .
            • Configure the classpath .
              • Clean the given path .
                • Adds a template engine .
                  • Escapes the given string .
                    • Retrieves the message from the parent MessageSource .

                      Get all kandi verified functions for this library.

                      Get all kandi verified functions for this library.

                      micro Key Features

                      Velocity, Markdown, Freemarker, Mustache (java), Stringtemplate; for designing the dynamic content of your web pages.

                      Beanshell, server side Javascript(Rhino), JRuby and more; for prototyping controllers before converting them to Java classes, if need be.

                      File/New Project

                      select Create from archetype and click the Add Archetype button

                      choose ca.simplegames.micro:micro-quickstart from the list

                      micro Examples and Code Snippets

                      See all related Code Snippets

                      default

                      copy iconCopydownload iconDownload
                      git clone https://github.com/florinpatrascu/micro
                      

                      Start your web application from command line

                      copy iconCopydownload iconDownload
                      cd myproject
                      mvn compile install exec:java
                      
                      #or: mvn exec:java
                      

                      License

                      copy iconCopydownload iconDownload
                      Copyright (c) 2012-2016 Florin T.Pătraşcu
                      
                      Licensed under the Apache License, Version 2.0 (the "License");
                      you may not use this file except in compliance with the License.
                      You may obtain a copy of the License at
                      
                           http://www.apache.org/licenses/LICENSE-2.0
                      
                      Unless required by applicable law or agreed to in writing, software
                      distributed under the License is distributed on an "AS IS" BASIS,
                      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                      See the License for the specific language governing permissions and
                      limitations under the License.
                      

                      Chromedriver executable path not found in Docker Container

                      copy iconCopydownload iconDownload
                      pip install chromedriver-autoinstaller
                      
                      from selenium import webdriver
                      import chromedriver_autoinstaller
                      
                      
                      chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                                            # and if it doesn't exist, download it automatically,
                                                            # then add chromedriver to path
                      
                      driver = webdriver.Chrome()
                      driver.get("http://www.python.org")
                      assert "Python" in driver.title
                      
                      pip install chromedriver-autoinstaller
                      
                      from selenium import webdriver
                      import chromedriver_autoinstaller
                      
                      
                      chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                                            # and if it doesn't exist, download it automatically,
                                                            # then add chromedriver to path
                      
                      driver = webdriver.Chrome()
                      driver.get("http://www.python.org")
                      assert "Python" in driver.title
                      
                      chrome_options = Options()
                      chrome_options.add_argument("--headless")
                      chrome_options.add_argument('--no-sandbox')
                      chrome_options.add_argument('--disable-dev-shm-usage')
                      
                      driver = webdriver.Chrome(executable_path = "PATH/to/chromedriver", options = chrome_options)
                      
                      FROM python:3.9
                      
                      ADD /app/main.py .
                      ADD /app/connectdriver.py .
                      
                      # Install Chrome WebDriver
                      RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
                          mkdir -p /opt/chromedriver-$CHROMEDRIVER_VERSION && \
                          curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \
                          unzip -qq /tmp/chromedriver_linux64.zip -d /opt/chromedriver-$CHROMEDRIVER_VERSION && \
                          rm /tmp/chromedriver_linux64.zip && \
                          chmod +x /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver && \
                          ln -fs /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver /usr/local/bin/chromedriver
                      
                      # Install Google Chrome
                      RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
                          echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
                          apt-get -yqq update && \
                          apt-get -yqq install google-chrome-stable && \
                          rm -rf /var/lib/apt/lists/*
                      
                      COPY requirements.txt .
                      
                      RUN pip install -r requirements.txt
                      
                      WORKDIR /seleniumtesting
                      
                      COPY ./app ./app
                      
                      
                      CMD ["python","./app/main.py"]
                      
                      driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
                      
                      FROM python:3.9
                      
                      ADD /app/main.py .
                      ADD /app/connectdriver.py .
                      
                      # Install Chrome WebDriver
                      RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
                          mkdir -p /opt/chromedriver-$CHROMEDRIVER_VERSION && \
                          curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \
                          unzip -qq /tmp/chromedriver_linux64.zip -d /opt/chromedriver-$CHROMEDRIVER_VERSION && \
                          rm /tmp/chromedriver_linux64.zip && \
                          chmod +x /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver && \
                          ln -fs /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver /usr/local/bin/chromedriver
                      
                      # Install Google Chrome
                      RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
                          echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
                          apt-get -yqq update && \
                          apt-get -yqq install google-chrome-stable && \
                          rm -rf /var/lib/apt/lists/*
                      
                      COPY requirements.txt .
                      
                      RUN pip install -r requirements.txt
                      
                      WORKDIR /seleniumtesting
                      
                      COPY ./app ./app
                      
                      
                      CMD ["python","./app/main.py"]
                      
                      driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
                      

                      how to use release branch to increment version using setuptools_scm?

                      copy iconCopydownload iconDownload
                      main (main development branch)
                      1.0 (release branch for 1.0)
                      2.0 (development branch for 2.0)
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      $ git tag 
                      v1.0.0
                      $ git checkout main 
                      Already on 'main'
                      $ python -m setuptools_scm
                      1.1.0.dev1+gdaf07ef
                      $ git checkout -b 1.0.1
                      Switched to a new branch '1.0.1'
                      $ python -m setuptools_scm
                      1.0.1.dev1+gdaf07ef
                      
                      setup(
                          use_scm_version={
                              'version_scheme': 'release-branch-semver',
                          },
                      )
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      $ git tag 
                      v1.0.0
                      $ git checkout main 
                      Already on 'main'
                      $ python -m setuptools_scm
                      1.1.0.dev1+gdaf07ef
                      $ git checkout -b 1.0.1
                      Switched to a new branch '1.0.1'
                      $ python -m setuptools_scm
                      1.0.1.dev1+gdaf07ef
                      
                      setup(
                          use_scm_version={
                              'version_scheme': 'release-branch-semver',
                          },
                      )
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      $ git tag 
                      v1.0.0
                      $ git checkout main 
                      Already on 'main'
                      $ python -m setuptools_scm
                      1.1.0.dev1+gdaf07ef
                      $ git checkout -b 1.0.1
                      Switched to a new branch '1.0.1'
                      $ python -m setuptools_scm
                      1.0.1.dev1+gdaf07ef
                      
                      setup(
                          use_scm_version={
                              'version_scheme': 'release-branch-semver',
                          },
                      )
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      
                      # pyproject.toml
                      [build-system]
                      requires = ["setuptools>=45", "setuptools_scm[toml]>=6.2"]
                      
                      [tool.setuptools_scm]
                      version_scheme = "release-branch-semver"
                      
                      python setup.py --version
                      
                      git checkout -b main
                      git checkout -b v0.1.0
                      
                      git checkout -b v0.1
                      
                      # setup.cfg
                      ...
                      
                      [options]
                      setup_requires = setuptools_scm
                      ...
                      
                      [options.extras_require]
                      setup = setuptools_scm
                      
                      pip-compile --extra setup -o setup-requirements.txt
                      
                      pip-sync setup-requirements.txt
                      
                      # content of setup.py
                      
                      def myversion():
                          from setuptools_scm.version import SEMVER_MINOR, guess_next_simple_semver, release_branch_semver_version
                      
                          def my_release_branch_semver_version(version):
                              v = release_branch_semver_version(version)
                              if v == version.format_next_version(guess_next_simple_semver, retain=SEMVER_MINOR):
                                  return version.format_next_version(guess_next_simple_semver, fmt="{guessed}", retain=SEMVER_MINOR)
                              return v
                      
                          return {
                              'version_scheme': my_release_branch_semver_version,
                              'local_scheme': 'no-local-version',
                          }
                      
                      
                      setup(use_scm_version=myversion)
                      

                      (How) Can I run Windows Defender in a docker container? Getting errors

                      copy iconCopydownload iconDownload
                      PS C:\> Start-Service windefend
                      Start-Service : Service 'Microsoft Defender Antivirus Service (windefend)' cannot be started due to the following
                      error: Cannot start service windefend on computer '.'.
                      At line:1 char:1
                      + Start-Service windefend
                      + ~~~~~~~~~~~~~~~~~~~~~~~
                          + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
                         ServiceCommandException
                          + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand
                      
                      PS C:\>
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "Start" -Value 3
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "LaunchProtected" -Value 0
                      
                      PS C:\> Start-Service windefend
                      PS C:\> Get-Service windefend
                      
                      Status   Name               DisplayName
                      ------   ----               -----------
                      Running  windefend          Microsoft Defender Antivirus Service
                      
                      PS C:\> Start-Service windefend
                      Start-Service : Service 'Microsoft Defender Antivirus Service (windefend)' cannot be started due to the following
                      error: Cannot start service windefend on computer '.'.
                      At line:1 char:1
                      + Start-Service windefend
                      + ~~~~~~~~~~~~~~~~~~~~~~~
                          + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
                         ServiceCommandException
                          + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand
                      
                      PS C:\>
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "Start" -Value 3
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "LaunchProtected" -Value 0
                      
                      PS C:\> Start-Service windefend
                      PS C:\> Get-Service windefend
                      
                      Status   Name               DisplayName
                      ------   ----               -----------
                      Running  windefend          Microsoft Defender Antivirus Service
                      
                      PS C:\> Start-Service windefend
                      Start-Service : Service 'Microsoft Defender Antivirus Service (windefend)' cannot be started due to the following
                      error: Cannot start service windefend on computer '.'.
                      At line:1 char:1
                      + Start-Service windefend
                      + ~~~~~~~~~~~~~~~~~~~~~~~
                          + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
                         ServiceCommandException
                          + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand
                      
                      PS C:\>
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "Start" -Value 3
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "LaunchProtected" -Value 0
                      
                      PS C:\> Start-Service windefend
                      PS C:\> Get-Service windefend
                      
                      Status   Name               DisplayName
                      ------   ----               -----------
                      Running  windefend          Microsoft Defender Antivirus Service
                      
                      PS C:\> Start-Service windefend
                      Start-Service : Service 'Microsoft Defender Antivirus Service (windefend)' cannot be started due to the following
                      error: Cannot start service windefend on computer '.'.
                      At line:1 char:1
                      + Start-Service windefend
                      + ~~~~~~~~~~~~~~~~~~~~~~~
                          + CategoryInfo          : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
                         ServiceCommandException
                          + FullyQualifiedErrorId : CouldNotStartService,Microsoft.PowerShell.Commands.StartServiceCommand
                      
                      PS C:\>
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "Start" -Value 3
                      
                      Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\WinDefend\" -Name "LaunchProtected" -Value 0
                      
                      PS C:\> Start-Service windefend
                      PS C:\> Get-Service windefend
                      
                      Status   Name               DisplayName
                      ------   ----               -----------
                      Running  windefend          Microsoft Defender Antivirus Service
                      

                      how to clear oled display in micropython

                      copy iconCopydownload iconDownload
                      oled.fill(0)
                      oled.show()
                      

                      Deadlock on insert/select

                      copy iconCopydownload iconDownload
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                      
                      INSERT INTO [dbo].[ManageServicesRequest] 
                      VALUES (26410821, GETDATE(), 1, GETDATE()), 
                             (26410822, GETDATE(), 1, GETDATE()), 
                             (26410823, GETDATE(), 1, GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChange] 
                      VALUES (26410821, 'X', 'X', GETDATE()), 
                             (26410822, 'X', 'X', GETDATE()), 
                             (26410823, 'X', 'X', GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChangeParameter]  
                      VALUES (26410821, 'X', 'P1','P1', GETDATE()), 
                             (26410823, 'X', 'P1','P1', GETDATE());
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1557580587:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1509580416:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1477580302:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:600  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring S lock on KEY: 7:72057594044940288 (1b148afa48fb) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:608  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (a69d56b089b6) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:632  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045202432 (c37d1982c3c9) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (2ef5265f2b42) (class bit2000000 ref0) result: OK
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                        LEFT HASH JOIN [dbo].[ServiceChangeParameter] AS [SP] ON [SP].[ReferenceTransactionId] = [MR].[ReferenceTransactionId] AND [SP].[ServiceId] = [SC].[ServiceId]
                        WHERE [MR].[ReferenceTransactionId] = @ReferenceTransactionId
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                      
                      INSERT INTO [dbo].[ManageServicesRequest] 
                      VALUES (26410821, GETDATE(), 1, GETDATE()), 
                             (26410822, GETDATE(), 1, GETDATE()), 
                             (26410823, GETDATE(), 1, GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChange] 
                      VALUES (26410821, 'X', 'X', GETDATE()), 
                             (26410822, 'X', 'X', GETDATE()), 
                             (26410823, 'X', 'X', GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChangeParameter]  
                      VALUES (26410821, 'X', 'P1','P1', GETDATE()), 
                             (26410823, 'X', 'P1','P1', GETDATE());
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1557580587:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1509580416:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1477580302:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:600  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring S lock on KEY: 7:72057594044940288 (1b148afa48fb) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:608  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (a69d56b089b6) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:632  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045202432 (c37d1982c3c9) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (2ef5265f2b42) (class bit2000000 ref0) result: OK
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                        LEFT HASH JOIN [dbo].[ServiceChangeParameter] AS [SP] ON [SP].[ReferenceTransactionId] = [MR].[ReferenceTransactionId] AND [SP].[ServiceId] = [SC].[ServiceId]
                        WHERE [MR].[ReferenceTransactionId] = @ReferenceTransactionId
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                      
                      INSERT INTO [dbo].[ManageServicesRequest] 
                      VALUES (26410821, GETDATE(), 1, GETDATE()), 
                             (26410822, GETDATE(), 1, GETDATE()), 
                             (26410823, GETDATE(), 1, GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChange] 
                      VALUES (26410821, 'X', 'X', GETDATE()), 
                             (26410822, 'X', 'X', GETDATE()), 
                             (26410823, 'X', 'X', GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChangeParameter]  
                      VALUES (26410821, 'X', 'P1','P1', GETDATE()), 
                             (26410823, 'X', 'P1','P1', GETDATE());
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1557580587:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1509580416:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1477580302:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:600  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring S lock on KEY: 7:72057594044940288 (1b148afa48fb) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:608  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (a69d56b089b6) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:632  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045202432 (c37d1982c3c9) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (2ef5265f2b42) (class bit2000000 ref0) result: OK
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                        LEFT HASH JOIN [dbo].[ServiceChangeParameter] AS [SP] ON [SP].[ReferenceTransactionId] = [MR].[ReferenceTransactionId] AND [SP].[ServiceId] = [SC].[ServiceId]
                        WHERE [MR].[ReferenceTransactionId] = @ReferenceTransactionId
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                      
                      INSERT INTO [dbo].[ManageServicesRequest] 
                      VALUES (26410821, GETDATE(), 1, GETDATE()), 
                             (26410822, GETDATE(), 1, GETDATE()), 
                             (26410823, GETDATE(), 1, GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChange] 
                      VALUES (26410821, 'X', 'X', GETDATE()), 
                             (26410822, 'X', 'X', GETDATE()), 
                             (26410823, 'X', 'X', GETDATE());
                      
                      INSERT INTO [dbo].[ServiceChangeParameter]  
                      VALUES (26410821, 'X', 'P1','P1', GETDATE()), 
                             (26410823, 'X', 'P1','P1', GETDATE());
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1557580587:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1509580416:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on OBJECT: 7:1477580302:0  (class bit2000000 ref1) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:600  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring S lock on KEY: 7:72057594044940288 (1b148afa48fb) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:608  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (a69d56b089b6) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring IS lock on PAGE: 7:1:632  (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045202432 (c37d1982c3c9) (class bit2000000 ref0) result: OK
                      
                      Process 51 acquiring RangeS-S lock on KEY: 7:72057594045005824 (2ef5265f2b42) (class bit2000000 ref0) result: OK
                      
                      SELECT ...
                      FROM [dbo].[ManageServicesRequest] AS [MR]
                        LEFT JOIN [dbo].[ServiceChange] AS [SC]  ON [SC].[ReferenceTransactionId] = [MR].[ReferenceTransactionId]
                        LEFT HASH JOIN [dbo].[ServiceChangeParameter] AS [SP] ON [SP].[ReferenceTransactionId] = [MR].[ReferenceTransactionId] AND [SP].[ServiceId] = [SC].[ServiceId]
                        WHERE [MR].[ReferenceTransactionId] = @ReferenceTransactionId
                      

                      Assembly why is "lea eax, [eax + eax*const]; shl eax, eax, const;" combined faster than "imul eax, eax, const" according to gcc -O2?

                      copy iconCopydownload iconDownload
                          1049:   8b 15 d9 2f 00 00       mov    edx,DWORD PTR [rip+0x2fd9]        # 4028 <a>
                          104f:   6b d2 24                imul   edx,edx,0x24
                          1052:   89 15 d8 2f 00 00       mov    DWORD PTR [rip+0x2fd8],edx        # 4030 <res>
                          1058:   48 ff c8                dec    rax
                          105b:   75 ec                   jne    1049 <main+0x9>
                      
                          1050:   8b 05 d2 2f 00 00       mov    eax,DWORD PTR [rip+0x2fd2]        # 4028 <a>
                          1056:   8d 04 c0                lea    eax,[rax+rax*8]
                          1059:   c1 e0 02                shl    eax,0x2
                          105c:   89 05 ce 2f 00 00       mov    DWORD PTR [rip+0x2fce],eax        # 4030 <res>
                          1062:   48 83 ea 01             sub    rdx,0x1
                          1066:   75 e8                   jne    1050 <main+0x10>
                      
                      version | instruction | issued-uops | executed-uops | retired-uops | cycles
                      "-Os"   |      5      |      4      |        5      |       4      |  1.00
                      "-O2"   |      6      |      5      |        6      |       5      |  1.25
                      
                       port  |   type      |  "-Os"  |   "-O2"
                      -----------------------------------------
                          0  | ALU/BR      |     0%  |    60%
                          1  | ALU/MUL/LEA |   100%  |    38%
                          2  | LOAD/AGU    |    65%  |    60%
                          3  | LOAD/AGU    |    73%  |    60%
                          4  | STORE       |   100%  |    80%
                          5  | ALU/LEA     |     0%  |    42%
                          6  | ALU/BR      |   100%  |   100%
                          7  | AGU         |    62%  |    40%
                      -----------------------------------------
                       total |             |   500%  |   480%
                      
                          1049:   8b 15 d9 2f 00 00       mov    edx,DWORD PTR [rip+0x2fd9]        # 4028 <a>
                          104f:   6b d2 24                imul   edx,edx,0x24
                          1052:   89 15 d8 2f 00 00       mov    DWORD PTR [rip+0x2fd8],edx        # 4030 <res>
                          1058:   48 ff c8                dec    rax
                          105b:   75 ec                   jne    1049 <main+0x9>
                      
                          1050:   8b 05 d2 2f 00 00       mov    eax,DWORD PTR [rip+0x2fd2]        # 4028 <a>
                          1056:   8d 04 c0                lea    eax,[rax+rax*8]
                          1059:   c1 e0 02                shl    eax,0x2
                          105c:   89 05 ce 2f 00 00       mov    DWORD PTR [rip+0x2fce],eax        # 4030 <res>
                          1062:   48 83 ea 01             sub    rdx,0x1
                          1066:   75 e8                   jne    1050 <main+0x10>
                      
                      version | instruction | issued-uops | executed-uops | retired-uops | cycles
                      "-Os"   |      5      |      4      |        5      |       4      |  1.00
                      "-O2"   |      6      |      5      |        6      |       5      |  1.25
                      
                       port  |   type      |  "-Os"  |   "-O2"
                      -----------------------------------------
                          0  | ALU/BR      |     0%  |    60%
                          1  | ALU/MUL/LEA |   100%  |    38%
                          2  | LOAD/AGU    |    65%  |    60%
                          3  | LOAD/AGU    |    73%  |    60%
                          4  | STORE       |   100%  |    80%
                          5  | ALU/LEA     |     0%  |    42%
                          6  | ALU/BR      |   100%  |   100%
                          7  | AGU         |    62%  |    40%
                      -----------------------------------------
                       total |             |   500%  |   480%
                      
                          1049:   8b 15 d9 2f 00 00       mov    edx,DWORD PTR [rip+0x2fd9]        # 4028 <a>
                          104f:   6b d2 24                imul   edx,edx,0x24
                          1052:   89 15 d8 2f 00 00       mov    DWORD PTR [rip+0x2fd8],edx        # 4030 <res>
                          1058:   48 ff c8                dec    rax
                          105b:   75 ec                   jne    1049 <main+0x9>
                      
                          1050:   8b 05 d2 2f 00 00       mov    eax,DWORD PTR [rip+0x2fd2]        # 4028 <a>
                          1056:   8d 04 c0                lea    eax,[rax+rax*8]
                          1059:   c1 e0 02                shl    eax,0x2
                          105c:   89 05 ce 2f 00 00       mov    DWORD PTR [rip+0x2fce],eax        # 4030 <res>
                          1062:   48 83 ea 01             sub    rdx,0x1
                          1066:   75 e8                   jne    1050 <main+0x10>
                      
                      version | instruction | issued-uops | executed-uops | retired-uops | cycles
                      "-Os"   |      5      |      4      |        5      |       4      |  1.00
                      "-O2"   |      6      |      5      |        6      |       5      |  1.25
                      
                       port  |   type      |  "-Os"  |   "-O2"
                      -----------------------------------------
                          0  | ALU/BR      |     0%  |    60%
                          1  | ALU/MUL/LEA |   100%  |    38%
                          2  | LOAD/AGU    |    65%  |    60%
                          3  | LOAD/AGU    |    73%  |    60%
                          4  | STORE       |   100%  |    80%
                          5  | ALU/LEA     |     0%  |    42%
                          6  | ALU/BR      |   100%  |   100%
                          7  | AGU         |    62%  |    40%
                      -----------------------------------------
                       total |             |   500%  |   480%
                      
                          1049:   8b 15 d9 2f 00 00       mov    edx,DWORD PTR [rip+0x2fd9]        # 4028 <a>
                          104f:   6b d2 24                imul   edx,edx,0x24
                          1052:   89 15 d8 2f 00 00       mov    DWORD PTR [rip+0x2fd8],edx        # 4030 <res>
                          1058:   48 ff c8                dec    rax
                          105b:   75 ec                   jne    1049 <main+0x9>
                      
                          1050:   8b 05 d2 2f 00 00       mov    eax,DWORD PTR [rip+0x2fd2]        # 4028 <a>
                          1056:   8d 04 c0                lea    eax,[rax+rax*8]
                          1059:   c1 e0 02                shl    eax,0x2
                          105c:   89 05 ce 2f 00 00       mov    DWORD PTR [rip+0x2fce],eax        # 4030 <res>
                          1062:   48 83 ea 01             sub    rdx,0x1
                          1066:   75 e8                   jne    1050 <main+0x10>
                      
                      version | instruction | issued-uops | executed-uops | retired-uops | cycles
                      "-Os"   |      5      |      4      |        5      |       4      |  1.00
                      "-O2"   |      6      |      5      |        6      |       5      |  1.25
                      
                       port  |   type      |  "-Os"  |   "-O2"
                      -----------------------------------------
                          0  | ALU/BR      |     0%  |    60%
                          1  | ALU/MUL/LEA |   100%  |    38%
                          2  | LOAD/AGU    |    65%  |    60%
                          3  | LOAD/AGU    |    73%  |    60%
                          4  | STORE       |   100%  |    80%
                          5  | ALU/LEA     |     0%  |    42%
                          6  | ALU/BR      |   100%  |   100%
                          7  | AGU         |    62%  |    40%
                      -----------------------------------------
                       total |             |   500%  |   480%
                      

                      Terraform: How can I pass variables to user_data init script

                      copy iconCopydownload iconDownload
                      #!/bin/bash
                      echo "rds = ${rds}" > /var/tmp/rds
                      

                      Saving best metrics based on Custom metrics failing (WARNING:tensorflow:Can save best model only with CUSTOM METRICS available, skipping)

                      copy iconCopydownload iconDownload
                      history = model.fit(train_data, validation_data=test_data, epochs=N_EPOCHS, callbacks=[m4, checkpoint_cb])
                      

                      Snowflake query pruning by Column

                      copy iconCopydownload iconDownload
                      SELECT col_1, col_2 FROM t1
                      WHERE
                      Date = ‚11/3‘ AND
                      Name = ‚C‘ 
                      

                      Join info about quadkeys to tile shapefile

                      copy iconCopydownload iconDownload
                      require(stars)
                      #> Loading required package: stars
                      #> Loading required package: abind
                      #> Loading required package: sf
                      #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
                      require(ggplot2)
                      #> Loading required package: ggplot2
                      require(tidyverse)
                      #> Loading required package: tidyverse
                      z<-4
                      d<-data.frame(quadkey=apply(as.matrix(expand.grid(0:3,0:3,0:3,0:3)),1, paste0, collapse=''), val=runif(n=(2^z)^2))
                      lons<-slippymath::tilenum_to_lonlat(0:(2^z),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,0:(2^z),z)$lat
                      l<-lapply(strsplit(d$quadkey,''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      m<-matrix(d %>% arrange(x,y) %>% pull(val), ncol=2^z)
                      grd<-st_as_stars(list(m=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap)
                      
                      # now with the data
                      f<-tempfile(fileext = '.zip')
                      download.file('https://data.humdata.org/dataset/76f2a2ea-ba50-40f5-b79c-db95d668b843/resource/bff723a4-6b55-4c51-8790-6176a774e13c/download/relative-wealth-index-april-2021.zip',f)
                      #unzip(f, list=T)
                      d<-read.csv(unz(f,'relative-wealth-index-april-2021/MEX_relative_wealth_index.csv'))
                      z<-14
                      l<-lapply(strsplit(formatC(d$quadkey, width=z, flag='0', digits = z),''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      head(d)
                      #>        quadkey latitude  longitude    rwi error    x    y
                      #> 1 2.331030e+12 18.63583  -97.98706 -0.395 0.495 3732 7328
                      #> 2 2.313220e+12 24.35711 -100.42603 -0.045 0.396 3621 7048
                      #> 3 2.330113e+12 19.46659 -101.37085 -0.239 0.391 3578 7288
                      #> 4 2.331032e+12 17.08829  -97.83325 -0.893 0.513 3739 7402
                      #> 5 2.331030e+12 18.17717  -98.03101  0.053 0.493 3730 7350
                      #> 6 2.331000e+12 21.21770 -100.29419 -0.065 0.450 3627 7203
                      lons<-slippymath::tilenum_to_lonlat(min(d$x):(max(d$x)+1),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,min(d$y):(max(d$y)+1),z)$lat
                      require(raster)
                      #> Loading required package: raster
                      #> Loading required package: sp
                      #> 
                      #> Attaching package: 'raster'
                      #> The following object is masked from 'package:dplyr':
                      #> 
                      #>     select
                      #> The following object is masked from 'package:tidyr':
                      #> 
                      #>     extract
                      m<-(as.matrix(rasterFromXYZ(d[,c('x','y','rwi')])))
                      m<-t(m[nrow(m):1,])
                      grd<-st_as_stars(list(rwi=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      # manipulate the dimensions to fix them
                      dm<-st_dimensions(grd)
                      dm$x$delta<-NA
                      dm$x$offset<-NA
                      ll<-list(start=head(lons,-1), end=tail(lons,-1))
                      class(ll)<-'intervals'
                      dm$x$values<-ll
                      st_dimensions(grd)<-dm
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+coord_sf(xlim=range(lons), ylim=range(lats))
                      
                      s<-st_as_sf(d,coords = c('longitude','latitude'), crs=4326)
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+geom_sf(data=s, aes(fill=rwi), shape=21)+coord_sf(xlim=-100+0:1, ylim=20+0:1)
                      
                      st_as_sf(grd)
                      #> Simple feature collection with 77083 features and 1 field
                      #> Geometry type: POLYGON
                      #> Dimension:     XY
                      #> Bounding box:  xmin: -117.1362 ymin: 14.51978 xmax: -86.7041 ymax: 32.73184
                      #> Geodetic CRS:  WGS 84
                      #> First 10 features:
                      #>       rwi                       geometry
                      #> 1   0.458 POLYGON ((-114.7632 32.7318...
                      #> 2   0.642 POLYGON ((-114.7412 32.7318...
                      #> 3   0.048 POLYGON ((-114.7632 32.7133...
                      #> 4   0.437 POLYGON ((-114.7412 32.7133...
                      #> 5  -0.158 POLYGON ((-114.8071 32.6948...
                      #> 6  -0.031 POLYGON ((-114.7852 32.6948...
                      #> 7   0.425 POLYGON ((-114.7632 32.6948...
                      #> 8  -0.070 POLYGON ((-115.5762 32.6763...
                      #> 9  -0.250 POLYGON ((-115.5542 32.6763...
                      #> 10  0.371 POLYGON ((-115.5322 32.6763...
                      
                      require(stars)
                      #> Loading required package: stars
                      #> Loading required package: abind
                      #> Loading required package: sf
                      #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
                      require(ggplot2)
                      #> Loading required package: ggplot2
                      require(tidyverse)
                      #> Loading required package: tidyverse
                      z<-4
                      d<-data.frame(quadkey=apply(as.matrix(expand.grid(0:3,0:3,0:3,0:3)),1, paste0, collapse=''), val=runif(n=(2^z)^2))
                      lons<-slippymath::tilenum_to_lonlat(0:(2^z),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,0:(2^z),z)$lat
                      l<-lapply(strsplit(d$quadkey,''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      m<-matrix(d %>% arrange(x,y) %>% pull(val), ncol=2^z)
                      grd<-st_as_stars(list(m=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap)
                      
                      # now with the data
                      f<-tempfile(fileext = '.zip')
                      download.file('https://data.humdata.org/dataset/76f2a2ea-ba50-40f5-b79c-db95d668b843/resource/bff723a4-6b55-4c51-8790-6176a774e13c/download/relative-wealth-index-april-2021.zip',f)
                      #unzip(f, list=T)
                      d<-read.csv(unz(f,'relative-wealth-index-april-2021/MEX_relative_wealth_index.csv'))
                      z<-14
                      l<-lapply(strsplit(formatC(d$quadkey, width=z, flag='0', digits = z),''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      head(d)
                      #>        quadkey latitude  longitude    rwi error    x    y
                      #> 1 2.331030e+12 18.63583  -97.98706 -0.395 0.495 3732 7328
                      #> 2 2.313220e+12 24.35711 -100.42603 -0.045 0.396 3621 7048
                      #> 3 2.330113e+12 19.46659 -101.37085 -0.239 0.391 3578 7288
                      #> 4 2.331032e+12 17.08829  -97.83325 -0.893 0.513 3739 7402
                      #> 5 2.331030e+12 18.17717  -98.03101  0.053 0.493 3730 7350
                      #> 6 2.331000e+12 21.21770 -100.29419 -0.065 0.450 3627 7203
                      lons<-slippymath::tilenum_to_lonlat(min(d$x):(max(d$x)+1),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,min(d$y):(max(d$y)+1),z)$lat
                      require(raster)
                      #> Loading required package: raster
                      #> Loading required package: sp
                      #> 
                      #> Attaching package: 'raster'
                      #> The following object is masked from 'package:dplyr':
                      #> 
                      #>     select
                      #> The following object is masked from 'package:tidyr':
                      #> 
                      #>     extract
                      m<-(as.matrix(rasterFromXYZ(d[,c('x','y','rwi')])))
                      m<-t(m[nrow(m):1,])
                      grd<-st_as_stars(list(rwi=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      # manipulate the dimensions to fix them
                      dm<-st_dimensions(grd)
                      dm$x$delta<-NA
                      dm$x$offset<-NA
                      ll<-list(start=head(lons,-1), end=tail(lons,-1))
                      class(ll)<-'intervals'
                      dm$x$values<-ll
                      st_dimensions(grd)<-dm
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+coord_sf(xlim=range(lons), ylim=range(lats))
                      
                      s<-st_as_sf(d,coords = c('longitude','latitude'), crs=4326)
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+geom_sf(data=s, aes(fill=rwi), shape=21)+coord_sf(xlim=-100+0:1, ylim=20+0:1)
                      
                      st_as_sf(grd)
                      #> Simple feature collection with 77083 features and 1 field
                      #> Geometry type: POLYGON
                      #> Dimension:     XY
                      #> Bounding box:  xmin: -117.1362 ymin: 14.51978 xmax: -86.7041 ymax: 32.73184
                      #> Geodetic CRS:  WGS 84
                      #> First 10 features:
                      #>       rwi                       geometry
                      #> 1   0.458 POLYGON ((-114.7632 32.7318...
                      #> 2   0.642 POLYGON ((-114.7412 32.7318...
                      #> 3   0.048 POLYGON ((-114.7632 32.7133...
                      #> 4   0.437 POLYGON ((-114.7412 32.7133...
                      #> 5  -0.158 POLYGON ((-114.8071 32.6948...
                      #> 6  -0.031 POLYGON ((-114.7852 32.6948...
                      #> 7   0.425 POLYGON ((-114.7632 32.6948...
                      #> 8  -0.070 POLYGON ((-115.5762 32.6763...
                      #> 9  -0.250 POLYGON ((-115.5542 32.6763...
                      #> 10  0.371 POLYGON ((-115.5322 32.6763...
                      
                      require(stars)
                      #> Loading required package: stars
                      #> Loading required package: abind
                      #> Loading required package: sf
                      #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
                      require(ggplot2)
                      #> Loading required package: ggplot2
                      require(tidyverse)
                      #> Loading required package: tidyverse
                      z<-4
                      d<-data.frame(quadkey=apply(as.matrix(expand.grid(0:3,0:3,0:3,0:3)),1, paste0, collapse=''), val=runif(n=(2^z)^2))
                      lons<-slippymath::tilenum_to_lonlat(0:(2^z),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,0:(2^z),z)$lat
                      l<-lapply(strsplit(d$quadkey,''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      m<-matrix(d %>% arrange(x,y) %>% pull(val), ncol=2^z)
                      grd<-st_as_stars(list(m=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap)
                      
                      # now with the data
                      f<-tempfile(fileext = '.zip')
                      download.file('https://data.humdata.org/dataset/76f2a2ea-ba50-40f5-b79c-db95d668b843/resource/bff723a4-6b55-4c51-8790-6176a774e13c/download/relative-wealth-index-april-2021.zip',f)
                      #unzip(f, list=T)
                      d<-read.csv(unz(f,'relative-wealth-index-april-2021/MEX_relative_wealth_index.csv'))
                      z<-14
                      l<-lapply(strsplit(formatC(d$quadkey, width=z, flag='0', digits = z),''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      head(d)
                      #>        quadkey latitude  longitude    rwi error    x    y
                      #> 1 2.331030e+12 18.63583  -97.98706 -0.395 0.495 3732 7328
                      #> 2 2.313220e+12 24.35711 -100.42603 -0.045 0.396 3621 7048
                      #> 3 2.330113e+12 19.46659 -101.37085 -0.239 0.391 3578 7288
                      #> 4 2.331032e+12 17.08829  -97.83325 -0.893 0.513 3739 7402
                      #> 5 2.331030e+12 18.17717  -98.03101  0.053 0.493 3730 7350
                      #> 6 2.331000e+12 21.21770 -100.29419 -0.065 0.450 3627 7203
                      lons<-slippymath::tilenum_to_lonlat(min(d$x):(max(d$x)+1),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,min(d$y):(max(d$y)+1),z)$lat
                      require(raster)
                      #> Loading required package: raster
                      #> Loading required package: sp
                      #> 
                      #> Attaching package: 'raster'
                      #> The following object is masked from 'package:dplyr':
                      #> 
                      #>     select
                      #> The following object is masked from 'package:tidyr':
                      #> 
                      #>     extract
                      m<-(as.matrix(rasterFromXYZ(d[,c('x','y','rwi')])))
                      m<-t(m[nrow(m):1,])
                      grd<-st_as_stars(list(rwi=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      # manipulate the dimensions to fix them
                      dm<-st_dimensions(grd)
                      dm$x$delta<-NA
                      dm$x$offset<-NA
                      ll<-list(start=head(lons,-1), end=tail(lons,-1))
                      class(ll)<-'intervals'
                      dm$x$values<-ll
                      st_dimensions(grd)<-dm
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+coord_sf(xlim=range(lons), ylim=range(lats))
                      
                      s<-st_as_sf(d,coords = c('longitude','latitude'), crs=4326)
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+geom_sf(data=s, aes(fill=rwi), shape=21)+coord_sf(xlim=-100+0:1, ylim=20+0:1)
                      
                      st_as_sf(grd)
                      #> Simple feature collection with 77083 features and 1 field
                      #> Geometry type: POLYGON
                      #> Dimension:     XY
                      #> Bounding box:  xmin: -117.1362 ymin: 14.51978 xmax: -86.7041 ymax: 32.73184
                      #> Geodetic CRS:  WGS 84
                      #> First 10 features:
                      #>       rwi                       geometry
                      #> 1   0.458 POLYGON ((-114.7632 32.7318...
                      #> 2   0.642 POLYGON ((-114.7412 32.7318...
                      #> 3   0.048 POLYGON ((-114.7632 32.7133...
                      #> 4   0.437 POLYGON ((-114.7412 32.7133...
                      #> 5  -0.158 POLYGON ((-114.8071 32.6948...
                      #> 6  -0.031 POLYGON ((-114.7852 32.6948...
                      #> 7   0.425 POLYGON ((-114.7632 32.6948...
                      #> 8  -0.070 POLYGON ((-115.5762 32.6763...
                      #> 9  -0.250 POLYGON ((-115.5542 32.6763...
                      #> 10  0.371 POLYGON ((-115.5322 32.6763...
                      
                      require(stars)
                      #> Loading required package: stars
                      #> Loading required package: abind
                      #> Loading required package: sf
                      #> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
                      require(ggplot2)
                      #> Loading required package: ggplot2
                      require(tidyverse)
                      #> Loading required package: tidyverse
                      z<-4
                      d<-data.frame(quadkey=apply(as.matrix(expand.grid(0:3,0:3,0:3,0:3)),1, paste0, collapse=''), val=runif(n=(2^z)^2))
                      lons<-slippymath::tilenum_to_lonlat(0:(2^z),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,0:(2^z),z)$lat
                      l<-lapply(strsplit(d$quadkey,''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      m<-matrix(d %>% arrange(x,y) %>% pull(val), ncol=2^z)
                      grd<-st_as_stars(list(m=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap)
                      
                      # now with the data
                      f<-tempfile(fileext = '.zip')
                      download.file('https://data.humdata.org/dataset/76f2a2ea-ba50-40f5-b79c-db95d668b843/resource/bff723a4-6b55-4c51-8790-6176a774e13c/download/relative-wealth-index-april-2021.zip',f)
                      #unzip(f, list=T)
                      d<-read.csv(unz(f,'relative-wealth-index-april-2021/MEX_relative_wealth_index.csv'))
                      z<-14
                      l<-lapply(strsplit(formatC(d$quadkey, width=z, flag='0', digits = z),''), as.numeric)
                      d$x<-unlist(lapply(lapply(lapply(l,'%%',2), '*',2^((z-1):0) ), sum))
                      d$y<-unlist(lapply(lapply(lapply(l,'%/%',2), '*',2^((z-1):0) ), sum))
                      head(d)
                      #>        quadkey latitude  longitude    rwi error    x    y
                      #> 1 2.331030e+12 18.63583  -97.98706 -0.395 0.495 3732 7328
                      #> 2 2.313220e+12 24.35711 -100.42603 -0.045 0.396 3621 7048
                      #> 3 2.330113e+12 19.46659 -101.37085 -0.239 0.391 3578 7288
                      #> 4 2.331032e+12 17.08829  -97.83325 -0.893 0.513 3739 7402
                      #> 5 2.331030e+12 18.17717  -98.03101  0.053 0.493 3730 7350
                      #> 6 2.331000e+12 21.21770 -100.29419 -0.065 0.450 3627 7203
                      lons<-slippymath::tilenum_to_lonlat(min(d$x):(max(d$x)+1),1,z)$lon
                      lats<-slippymath::tilenum_to_lonlat(1,min(d$y):(max(d$y)+1),z)$lat
                      require(raster)
                      #> Loading required package: raster
                      #> Loading required package: sp
                      #> 
                      #> Attaching package: 'raster'
                      #> The following object is masked from 'package:dplyr':
                      #> 
                      #>     select
                      #> The following object is masked from 'package:tidyr':
                      #> 
                      #>     extract
                      m<-(as.matrix(rasterFromXYZ(d[,c('x','y','rwi')])))
                      m<-t(m[nrow(m):1,])
                      grd<-st_as_stars(list(rwi=m),dimensions=st_dimensions(x=lons, y=lats))
                      st_crs(grd)=4326
                      # manipulate the dimensions to fix them
                      dm<-st_dimensions(grd)
                      dm$x$delta<-NA
                      dm$x$offset<-NA
                      ll<-list(start=head(lons,-1), end=tail(lons,-1))
                      class(ll)<-'intervals'
                      dm$x$values<-ll
                      st_dimensions(grd)<-dm
                      worldMap = rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+coord_sf(xlim=range(lons), ylim=range(lats))
                      
                      s<-st_as_sf(d,coords = c('longitude','latitude'), crs=4326)
                      ggplot()+geom_stars(data=grd)+geom_sf(data=worldMap, fill=NA)+geom_sf(data=s, aes(fill=rwi), shape=21)+coord_sf(xlim=-100+0:1, ylim=20+0:1)
                      
                      st_as_sf(grd)
                      #> Simple feature collection with 77083 features and 1 field
                      #> Geometry type: POLYGON
                      #> Dimension:     XY
                      #> Bounding box:  xmin: -117.1362 ymin: 14.51978 xmax: -86.7041 ymax: 32.73184
                      #> Geodetic CRS:  WGS 84
                      #> First 10 features:
                      #>       rwi                       geometry
                      #> 1   0.458 POLYGON ((-114.7632 32.7318...
                      #> 2   0.642 POLYGON ((-114.7412 32.7318...
                      #> 3   0.048 POLYGON ((-114.7632 32.7133...
                      #> 4   0.437 POLYGON ((-114.7412 32.7133...
                      #> 5  -0.158 POLYGON ((-114.8071 32.6948...
                      #> 6  -0.031 POLYGON ((-114.7852 32.6948...
                      #> 7   0.425 POLYGON ((-114.7632 32.6948...
                      #> 8  -0.070 POLYGON ((-115.5762 32.6763...
                      #> 9  -0.250 POLYGON ((-115.5542 32.6763...
                      #> 10  0.371 POLYGON ((-115.5322 32.6763...
                      

                      See all related Code Snippets

                      Community Discussions

                      Trending Discussions on micro
                      • Chromedriver executable path not found in Docker Container
                      • how to use release branch to increment version using setuptools_scm?
                      • (How) Can I run Windows Defender in a docker container? Getting errors
                      • How to throttle my cron worker form pushing messages to RabbitMQ?
                      • how to clear oled display in micropython
                      • Deadlock on insert/select
                      • Can AWS Lambda function call an endpoint over a VPN?
                      • Add a tool button dynamically with Visual Studio extensions
                      • GEMM kernel implemented using AVX2 is faster than AVX2/FMA on a Zen 2 CPU
                      • Assembly why is &quot;lea eax, [eax + eax*const]; shl eax, eax, const;&quot; combined faster than &quot;imul eax, eax, const&quot; according to gcc -O2?
                      Trending Discussions on micro

                      QUESTION

                      Chromedriver executable path not found in Docker Container

                      Asked 2022-Mar-17 at 15:57

                      I have created a docker image with the Docker file below. It installs the latest versions of Google Chrome and the chrome driver. As well as the other pip packages.

                      Dockerfile

                      FROM python:3.9
                      
                      # Install Chrome WebDriver
                      RUN CHROMEDRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE` && \
                          mkdir -p /opt/chromedriver-$CHROMEDRIVER_VERSION && \
                          curl -sS -o /tmp/chromedriver_linux64.zip http://chromedriver.storage.googleapis.com/$CHROMEDRIVER_VERSION/chromedriver_linux64.zip && \
                          unzip -qq /tmp/chromedriver_linux64.zip -d /opt/chromedriver-$CHROMEDRIVER_VERSION && \
                          rm /tmp/chromedriver_linux64.zip && \
                          chmod +x /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver && \
                          ln -fs /opt/chromedriver-$CHROMEDRIVER_VERSION/chromedriver /usr/local/bin/chromedriver
                      
                      # Install Google Chrome
                      RUN curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
                          echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \
                          apt-get -yqq update && \
                          apt-get -yqq install google-chrome-stable && \
                          rm -rf /var/lib/apt/lists/*
                      
                      
                      COPY requirements.txt .
                      
                      RUN pip install -r requirements.txt
                      
                      WORKDIR /seltesting
                      
                      COPY ./app ./app
                      
                      CMD ["python", "./app/main.py"]
                      

                      The chromedriver.exe file is in the container as I have found it in the CLI. It is in this directory '/usr/local/bin/chromedriver'.

                      python code

                      driver = webdriver.Chrome(options=options, executable_path='/usr/local/bin/chromedriver')
                      

                      I am using a venv as I am also using flask to create a micro service that uses the chrome driver. Would that be causing an issue?

                      Any assist would be much appreciated as I have been stuck on this for a long time.

                      ANSWER

                      Answered 2021-Sep-02 at 04:57

                      In Python-Selenium I wouldn't pass the chromedriver path, instead I will use auto installer, so that it won't fail in such cases.

                      chromedriver-autoinstaller

                      Automatically download and install chromedriver that supports the currently installed version of chrome. This installer supports Linux, MacOS and Windows operating systems.

                      Installation
                      pip install chromedriver-autoinstaller
                      
                      Usage

                      Just type import chromedriver_autoinstaller in the module you want to use chromedriver.

                      Example
                      from selenium import webdriver
                      import chromedriver_autoinstaller
                      
                      
                      chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                                            # and if it doesn't exist, download it automatically,
                                                            # then add chromedriver to path
                      
                      driver = webdriver.Chrome()
                      driver.get("http://www.python.org")
                      assert "Python" in driver.title
                      
                      Conclusion :

                      If you see above, I have not pass any path instead it is just, driver = webdriver.Chrome() preceded by chromedriver_autoinstaller.install(), should help you past the issue.

                      Official Reference link

                      Source https://stackoverflow.com/questions/69024209

                      Community Discussions, Code Snippets contain sources that include Stack Exchange Network

                      Vulnerabilities

                      No vulnerabilities reported

                      Install micro

                      You can download it from GitHub.
                      You can use micro like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the micro component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .

                      Support

                      The documentation is a work in progress and can be found here: micro-docs.simplegames.ca. It is hosted at Heroku, using Micro itself for publishing. You can fork the documentation site and send pull requests. This is the Github repo for the docs: micro-docs. Feedback and contributions to the project, no matter what kind, are always very welcome.

                      DOWNLOAD this Library from

                      Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
                      over 430 million Knowledge Items
                      Find more libraries
                      Reuse Solution Kits and Libraries Curated by Popular Use Cases
                      Explore Kits

                      Save this library and start creating your kit

                      Share this Page

                      share link
                      Consider Popular Model View Controller Libraries
                      Try Top Libraries by florinpatrascu
                      Compare Model View Controller Libraries with Highest Support
                      Compare Model View Controller Libraries with Highest Quality
                      Compare Model View Controller Libraries with Highest Security
                      Compare Model View Controller Libraries with Permissive License
                      Compare Model View Controller Libraries with Highest Reuse
                      Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
                      over 430 million Knowledge Items
                      Find more libraries
                      Reuse Solution Kits and Libraries Curated by Popular Use Cases
                      Explore Kits

                      Save this library and start creating your kit

                      • © 2022 Open Weaver Inc.