# The following comment should be removed at some point in the future. # mypy: strict-optional=False import logging import os import shutil import sys import uuid import zipfile from typing import Any, Dict, Iterable, List, Optional, Sequence, Union from pip._vendor import pkg_resources, six from pip._vendor.packaging.markers import Marker from pip._vendor.packaging.requirements import Requirement from pip._vendor.packaging.specifiers import SpecifierSet from pip._vendor.packaging.utils import canonicalize_name from pip._vendor.packaging.version import Version from pip._vendor.packaging.version import parse as parse_version from pip._vendor.pep517.wrappers import Pep517HookCaller from pip._vendor.pkg_resources import Distribution from pip._internal.build_env import BuildEnvironment, NoOpBuildEnvironment from pip._internal.exceptions import InstallationError from pip._internal.locations import get_scheme from pip._internal.models.link import Link from pip._internal.operations.build.metadata import generate_metadata from pip._internal.operations.build.metadata_legacy import ( generate_metadata as generate_metadata_legacy, ) from pip._internal.operations.install.editable_legacy import ( install_editable as install_editable_legacy, ) from pip._internal.operations.install.legacy import LegacyInstallFailure from pip._internal.operations.install.legacy import install as install_legacy from pip._internal.operations.install.wheel import install_wheel from pip._internal.pyproject import load_pyproject_toml, make_pyproject_path from pip._internal.req.req_uninstall import UninstallPathSet from pip._internal.utils.deprecation import deprecated from pip._internal.utils.direct_url_helpers import direct_url_from_link from pip._internal.utils.hashes import Hashes from pip._internal.utils.logging import indent_log from pip._internal.utils.misc import ( ask_path_exists, backup_dir, display_path, dist_in_site_packages, dist_in_usersite, get_distribution, hide_url, redact_auth_from_url, ) from pip._internal.utils.packaging import get_metadata from pip._internal.utils.temp_dir import TempDirectory, tempdir_kinds from pip._internal.utils.virtualenv import running_under_virtualenv from pip._internal.vcs import vcs logger = logging.getLogger(__name__) def _get_dist(metadata_directory): # type: (str) -> Distribution """Return a pkg_resources.Distribution for the provided metadata directory. """ dist_dir = metadata_directory.rstrip(os.sep) # Build a PathMetadata object, from path to metadata. :wink: base_dir, dist_dir_name = os.path.split(dist_dir) metadata = pkg_resources.PathMetadata(base_dir, dist_dir) # Determine the correct Distribution object type. if dist_dir.endswith(".egg-info"): dist_cls = pkg_resources.Distribution dist_name = os.path.splitext(dist_dir_name)[0] else: assert dist_dir.endswith(".dist-info") dist_cls = pkg_resources.DistInfoDistribution dist_name = os.path.splitext(dist_dir_name)[0].split("-")[0] return dist_cls( base_dir, project_name=dist_name, metadata=metadata, ) class InstallRequirement: """ Represents something that may be installed later on, may have information about where to fetch the relevant requirement and also contains logic for installing the said requirement. """ def __init__( self, req, # type: Optional[Requirement] comes_from, # type: Optional[Union[str, InstallRequirement]] editable=False, # type: bool link=None, # type: Optional[Link] markers=None, # type: Optional[Marker] use_pep517=None, # type: Optional[bool] isolated=False, # type: bool install_options=None, # type: Optional[List[str]] global_options=None, # type: Optional[List[str]] hash_options=None, # type: Optional[Dict[str, List[str]]] constraint=False, # type: bool extras=(), # type: Iterable[str] user_supplied=False, # type: bool ): # type: (...) -> None assert req is None or isinstance(req, Requirement), req self.req = req self.comes_from = comes_from self.constraint = constraint self.editable = editable self.legacy_install_reason = None # type: Optional[int] # source_dir is the local directory where the linked requirement is # located, or unpacked. In case unpacking is needed, creating and # populating source_dir is done by the RequirementPreparer. Note this # is not necessarily the directory where pyproject.toml or setup.py is # located - that one is obtained via unpacked_source_directory. self.source_dir = None # type: Optional[str] if self.editable: assert link if link.is_file: self.source_dir = os.path.normpath( os.path.abspath(link.file_path) ) if link is None and req and req.url: # PEP 508 URL requirement link = Link(req.url) self.link = self.original_link = link self.original_link_is_in_wheel_cache = False # Path to any downloaded or already-existing package. self.local_file_path = None # type: Optional[str] if self.link and self.link.is_file: self.local_file_path = self.link.file_path if extras: self.extras = extras elif req: self.extras = { pkg_resources.safe_extra(extra) for extra in req.extras } else: self.extras = set() if markers is None and req: markers = req.marker self.markers = markers # This holds the pkg_resources.Distribution object if this requirement # is already available: self.satisfied_by = None # type: Optional[Distribution] # Whether the installation process should try to uninstall an existing # distribution before installing this requirement. self.should_reinstall = False # Temporary build location self._temp_build_dir = None # type: Optional[TempDirectory] # Set to True after successful installation self.install_succeeded = None # type: Optional[bool] # Supplied options self.install_options = install_options if install_options else [] self.global_options = global_options if global_options else [] self.hash_options = hash_options if hash_options else {} # Set to True after successful preparation of this requirement self.prepared = False # User supplied requirement are explicitly requested for installation # by the user via CLI arguments or requirements files, as opposed to, # e.g. dependencies, extras or constraints. self.user_supplied = user_supplied self.isolated = isolated self.build_env = NoOpBuildEnvironment() # type: BuildEnvironment # For PEP 517, the directory where we request the project metadata # gets stored. We need this to pass to build_wheel, so the backend # can ensure that the wheel matches the metadata (see the PEP for # details). self.metadata_directory = None # type: Optional[str] # The static build requirements (from pyproject.toml) self.pyproject_requires = None # type: Optional[List[str]] # Build requirements that we will check are available self.requirements_to_check = [] # type: List[str] # The PEP 517 backend we should use to build the project self.pep517_backend = None # type: Optional[Pep517HookCaller] # Are we using PEP 517 for this requirement? # After pyproject.toml has been loaded, the only valid values are True # and False. Before loading, None is valid (meaning "use the default"). # Setting an explicit value before loading pyproject.toml is supported, # but after loading this flag should be treated as read only. self.use_pep517 = use_pep517 # This requirement needs more preparation before it can be built self.needs_more_preparation = False def __str__(self): # type: () -> str if self.req: s = str(self.req) if self.link: s += ' from {}'.format(redact_auth_from_url(self.link.url)) elif self.link: s = redact_auth_from_url(self.link.url) else: s = '<InstallRequirement>' if self.satisfied_by is not None: s += ' in {}'.format(display_path(self.satisfied_by.location)) if self.comes_from: if isinstance(self.comes_from, str): comes_from = self.comes_from # type: Optional[str] else: comes_from = self.comes_from.from_path() if comes_from: s += f' (from {comes_from})' return s def __repr__(self): # type: () -> str return '<{} object: {} editable={!r}>'.format( self.__class__.__name__, str(self), self.editable) def format_debug(self): # type: () -> str """An un-tested helper for getting state, for debugging. """ attributes = vars(self) names = sorted(attributes) state = ( "{}={!r}".format(attr, attributes[attr]) for attr in sorted(names) ) return '<{name} object: {{{state}}}>'.format( name=self.__class__.__name__, state=", ".join(state), ) # Things that are valid for all kinds of requirements? @property def name(self): # type: () -> Optional[str] if self.req is None: return None return pkg_resources.safe_name(self.req.name) @property def specifier(self): # type: () -> SpecifierSet return self.req.specifier @property def is_pinned(self): # type: () -> bool """Return whether I am pinned to an exact version. For example, some-package==1.2 is pinned; some-package>1.2 is not. """ specifiers = self.specifier return (len(specifiers) == 1 and next(iter(specifiers)).operator in {'==', '==='}) def match_markers(self, extras_requested=None): # type: (Optional[Iterable[str]]) -> bool if not extras_requested: # Provide an extra to safely evaluate the markers # without matching any extra extras_requested = ('',) if self.markers is not None: return any( self.markers.evaluate({'extra': extra}) for extra in extras_requested) else: return True @property def has_hash_options(self): # type: () -> bool """Return whether any known-good hashes are specified as options. These activate --require-hashes mode; hashes specified as part of a URL do not. """ return bool(self.hash_options) def hashes(self, trust_internet=True): # type: (bool) -> Hashes """Return a hash-comparer that considers my option- and URL-based hashes to be known-good. Hashes in URLs--ones embedded in the requirements file, not ones downloaded from an index server--are almost peers with ones from flags. They satisfy --require-hashes (whether it was implicitly or explicitly activated) but do not activate it. md5 and sha224 are not allowed in flags, which should nudge people toward good algos. We always OR all hashes together, even ones from URLs. :param trust_internet: Whether to trust URL-based (#md5=...) hashes downloaded from the internet, as by populate_link() """ good_hashes = self.hash_options.copy() link = self.link if trust_internet else self.original_link if link and link.hash: good_hashes.setdefault(link.hash_name, []).append(link.hash) return Hashes(good_hashes) def from_path(self): # type: () -> Optional[str] """Format a nice indicator to show where this "comes from" """ if self.req is None: return None s = str(self.req) if self.comes_from: if isinstance(self.comes_from, str): comes_from = self.comes_from else: comes_from = self.comes_from.from_path() if comes_from: s += '->' + comes_from return s def ensure_build_location(self, build_dir, autodelete, parallel_builds): # type: (str, bool, bool) -> str assert build_dir is not None if self._temp_build_dir is not None: assert self._temp_build_dir.path return self._temp_build_dir.path if self.req is None: # Some systems have /tmp as a symlink which confuses custom # builds (such as numpy). Thus, we ensure that the real path # is returned. self._temp_build_dir = TempDirectory( kind=tempdir_kinds.REQ_BUILD, globally_managed=True ) return self._temp_build_dir.path # This is the only remaining place where we manually determine the path # for the temporary directory. It is only needed for editables where # it is the value of the --src option. # When parallel builds are enabled, add a UUID to the build directory # name so multiple builds do not interfere with each other. dir_name = canonicalize_name(self.name) # type: str if parallel_builds: dir_name = f"{dir_name}_{uuid.uuid4().hex}" # FIXME: Is there a better place to create the build_dir? (hg and bzr # need this) if not os.path.exists(build_dir): logger.debug('Creating directory %s', build_dir) os.makedirs(build_dir) actual_build_dir = os.path.join(build_dir, dir_name) # `None` indicates that we respect the globally-configured deletion # settings, which is what we actually want when auto-deleting. delete_arg = None if autodelete else False return TempDirectory( path=actual_build_dir, delete=delete_arg, kind=tempdir_kinds.REQ_BUILD, globally_managed=True, ).path def _set_requirement(self): # type: () -> None """Set requirement after generating metadata. """ assert self.req is None assert self.metadata is not None assert self.source_dir is not None # Construct a Requirement object from the generated metadata if isinstance(parse_version(self.metadata["Version"]), Version): op = "==" else: op = "===" self.req = Requirement( "".join([ self.metadata["Name"], op, self.metadata["Version"], ]) ) def warn_on_mismatching_name(self): # type: () -> None metadata_name = canonicalize_name(self.metadata["Name"]) if canonicalize_name(self.req.name) == metadata_name: # Everything is fine. return # If we're here, there's a mismatch. Log a warning about it. logger.warning( 'Generating metadata for package %s ' 'produced metadata for project name %s. Fix your ' '#egg=%s fragments.', self.name, metadata_name, self.name ) self.req = Requirement(metadata_name) def check_if_exists(self, use_user_site): # type: (bool) -> None """Find an installed distribution that satisfies or conflicts with this requirement, and set self.satisfied_by or self.should_reinstall appropriately. """ if self.req is None: return existing_dist = get_distribution(self.req.name) if not existing_dist: return # pkg_resouces may contain a different copy of packaging.version from # pip in if the downstream distributor does a poor job debundling pip. # We avoid existing_dist.parsed_version and let SpecifierSet.contains # parses the version instead. existing_version = existing_dist.version version_compatible = ( existing_version is not None and self.req.specifier.contains(existing_version, prereleases=True) ) if not version_compatible: self.satisfied_by = None if use_user_site: if dist_in_usersite(existing_dist): self.should_reinstall = True elif (running_under_virtualenv() and dist_in_site_packages(existing_dist)): raise InstallationError( "Will not install to the user site because it will " "lack sys.path precedence to {} in {}".format( existing_dist.project_name, existing_dist.location) ) else: self.should_reinstall = True else: if self.editable: self.should_reinstall = True # when installing editables, nothing pre-existing should ever # satisfy self.satisfied_by = None else: self.satisfied_by = existing_dist # Things valid for wheels @property def is_wheel(self): # type: () -> bool if not self.link: return False return self.link.is_wheel # Things valid for sdists @property def unpacked_source_directory(self): # type: () -> str return os.path.join( self.source_dir, self.link and self.link.subdirectory_fragment or '') @property def setup_py_path(self): # type: () -> str assert self.source_dir, f"No source dir for {self}" setup_py = os.path.join(self.unpacked_source_directory, 'setup.py') return setup_py @property def pyproject_toml_path(self): # type: () -> str assert self.source_dir, f"No source dir for {self}" return make_pyproject_path(self.unpacked_source_directory) def load_pyproject_toml(self): # type: () -> None """Load the pyproject.toml file. After calling this routine, all of the attributes related to PEP 517 processing for this requirement have been set. In particular, the use_pep517 attribute can be used to determine whether we should follow the PEP 517 or legacy (setup.py) code path. """ pyproject_toml_data = load_pyproject_toml( self.use_pep517, self.pyproject_toml_path, self.setup_py_path, str(self) ) if pyproject_toml_data is None: self.use_pep517 = False return self.use_pep517 = True requires, backend, check, backend_path = pyproject_toml_data self.requirements_to_check = check self.pyproject_requires = requires self.pep517_backend = Pep517HookCaller( self.unpacked_source_directory, backend, backend_path=backend_path, ) def _generate_metadata(self): # type: () -> str """Invokes metadata generator functions, with the required arguments. """ if not self.use_pep517: assert self.unpacked_source_directory return generate_metadata_legacy( build_env=self.build_env, setup_py_path=self.setup_py_path, source_dir=self.unpacked_source_directory, isolated=self.isolated, details=self.name or f"from {self.link}" ) assert self.pep517_backend is not None return generate_metadata( build_env=self.build_env, backend=self.pep517_backend, ) def prepare_metadata(self): # type: () -> None """Ensure that project metadata is available. Under PEP 517, call the backend hook to prepare the metadata. Under legacy processing, call setup.py egg-info. """ assert self.source_dir with indent_log(): self.metadata_directory = self._generate_metadata() # Act on the newly generated metadata, based on the name and version. if not self.name: self._set_requirement() else: self.warn_on_mismatching_name() self.assert_source_matches_version() @property def metadata(self): # type: () -> Any if not hasattr(self, '_metadata'): self._metadata = get_metadata(self.get_dist()) return self._metadata def get_dist(self): # type: () -> Distribution return _get_dist(self.metadata_directory) def assert_source_matches_version(self): # type: () -> None assert self.source_dir version = self.metadata['version'] if self.req.specifier and version not in self.req.specifier: logger.warning( 'Requested %s, but installing version %s', self, version, ) else: logger.debug( 'Source in %s has version %s, which satisfies requirement %s', display_path(self.source_dir), version, self, ) # For both source distributions and editables def ensure_has_source_dir( self, parent_dir, autodelete=False, parallel_builds=False, ): # type: (str, bool, bool) -> None """Ensure that a source_dir is set. This will create a temporary build dir if the name of the requirement isn't known yet. :param parent_dir: The ideal pip parent_dir for the source_dir. Generally src_dir for editables and build_dir for sdists. :return: self.source_dir """ if self.source_dir is None: self.source_dir = self.ensure_build_location( parent_dir, autodelete=autodelete, parallel_builds=parallel_builds, ) # For editable installations def update_editable(self): # type: () -> None if not self.link: logger.debug( "Cannot update repository at %s; repository location is " "unknown", self.source_dir, ) return assert self.editable assert self.source_dir if self.link.scheme == 'file': # Static paths don't get updated return vcs_backend = vcs.get_backend_for_scheme(self.link.scheme) # Editable requirements are validated in Requirement constructors. # So here, if it's neither a path nor a valid VCS URL, it's a bug. assert vcs_backend, f"Unsupported VCS URL {self.link.url}" hidden_url = hide_url(self.link.url) vcs_backend.obtain(self.source_dir, url=hidden_url) # Top-level Actions def uninstall(self, auto_confirm=False, verbose=False): # type: (bool, bool) -> Optional[UninstallPathSet] """ Uninstall the distribution currently satisfying this requirement. Prompts before removing or modifying files unless ``auto_confirm`` is True. Refuses to delete or modify files outside of ``sys.prefix`` - thus uninstallation within a virtual environment can only modify that virtual environment, even if the virtualenv is linked to global site-packages. """ assert self.req dist = get_distribution(self.req.name) if not dist: logger.warning("Skipping %s as it is not installed.", self.name) return None logger.info('Found existing installation: %s', dist) uninstalled_pathset = UninstallPathSet.from_dist(dist) uninstalled_pathset.remove(auto_confirm, verbose) return uninstalled_pathset def _get_archive_name(self, path, parentdir, rootdir): # type: (str, str, str) -> str def _clean_zip_name(name, prefix): # type: (str, str) -> str assert name.startswith(prefix + os.path.sep), ( f"name {name!r} doesn't start with prefix {prefix!r}" ) name = name[len(prefix) + 1:] name = name.replace(os.path.sep, '/') return name path = os.path.join(parentdir, path) name = _clean_zip_name(path, rootdir) return self.name + '/' + name def archive(self, build_dir): # type: (Optional[str]) -> None """Saves archive to provided build_dir. Used for saving downloaded VCS requirements as part of `pip download`. """ assert self.source_dir if build_dir is None: return create_archive = True archive_name = '{}-{}.zip'.format(self.name, self.metadata["version"]) archive_path = os.path.join(build_dir, archive_name) if os.path.exists(archive_path): response = ask_path_exists( 'The file {} exists. (i)gnore, (w)ipe, ' '(b)ackup, (a)bort '.format( display_path(archive_path)), ('i', 'w', 'b', 'a')) if response == 'i': create_archive = False elif response == 'w': logger.warning('Deleting %s', display_path(archive_path)) os.remove(archive_path) elif response == 'b': dest_file = backup_dir(archive_path) logger.warning( 'Backing up %s to %s', display_path(archive_path), display_path(dest_file), ) shutil.move(archive_path, dest_file) elif response == 'a': sys.exit(-1) if not create_archive: return zip_output = zipfile.ZipFile( archive_path, 'w', zipfile.ZIP_DEFLATED, allowZip64=True, ) with zip_output: dir = os.path.normcase( os.path.abspath(self.unpacked_source_directory) ) for dirpath, dirnames, filenames in os.walk(dir): for dirname in dirnames: dir_arcname = self._get_archive_name( dirname, parentdir=dirpath, rootdir=dir, ) zipdir = zipfile.ZipInfo(dir_arcname + '/') zipdir.external_attr = 0x1ED << 16 # 0o755 zip_output.writestr(zipdir, '') for filename in filenames: file_arcname = self._get_archive_name( filename, parentdir=dirpath, rootdir=dir, ) filename = os.path.join(dirpath, filename) zip_output.write(filename, file_arcname) logger.info('Saved %s', display_path(archive_path)) def install( self, install_options, # type: List[str] global_options=None, # type: Optional[Sequence[str]] root=None, # type: Optional[str] home=None, # type: Optional[str] prefix=None, # type: Optional[str] warn_script_location=True, # type: bool use_user_site=False, # type: bool pycompile=True # type: bool ): # type: (...) -> None scheme = get_scheme( self.name, user=use_user_site, home=home, root=root, isolated=self.isolated, prefix=prefix, ) global_options = global_options if global_options is not None else [] if self.editable: install_editable_legacy( install_options, global_options, prefix=prefix, home=home, use_user_site=use_user_site, name=self.name, setup_py_path=self.setup_py_path, isolated=self.isolated, build_env=self.build_env, unpacked_source_directory=self.unpacked_source_directory, ) self.install_succeeded = True return if self.is_wheel: assert self.local_file_path direct_url = None if self.original_link: direct_url = direct_url_from_link( self.original_link, self.source_dir, self.original_link_is_in_wheel_cache, ) install_wheel( self.name, self.local_file_path, scheme=scheme, req_description=str(self.req), pycompile=pycompile, warn_script_location=warn_script_location, direct_url=direct_url, requested=self.user_supplied, ) self.install_succeeded = True return # TODO: Why don't we do this for editable installs? # Extend the list of global and install options passed on to # the setup.py call with the ones from the requirements file. # Options specified in requirements file override those # specified on the command line, since the last option given # to setup.py is the one that is used. global_options = list(global_options) + self.global_options install_options = list(install_options) + self.install_options try: success = install_legacy( install_options=install_options, global_options=global_options, root=root, home=home, prefix=prefix, use_user_site=use_user_site, pycompile=pycompile, scheme=scheme, setup_py_path=self.setup_py_path, isolated=self.isolated, req_name=self.name, build_env=self.build_env, unpacked_source_directory=self.unpacked_source_directory, req_description=str(self.req), ) except LegacyInstallFailure as exc: self.install_succeeded = False six.reraise(*exc.parent) except Exception: self.install_succeeded = True raise self.install_succeeded = success if success and self.legacy_install_reason == 8368: deprecated( reason=( "{} was installed using the legacy 'setup.py install' " "method, because a wheel could not be built for it.". format(self.name) ), replacement="to fix the wheel build issue reported above", gone_in=None, issue=8368, ) def check_invalid_constraint_type(req): # type: (InstallRequirement) -> str # Check for unsupported forms problem = "" if not req.name: problem = "Unnamed requirements are not allowed as constraints" elif req.editable: problem = "Editable requirements are not allowed as constraints" elif req.extras: problem = "Constraints cannot have extras" if problem: deprecated( reason=( "Constraints are only allowed to take the form of a package " "name and a version specifier. Other forms were originally " "permitted as an accident of the implementation, but were " "undocumented. The new implementation of the resolver no " "longer supports these forms." ), replacement=( "replacing the constraint with a requirement." ), # No plan yet for when the new resolver becomes default gone_in=None, issue=8210 ) return problem


Index
A B C D E F G H I L M N O P R S T U V W X
All Classes|All Packages
All Classes|All Packages
All Classes|All Packages
A
- AbstractBluetoothObject - Class in com.welie.blessed.bluez
-
Base class of all bluetooth wrapper object classes.
- AbstractBluetoothObject(BluezDeviceType, DBusConnection, String) - Constructor for class com.welie.blessed.bluez.AbstractBluetoothObject
- Acquire() - Method in interface org.bluez.HealthChannel1
-
From bluez documentation:
Returns the file descriptor for this data channel. - Acquire() - Method in interface org.bluez.MediaTransport1
-
From bluez documentation:
Acquire transport file descriptor and the MTU for read
and write respectively.
- AcquireNotify(Map<String, Variant<?>>) - Method in interface org.bluez.GattCharacteristic1
-
From bluez documentation:
Acquire file descriptor and MTU for notify. - AcquireWrite(Map<String, Variant<?>>) - Method in interface org.bluez.GattCharacteristic1
-
From bluez documentation:
Acquire file descriptor and MTU for writing. - ADAPTER - com.welie.blessed.bluez.BluezDeviceType
- Adapter1 - Interface in org.bluez
-
File generated - 2018-07-25.
Based on bluez Documentation: adapter-api.txt.
Service: org.bluez
Interface: org.bluez.Adapter1
Object path:
[variable prefix]/{hci0,hci1,...}
Supported properties:
string Address [readonly]
The Bluetooth device address.
string AddressType [readonly]
The Bluetooth Address Type. - adapterOff() - Method in class com.welie.blessed.BluetoothCentral
-
Turn off the Bluetooth adaptor
- adapterOn() - Method in class com.welie.blessed.BluetoothCentral
-
Turn on the Bluetooth adaptor
- addCharacteristic(BluetoothGattCharacteristic) - Method in class com.welie.blessed.BluetoothGattService
-
Add a characteristic to this service.
- addDescriptor(BluetoothGattDescriptor) - Method in class com.welie.blessed.BluetoothGattCharacteristic
-
Adds a descriptor to this characteristic.
- AddtoNowPlaying() - Method in interface org.bluez.MediaItem1
-
From bluez documentation:
Add item to now playing list
- AGENT - com.welie.blessed.bluez.BluezDeviceType
- AGENT_MANAGER - com.welie.blessed.bluez.BluezDeviceType
- Agent1 - Interface in org.bluez
-
File generated - 2018-07-25.
Based on bluez Documentation: agent-api.txt.
Service: unique name
Interface: org.bluez.Agent1
Object path:
freely definable
- Agent1 - Interface in org.bluez.obex
-
File generated - 2018-07-25.
Based on bluez Documentation: obex-agent-api.txt.
Service: unique name
Interface: org.bluez.obex.Agent1
Object path:
freely definable
- AgentManager1 - Interface in org.bluez
-
File generated - 2018-07-25.
Based on bluez Documentation: agent-api.txt.
Service: org.bluez
Interface: org.bluez.AgentManager1
Object path:
/org/bluez
- AgentManager1 - Interface in org.bluez.obex
-
File generated - 2018-07-25.
Based on bluez Documentation: obex-agent-api.txt.
Service: org.bluez.obex
Interface: org.bluez.obex.AgentManager1
Object path:
/org/bluez/obex
- applyXpathExpressionToDocument(String, Node) - Static method in class com.welie.blessed.bluez.XmlHelper
-
Use an Xpath expression on the given node or document.
- Armpit - testapp.TemperatureType
- AuthorizePush(DBusPath) - Method in interface org.bluez.obex.Agent1
-
From bluez documentation:
This method gets called when the service daemon
needs to accept/reject a Bluetooth object push request.
Returns the full path (including the filename) where
the object shall be stored. - AuthorizeService(DBusPath, String) - Method in class com.welie.blessed.bluez.PairingAgent
- AuthorizeService(DBusPath, String) - Method in interface org.bluez.Agent1
-
From bluez documentation:
This method gets called when the service daemon
needs to authorize a connection/service request.
- AUTO - com.welie.blessed.bluez.DiscoveryTransport
-
"auto" - interleaved scan, default value
- autoConnectPeripheral(BluetoothPeripheral, BluetoothPeripheralCallback) - Method in class com.welie.blessed.BluetoothCentral
-
Automatically connect to a peripheral when it is advertising.
- autoConnectPeripheralsBatch(Map<BluetoothPeripheral, BluetoothPeripheralCallback>) - Method in class com.welie.blessed.BluetoothCentral
-
Autoconnect to a batch of peripherals.
All Classes|All Packages


original {% for name, img in result.items() %} {% if name != 'original' %} {{ name }} {% endif %} {% endfor %}
{% endif %}Object detector and collision warning system for autonomous vehicles.
Contrary to popular belief, Lorem Ipsum is not simply random text.  Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
Contrary to popular belief, Lorem Ipsum is not simply random text.  Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
Recognition and classfication of voice for give audio sample.


← Which vaccine sites do people from each CT go near in their day to day life?
"VSite Spread" determines the spread of suggested vaccination sites. Lower spreads prefer placing more vaccination sites at high-visited areas whereas higher spreads prefer placing more sites at a diversity of areas.
Loading...
Read about our data and estimates.


GoOut
It's coming to Make Your Life Easier
Right where you are
From hangouts to dates, and birthdays to aniversaries, we get it all done! Welcome to the expreience of planning a day to a full scale event online!
Comepte With Us
We don't think you'll ever get a Product like Us! But you can try anyway. Looser.
It's here already ! Throw Your Suggestions
Leave your email address.


June 25-28, 2020
Online
Free!
Registration is open for the Portland Online 18xx Convention
Join us for three full days of online 18xx gaming. And this year, you can do it from the comfort of your own home (or anywhere you can get an internet connection).
The general format will be two games of live simultaneous play per day using a Discord Channel. There will be a meeting room for game organization and announcements and game breakout rooms for live audio communication and screen sharing as needed.
The current list of games available to play is available in an online spreadsheet. This is a work in progress which will be updated as we learn more.
We will be utilizing these online gaming platforms (and possibly a couple more – stay tuned):
To register complete this online registration form and we’ll be in touch with more information.
Hope to “see” you all there!
Dave Blanchard


Installation¶
To install energym, follow these steps:
First, it is recommended to create a virtual environment. You can do so by:
$ sudo apt-get install python-virtualenv virtualenv
$ virtualenv env_energym --python=python3.7
$ source env_energym/bin/activate
Then, clone this repository using this command:
$ git clone https://github.com/jajimer/energym.git
Docker container¶
We include a Dockerfile for installing all dependencies and setting up the image for running energym.
Note
If you use Visual Studio Code, by simply opening the root directory and clicking on the pop-up button “Reopen in container“, all the dependencies will be installed automatically and you will be able to run energym in an isolated environment.
Manual installation¶
If you prefer installing energym manually, follow the steps below:
1. Install EnergyPlus 8.6.0¶
Firstly, install EnergyPlus. Currently only version 8.6.0 has been tested, but code may also work with other versions.
Follow the instructions here and
install it for Linux (only Ubuntu is supported). Choose any location
to install the software. Once installed, a folder called
Energyplus-8-6-0
should appear in the selected location.
2. Install BCVTB software¶
Follow the instructions
here for
installing BCVTB software. Another option is to copy the bcvtb
folder from this
repository.
3. Set environment variables¶
Two environment variables must be set: EPLUS_PATH
and
BCVTB_PATH
, with the locations where EnergyPlus and BCVTB are
installed respectively.
4. Install the package¶
Finally, energym can be installed by running this command at the repo root folder:
$ pip install -e .
Extra libraries can be installed by typing pip install -e .[extras]
.
They are intended for running and analysing DRL algorithms over energym,
but they are not a requirement of the package.
And that’s all!


--- layout: post title: What is the difference between --save and --save-dev? - Stack Overflow date: '2019-10-29T17:31:00.001+05:30' author: Sahil Rajput tags: modified_time: '2019-10-29T17:31:47.074+05:30' blogger_id: tag:blogger.com,1999:blog-5250005448924290719.post-1685782565463501483 blogger_orig_url: https://www.jaadujinn.ml/2019/10/what-is-difference-between-save-and.html ---


2nd Judge Blocks Trump Administration ‘Conscience Rule’ for Health Workers
by MARIA DINZEOSAN FRANCISCO (CN) – A federal judge blocked a Trump administration “conscience rule” late Tuesday that would have expanded protections for health care workers with religious objections to certain medical procedures, just two days before it was set to take effect.
Under the rule introduced by the Department of Health and Human Services this past May, hospital workers could refuse to provide medical services that conflict with their religious beliefs, including providing birth control or assisting with procedures like abortion or sterilization.
California, San Francisco, Santa Clara and various health care and advocacy groups sued prevent the rule from being implemented, claiming their failure to comply would jeopardize billions in federal funding.
Since it also requires accommodations for file clerks who schedule surgeries, employees who prepare rooms or sterilize equipment and paramedics who drive patients to hospitals, the plaintiffs claim the rule will burden hospitals and clinics by forcing them to hire more staff, resulting in delayed or inferior care for patients.
The rule expands decades of conscience-based federal statutes designed to protect workers’ religious rights, like the Church Amendment enacted in the 1970s to bar federally funded entities from requiring doctors and nurses with religious objections to perform abortions or sterilizations. In 2004, the Weldon Amendment ensured that health insurance plans that refused to cover abortions would not lose federal funds.
But U.S. District Judge William Alsup said the latest rule broadens protections “beyond what Congress intended and will hamstring the delivery of health care.”
In his ruling, Alsup cited an example raised at a hearing last month by a lawyer for the city of San Francisco suggesting an ambulance driver could actually expel a patient en route to a hospital for an emergency abortion.
“Such harsh treatment would be blessed by the new rule,” Alsup said. “Although this order does not accept all of plaintiffs’ criticisms, this order holds that the new rule conflicts with those statutes in a number of ways and upsets the balance drawn by Congress between protecting conscientious objections versus protecting the uninterrupted effective flow of health care to Americans.”
Alsup said the HHS went too far in promulgating the rule, which none of the current statutes grant it authority to do.
“HHS, of course, has rule-making authority to implement the ACA and Medicare and Medicaid programs as well as the applicable conscience provisions,” Also wrote. “But HHS does not have rule-making authority to change, add to, or subtract from conscience provisions in other statutes such as the Church and Weldon amendments.”
He added, “True, any and all agencies must interpret the statutes under their care. But if their interpretations are wrong, then a court must set them aside. This order also holds that while HHS may interpret the statutes in question, those interpretations may not add to or subtract from what the statutes themselves say. This order further holds that the rule in question does exactly that by adding expansive definitions in conflict with the statutes and imposing draconian financial penalties.”
Alsup thus vacated the rule in its entirety. It was originally set to go into effect on July 22, but the Trump administration agreed to delay it until Nov. 22. Alsup’s ruling follows two weeks after a federal judge in New York struck down the rule in a strongly worded decision that called its necessity into question.
In a statement, San Francisco City Attorney Dennis Herrera called the decision a victory for patients’ rights.
“Discriminatory regulations cannot be allowed to threaten patient health. No one should have to fear being denied critical medical service in their time of need. In particular, this rule targeted women, LGBTQ communities and other vulnerable patients, but it would have put anyone in an emergency situation at risk. We’re not about to let the Trump administration jeopardize public health and safety with this unconscionable rule.”
Copyright © 2019 courthousenews.com


I took a gap year (from my study) to improve myself as a marketer. I currently work at SRXP, the Dutch marketleader in expense software.
As a marketer at SRXP I've got three goals:
So, how to achieve that? Creativity and persistance has gotten us far. At SRXP we belief that the Growth Tribe will nudge us in the right direction to reach our targets.
Check my qualitiesPitching ideas? No problem.
Energized to motivate and energize companions.
Let's get our message across!
Set goals. Prioritize. Crush them!
Curious about me? Don't hesitate to get in touch.
I'll get back to you right away!


Files | |
| file | ntw_collections.c [code] |
| Generic vector methods in C. | |
| file | ntw_crs.c [code] |
| The definitions for the functions declared at ntw_crs.h . | |
| file | ntw_debug.c [code] |
| file | ntw_math.c [code] |
| Definitions of the functions declared at ntw_math.h. | |
| file | ntw_mathp.c [code] |
| file | NTWpagerank.c [code] |
| Calculates the pagerank vector of a web graph saved in an NTWPR_WGFile form. | |
| file | NTWpagerank_serial.c [code] |
| Calculates the pagerank vector of a web graph saved in an NTWPR_WGFile form. | |
| file | ntwpr.c [code] |
| File containing the definitions of the functions declared at ntwpr.h. | |
| file | ntwpr_wg.c [code] |
| File containing the implementations of ntwpr_wg.h. | |
| file | ntwprp.c [code] |
| File containing the definitions of the functions declared at ntwprp.h. | |
| file | WGFcreator.c [code] |
| This script produces a program that can convert web graph files to WGFiles that can be opened with NTWPR_WGF_fopen() and are used by the NTWPR API. | |


| 040:020 Khan | : |
And Allah judges with truth, while those to whom they invoke besides Him, cannot judge anything. Certainly, Allah! He is the All-Hearer, the All-Seer. |
| 040:020 Maulana | : |
And Allah judges with truth. And those whom they call upon besides Him judge naught! Surely Allah is the Hearing, the Seeing. |
| 040:020 Pickthal | : |
Allah judgeth with truth, while those to whom they cry instead of Him judge not at all. Lo! Allah, He is the Hearer, the Seer. |
| 040:020 Rashad | : |
GOD judges equitably, while the idols they implore beside Him cannot judge anything. GOD is the One who is the Hearer, the Seer. |
| 040:020 Sarwar | : |
God judges with Truth but those whom they worship besides God can have no Judgment. God is certainly All-hearing and All-aware. |
| 040:020 Shakir | : |
And Allah judges with the truth; and those whom they call upon besides Him cannot judge aught; surely Allah is the Hearing, the Seeing. |
| 040:020 Sherali | : |
And ALLAH judges with truth, but those upon whom they call beside HIM cannot judge at all. Surely, ALLAH is the All-Hearing, the All-Seeing. |
| 040:020 Yusufali | : |
And Allah will judge with (justice and) Truth: but those whom (men) invoke besides Him, will not (be in a position) to judge at all. Verily it is Allah (alone) Who hears and sees (all things). |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > صفات الله تعالى > البصير Pillars of Islam> Islamic> Oneness of Allah> His Glory's Characteristics> All Seer أركان الإسلام > التوحيد > الشرك والمشركون > تنزيه الله جلّ جلاله عن الشريك Pillars of Islam> Islamic> Polytheism and the Polytheists> Allah's Freedom from Partnership
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


History.txt
- History.txt
- Last modified: Mon Feb 13 07:34:38 +0100 2012
1.1.5 / 2012-02-12
- Fix length/bytesize of parts in 1.9 (7, 14) (Jason Moore)
- Allow CompositeIO objects to be re-read by rewinding, like other IO
objects. (Luke Redpath)
1.1.4 / 2011-11-23
- Non-functional changes in release (switch to Bundler gem tasks)
1.1.3 / 2011-07-25
- More configurable header specification for parts (Gerrit Riessen)
1.1.2 / 2011-05-24
- Fix CRLF file part miscalculation (Johannes Wagener)
- Fix Epilogue CRLF issue (suggestion by Neil Spring)
1.1.1 / 2011-05-13
- GH# 9: Fixed Ruby 1.9.2 StringIO bug (thanks Alex Koppel)
1.1.0 / 2011-01-11
1.0.1 / 2010-04-27
- Doc updates, make gemspec based on more modern Rubygems
1.0 / 2009-02-12
- Many fixes from mlooney, seems to work now. Putting the 0.9 seal of
approval on it.
0.1 / 2008-08-12


Michaelmas AMV Notes
Recall that in \(n\) dimensions, the indices \(i,j\) etc. labelling the components of vectors run from \(1\) to \(n\), e.g. we write \(\underline{v}= (v_1,v_2,\dots,v_n)\).
Einstein spotted that in quantities like \[\begin{aligned} \underline{u}.\underline{v}&= \sum_{i=1}^n u_i v_i \\ \underline{\nabla\mkern-2mu}\mkern 3mu .\underline{u}&= \sum_{i=1}^n \frac{\partial u_i}{\partial x_i}\\ \left((\underline{a}.\underline{x})\underline{x}\right)_i &= \sum_{j=1}^n a_j x_j x_i, \end{aligned}\] the index to be summed appears exactly twice in a term or product of terms, while all other indices appear only once (the reason for this is to do with invariance under rotations, or for those of you studying Special Relativity this year, Lorentz transformations). He suggested dropping the summation sign, with the convention that wherever an index is repeated you sum over it.
So, we write \[\begin{aligned} \underline{u}.\underline{v}&= \sum_i u_i v_i \;=\; u_i v_i\\ \underline{\nabla\mkern-2mu}\mkern 3mu .\underline{u}&= \sum_i \frac{\partial u_i}{\partial x_i} \;=\; \frac{\partial u_i}{\partial x_i}\\ \left((\underline{a}.\underline{x})\underline{x}\right)_i &= a_j x_j x_i. \end{aligned}\]
We call the repeated indices dummy indices, and those that are not repeated are called free indices. The dummy indices can be renamed without changing the expression, i.e. \[a_j x_j x_i = a_k x_k x_i,\] since clearly \[\sum_{j=1}^n a_j x_j x_i = \sum_{k=1}^n a_k x_k x_i = (\underline{a}.\underline{x}) x_i.\] However, the free indices must match on both sides of an equation.
We must also be careful never to repeat an index more than twice in any single term or product of terms in an expression. If we were to write \(a_ix_ix_i\), we can’t tell whether this is supposed to be the component form of \((\underline{a}.\underline{x})x_i\), or of \((\underline{x}. \underline{x})a_i\). So if we want to write \((\underline{u}.\underline{v})^2\) in index notation, we should write \(u_iv_i u_jv_j\) and not \(u_i v_i u_i v_i\).
Although writing an expression like this in index notation can sometimes looks messy, we’ll see shortly that it can be incredibly efficient for calculations.
A very useful object for manipulating expressions in terms of their components, is the Kronecker delta. This is an object with two indices, defined by \[\delta_{ij} \;\equiv\; \left\{ \begin{array}{lc} 1 \quad & i=j \\ 0 \quad & i\ne j \end{array} \right..\]
We can think of the Kronecker delta as the components of the \(n\times n\) identity matrix \(I\), and in fact this was how you first met \(\delta_{ij}\). E.g. for \(n=3\) \[I \;=\; \left( \begin{array}{ccc} 1&0&0 \\ 0&1&0 \\ 0&0&1 \end{array} \right) \quad \quad\Rightarrow \quad I_{ij} = \delta_{ij},\] where \(I_{ij}\) represents the element of \(I\) on the \(i\)th row and \(j\)th column.
The Kronecker delta appears naturally when we take partial derivatives, as we have \[\frac{\partial x_i}{\partial x_j} \;=\; \delta_{ij}\]
If \(\delta_{ij}\) is the 3-dim Kronecker delta, and \(\underline{A} = (A_1, A_2, A_3)\), simplify
\(A_s \delta_{ts}\)
\(\delta_{rs}\delta_{st}\)
\(\delta_{rs} \delta_{sr}\)
Answers:
\[\begin{aligned} A_s \delta_{ts} &= A_1 \delta_{t1} + A_2 \delta_{t2} + A_3 \delta_{t3} \quad (0 \text{ if } t\ne 3 \text{ etc.}) \\ &= A_t \end{aligned}\]
\[\begin{aligned} \delta_{rs}\delta_{st} &= \delta_{r1}\delta_{1t} + \delta_{r2}\delta_{2t} + \delta_{r3}\delta_{3t} \quad (0 \text{ unless } r=3, t=3 \text{ etc.}) \\ &= \delta_{rt} \end{aligned}\]
From these two examples, we can now see the formal rule:
If a \(\delta\) has a dummy index, then delete the \(\delta\) and replace the dummy index in the rest of the expression by the other index on the deleted \(\delta\). E.g. \(A_s \delta_{ts} = A_t\).
\[\begin{aligned} \delta_{rs} \delta_{sr} &= \delta_{rr} \quad \quad(\text{by } (2.)) \\ &= \delta_{11} + \delta_{22} + \delta_{33} \;=\; 3 \end{aligned}\]
If we are working in 3 dimension, there is a another device which is useful for handling expressions involving the vector cross product, such as \(\underline{A}\times (\underline{B}\times \underline{C})\) or \(\underline{\nabla\mkern-2mu}\mkern 3mu \times(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v})\).
Consider \(\underline{C} = \underline{A} \times \underline{B}\). If \(\underline{A} = A_1 \underline{e}_1 + A_2 \underline{e}_2 +A_3 \underline{e}_3\), and \(\underline{B} = B_1 \underline{e}_1 + B_2 \underline{e}_2 + B_3 \underline{e}_3\), then \[\begin{aligned} \underline{C} \;=\; \underline{A} \times \underline{B} &= \left| \begin{array}{ccc} \underline{e}_1 & \underline{e}_2 & \underline{e}_3 \\ A_1 & A_2 & A_3 \\ B_1 & B_2 & B_3 \\ \end{array} \right| \\ &= \underline{e}_1 (A_2 B_3 -A_3 B_2) + \underline{e}_2 (A_3B_1-A_1B_3) + \underline{e}_3 (A_1B_2 - A_2 B_1). \end{aligned}\] The components of \(C\) are then given by \[\begin{aligned} C_1 &= A_2B_3 - A_3 B_2 \\ C_2 &= A_3B_1 - A_1 B_3 \\ C_3 &= A_1B_2 - A_2 B_1. \end{aligned}\]
We can write these equations as a single equation, by introducing \(\epsilon_{ijk}\), a set of numbers labelled by three indices \(i\), \(j\) and \(k\), each of which is equal to 1, 2 or 3.
This symbol is know as the Levi-Civita symbol, \(\epsilon_{ijk}\) and is defined by: \[\begin{aligned} I \quad \quad& \epsilon_{ijk} = \; -\epsilon_{jik} \;=\; - \epsilon_{ikj} \quad \quad\text{(antisymmetric)} \\ II \quad \quad& \epsilon_{123} = \; 1 \end{aligned}\]
These definitions imply the following properties:
\(\epsilon_{ijk} \;=\; - \epsilon_{kji}\) (i.e. also antisymmetric when swapping 1st and 3rd index).
Proof: \[\epsilon_{ijk} = - \epsilon_{jik} = + \epsilon_{jki}=-\epsilon_{kji}\]
\(\epsilon_{ijk} = 0\) if any two indices have the same value.
Proof: e.g. \[\epsilon_{112}=-\epsilon_{112} \; \Rightarrow \; 2 \epsilon_{112} =0 \; \Rightarrow\; \epsilon_{112}=0\]
The only non-zero \(\epsilon_{ijk}\) therefore have \(ijk\) all different (by property 2.), so \((ijk)\) is some permutation of \((123)\).
\(\epsilon_{ijk} = +1\) if \(ijk\) is an even permutation of 123 (“even" = even # swaps)
\(\epsilon_{ijk} = -1\) if \(ijk\) is an odd permutation of 123 (“odd" = odd # swaps)
\(\epsilon_{ijk} = \epsilon_{kij} = \epsilon_{jki}\) (cyclic permutations).
So e.g. \(1= \epsilon_{123}=\epsilon_{312} = \epsilon_{231}\), and \(-1= \epsilon_{132}=\epsilon_{321} = \epsilon_{213}\)
Most importantly, now the vector product \(\underline{C} = \underline{A} \times \underline{B}\) can be written as: \[C_i \;=\; \epsilon_{ijk}A_j B_k.\]
Check: \[\begin{aligned} C_1 &= \epsilon_{1jk}A_j B_k = \sum_{j,k=1}^3 \epsilon_{1jk}A_j B_k \\ & \quad \text{(must have $j,k\ne1$ and $j\ne k$ by property 2.,} \\ & \quad \text{so either $j=2,k=3$ or $j=3,k=2$)} \\ &= \epsilon_{123}A_2 B_3 + \epsilon_{132}A_3 B_2 \\ & \quad \text{ but $\epsilon_{123} = 1$ by $(II)$ above, and $\epsilon_{132}= -1$ by both $(I)$ and $(II)$} \\ &= A_2B_3 - A_3B_2 \end{aligned}\]
I leave it as an exercise for you to check other two components \(C_2\) and \(C_3\).
If we want to write out the vector triple product \(\underline{A} \times (\underline{B} \times \underline{C})\), for example, we’ll need to be able to put these \(\epsilon\)s together. Luckily there is a neat way to do it:
\[\begin{equation} \label{eq:veryusefulformula} \sum_{k=1}^3 \epsilon_{ijk} \epsilon_{klm} \;=\; \delta_{il} \delta_{jm} - \delta_{im} \delta_{jl}. \quad \quad(\dagger) \end{equation}\] Best just to remember this formula!
Check: Let’s first consider the left-hand side (\(LHS\)) or Equation \(\eqref{eq:veryusefulformula}\). \[LHS \text{ of Equation \eqref{eq:veryusefulformula}} \;=\; \epsilon_{ij1}\epsilon_{1lm} + \epsilon_{ij2}\epsilon_{2lm} + \epsilon_{ij3}\epsilon_{3lm} \quad \quad(*)\]
Now \(\epsilon_{ij1}\epsilon_{1lm} = 0\) unless \[\begin{aligned} (i,j) &= (2,3)\text{ or }(3,2) \\ \text{and} \quad (l,m) &= (2,3)\text{ or }(3,2) \\ \Rightarrow \quad \epsilon_{ij1}\epsilon_{1lm} &= \left\{ \begin{array}{c} +1 \quad \text{ if } \quad (l,m) = (i,j) \\ -1 \quad \text{ if } \quad (l,m) = (j,i) \\ \end{array} \right., \end{aligned}\] in which case the second and third terms in (*) will be zero.
A similar argument holds for other terms in (*), \(\epsilon_{ij2}\epsilon_{2lm}\) and \(\epsilon_{ij3}\epsilon_{3lm}\). Therefore the sum in (*) will be zero, except when \[\begin{aligned} i \ne j, l\ne m, \quad (i,j) = (l,m) \quad &\Rightarrow& \quad (*) \;=\; +1\\ i \ne j, l\ne m, \quad (i,j) = (m,l) \quad &\Rightarrow& \quad (*) \;=\; -1. \end{aligned}\]
Let’s now consider the right-hand side (\(RHS\)) of Equation \(\eqref{eq:veryusefulformula}\). \[RHS \text{ of Equation \eqref{eq:veryusefulformula}} \;=\; \delta_{il} \delta_{jm} - \delta_{im} \delta_{jl}\]
We have \(\delta_{il} \delta_{jm} =1\) if \(i=l\) and \(j=m \Leftrightarrow (i,j) = (l,m)\), otherwise this term is zero.
Similarly, \(-\delta_{im} \delta_{jl} = -1\) if \(i=m\) and \(j=l \Leftrightarrow (i,j) = (m,l)\), otherwise this term is zero.
The combination of both terms is zero if either \(i=j\) or \(l=m\).
This implies that \(LHS\) of Equation \(\eqref{eq:veryusefulformula}\) = \(RHS\) of Equation \(\eqref{eq:veryusefulformula}\), and hence the formula holds.
Show that \(\underline{A} \times (\underline{B} \times \underline{C} ) \;=\; \underline{B} (\underline{A}.\underline{C}) - \underline{C}(\underline{A}.\underline{B})\)
To do this using index notation, we should compute the \(i\)th component of \(\underline{A} \times (\underline{B} \times \underline{C} )\). We can write this as \(\left[\underline{A} \times (\underline{B} \times \underline{C} )\right]_i\). Going slowly, this gives \[\begin{aligned} \left[\underline{A} \times (\underline{B} \times \underline{C} )\right]_i &= \epsilon_{ijk}A_j \left( \underline{B} \times \underline{C} \right)_k \quad \quad\quad \quad j,k: \text{ dummy indices}, \; i: \text{ free index, 1,2,3} \\ &= \epsilon_{ijk} A_j \epsilon_{klm} B_l C_m \quad \quad\quad \quad l,m: \text{ more dummy indices} \\ &= (\delta_{il}\delta_{jm} - \delta_{im}\delta_{jl})A_jB_lC_m \quad \quad\quad \quad\text{by useful formula } (\dagger) \\ &= \delta_{il}\delta_{jm} A_jB_lC_m - \delta_{im}\delta_{jl} A_jB_lC_m \\ &= \delta_{il} A_jB_lC_j - \delta_{im} A_jB_jC_m \quad \quad\quad \quad\text{by the rule for } \delta \\ &= A_jB_iC_j - A_jB_jC_i \quad \quad\quad \quad\text{by the rule for } \delta \\ &= B_i(A_jC_j) - C_i(A_jB_j) \\ &= B_i (\underline{A}.\underline{C}) - C_i(\underline{A}.\underline{B}) \\ &= \left[ \underline{B} (\underline{A}.\underline{C}) - \underline{C}(\underline{A}.\underline{B})\right]_i, \end{aligned}\] i.e. \(i\)th component of \(\underline{A} \times (\underline{B} \times \underline{C} ) = i\)th component of \(\underline{B} (\underline{A}.\underline{C}) - \underline{C}(\underline{A}.\underline{B})\). Since this is true for all \(i=1,2,3\) the result follows.
We’ve already seen in example [eg:vectortripleproduct], that index notation can be used to prove the vector triple product identity, \(\underline{A} \times (\underline{B} \times \underline{C} ) \;=\; \underline{B} (\underline{A}.\underline{C}) - \underline{C}(\underline{A}.\underline{B})\).
For many vector calculus calculations we need \(\underline{\nabla\mkern-2mu}\mkern 3mu f\), \(\underline{\nabla\mkern-2mu}\mkern 3mu . \underline{v}\) and \(\underline{\nabla\mkern-2mu}\mkern 3mu \times{\underline{v}}\) in index notation
The \(i\)th component of \(\underline{\nabla\mkern-2mu}\mkern 3mu f\) is simply \[(\underline{\nabla\mkern-2mu}\mkern 3mu f)_i \;=\; \frac{\partial f}{\partial x_i}.\] A common notation used to simplify this further is to write \(\frac{\partial}{\partial x_i} \equiv \partial_i\), so then we can write \[(\underline{\nabla\mkern-2mu}\mkern 3mu f)_i \;=\; \partial_i f.\]
\(\underline{\nabla\mkern-2mu}\mkern 3mu .\underline{v}\) can be thought of simply as \(\underline{A}.\underline{v}\) where \(\underline{A}\) has “components" \(\frac{\partial}{\partial x_i}\): \[\underline{\nabla\mkern-2mu}\mkern 3mu . \underline{v}\;=\; \frac{\partial v_i}{\partial x_i},\] and using the notation from above this can also be written as \[\underline{\nabla\mkern-2mu}\mkern 3mu . \underline{v}\;=\; \partial_i v_i.\]
Similarly, \(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v}\) is like \(\underline{A} \times \underline{v}\). So if \(\underline{u}= \underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v}\), then its \(i\)th component is: \[u_i \;=\; (\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v})_i \;=\; \epsilon_{ijk} \frac{\partial}{\partial x_j} v_k \;=\; \epsilon_{ijk} \frac{\partial v_k}{\partial x_j},\] and using the same notation as above this can also be written as \[u_i \;=\; (\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v})_i \;=\; \epsilon_{ijk} \partial_j v_k.\]
Here are some more examples that show how useful index notation can be for proving identities in vector calculus.
Find the gradient of \(f(\underline{x}) = | \underline{x}|^2\) in \(\mathbb{R}^n\). \[\begin{aligned} f(\underline{x}) &= | \underline{x}|^2 \;=\; \underline{x}.\underline{x}\;=\; x_i x_i \;=\; x_j x_j \\ \Rightarrow\quad \quad(\underline{\nabla\mkern-2mu}\mkern 3mu f)_i &= \frac{\partial}{\partial x_i}(x_j x_j) \quad \quad\text{important not to reuse the dummy index $j$}\\ &= \left(\frac{\partial x_j}{\partial x_i} \right)x_j + x_j \left(\frac{\partial x_j}{\partial x_i} \right)\quad \quad\text{product rule}\\ &= 2 \delta_{ij} x_j \;=\; 2 x_i \;=\; (2\underline{x})_i \\ \Rightarrow\quad \quad\underline{\nabla\mkern-2mu}\mkern 3mu f &= 2 \underline{x} \end{aligned}\]
Find the divergence of \(\underline{v}(\underline{x}) = \underline{x}\) and \(\underline{u}(\underline{x}) = (\underline{a} .\underline{x}) \underline{x}\) in \(\mathbb{R}^3\). \[\begin{aligned} v_i &= x_i \\ \Rightarrow\quad \quad\underline{\nabla\mkern-2mu}\mkern 3mu . \underline{v}&= \frac{\partial x_i}{\partial x_i} \;=\; \delta_{ii} \;=\; 3 \\ \text{While} \quad \quad u_i &= (\underline{a}.\underline{x})x_i \;=\; a_jx_j x_i \\ \Rightarrow\quad \quad\underline{\nabla\mkern-2mu}\mkern 3mu .\underline{u}&= \frac{\partial}{\partial x_i} (a_jx_j x_i) \\ &= a_j \left(\frac{\partial x_j}{\partial x_i} x_i + x_j \frac{\partial x_i}{\partial x_i} \right)\\ &= a_j (\delta_{ij} x_i + x_j \delta_{ii}) \\ &= a_j ( x_j + 3 x_j ) \;=\; 4 a_j x_j \\ &= 4 \: \underline{a} . \underline{x} \end{aligned}\]
Find the curl of \(\underline{v}(\underline{x}) = \underline{x}\) and \(\underline{u}(\underline{x}) = (\underline{a} .\underline{x}) \underline{x}\) in \(\mathbb{R}^3\). \[\begin{aligned} v_i &= x_i \\ \Rightarrow\quad \quad(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v})_i &= \epsilon_{ijk} \frac{\partial}{\partial x_j} x_k \\ &= \epsilon_{ijk} \delta_{jk} \\ &= \epsilon_{ijj} \\ &= \epsilon_{i11} + \epsilon_{i22} +\epsilon_{i33} \\ &= 0 \\ \text{While} \quad \quad u_k &= a_jx_j x_k \;=\; a_lx_l x_k \\ \Rightarrow\quad \quad(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{u})_i &= \epsilon_{ijk} \frac{\partial}{\partial x_j} u_k \\ &= \epsilon_{ijk} \frac{\partial}{\partial x_j} (a_lx_l x_k) \\ &= a_l \epsilon_{ijk} \left(\frac{\partial x_l}{\partial x_j} x_k + x_l \frac{\partial x_k}{\partial x_j} \right)\\ &= a_l \epsilon_{ijk} \left(\delta_{lj} x_k + x_l \delta_{kj} \right)\\ &= a_l \epsilon_{ijk} \delta_{lj} x_k + a_l \epsilon_{ijk} x_l \delta_{kj} \\ &= a_j \epsilon_{ijk} x_k + a_l \epsilon_{ijj} x_l \\ &= \epsilon_{ijk} a_j x_k + 0 \\ &= (\underline{a} \times \underline{x})_i \\ \Rightarrow\quad \quad\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{u}&= \underline{a} \times \underline{x} \end{aligned}\]
Show that \(\underline{\nabla\mkern-2mu}\mkern 3mu . (\underline{\nabla\mkern-2mu}\mkern 3mu \times{\underline{v}}) = 0\), (if \(v_k\) has continuous 2nd partial derivatives). \[\begin{aligned} \underline{\nabla\mkern-2mu}\mkern 3mu .(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v}) &= \frac{\partial}{\partial x_i} (\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v})_i \\ &= \frac{\partial}{\partial x_i} (\epsilon_{ijk} \frac{\partial}{\partial x_j} v_k) \\ &= \epsilon_{ijk} \frac{\partial}{\partial x_i} \frac{\partial}{\partial x_j} v_k \end{aligned}\] Now \(\epsilon_{ijk}\) is anti-symmetric when \(i\) and \(j\) swap, whereas \(\frac{\partial}{\partial x_i} \frac{\partial}{\partial x_j} v_k\) is symmetric, so answer is zero(!).
In more detail: \[\begin{aligned} \underline{\nabla\mkern-2mu}\mkern 3mu .(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v}) &= \epsilon_{ijk} \frac{\partial}{\partial x_i} \frac{\partial}{\partial x_j} v_k \\ &= \epsilon_{jik} \frac{\partial}{\partial x_j} \frac{\partial}{\partial x_i} v_k \quad \quad\text{swapping labelling of dummy indices $i$ and $j$} \\ &= -\epsilon_{ijk} \frac{\partial}{\partial x_j} \frac{\partial}{\partial x_i} v_k \quad \quad\text{anti-symmetric $\epsilon_{ijk}$} \\ &= -\epsilon_{ijk} \frac{\partial}{\partial x_i} \frac{\partial}{\partial x_j} v_k \quad \quad\text{symmetric derivatives, due to continuity} \\ &= - \underline{\nabla\mkern-2mu}\mkern 3mu .(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v}) \\ \Rightarrow\quad \quad\underline{\nabla\mkern-2mu}\mkern 3mu .(\underline{\nabla\mkern-2mu}\mkern 3mu \times\underline{v}) &= 0 \end{aligned}\] Much more elegant (and quicker!) then writing it all out.


Reports
for generated applications via
start.jbpm.org
Total generated applications
Generated applications today
Generation errors
Charts
for generated business applications


Team,
We are very excited about getting a new place to practice
at OFS! However, we still need to take our rugs out of our previous
practice space at 20 Security Drive. We have been given a very short
window of time in which we're allowed to go back in the building to take
them out. That window ends tomorrow, so it's extremely important that
we have them by tonight. We ask that everyone who is available tonight
at 5:30 to be at 20 Security Drive to help out! We need a lot of people
as this isn't a small task!
We are still planning on having a meeting this Saturday at 1 to move
things from the school to OFS, so please make sure you have your forms
in!
Thank you,
The Management Team
This message was sent by the ÜberBots mass email system. If you are receiving this message in error, please email<EMAIL_ADDRESS>If you wish to remove yourself from the list manually, follow the instructions here. If you have other questions or comments, please email the webmaster.
Please do not reply to this message.


Every idea is unique and that's why we craft it as per your requirements
we rules sure that your product stays up 24x7 with us
We understand the sense of urgency whenever our clients need our help.
Qualityis the the central edifice of our service and we make no compromises on it.
When you take a project to task, you can be rest assured that it will be delivered in time.
Get the best service for the money you pay us. We assure to give you the value for money.
We have a talent pool of experienced web designers. Read more..
Get customized website developed in professional way.Read more..
Rank your website number 1 to grab your valuable customers. Read more..
Customized software solutions according to your needs. Read more..
Built Android & iOS Apps for your business to scale your reach. Read more..
Get your branding done right with our professional designers. Read more..


Brit backpacker Grace Millane 'went on BDSM sites and liked to be choked during sex'
Grace Millane used the BDSM dating websites like Whiplr and was on it an hour before she met her alleged killer. She practised choking with her ex-partner it has been revealed at her trial in Auckland, New Zealand
by Matthew Dresch, Stephen D'Antal, https://www.mirror.co.uk/authors/matthew-dresch/British backpacker Grace Millane was on a BDSM website just an hour before she met up with her alleged killer.
The 22-year-old was a member on the fetish dating sites FetLife and Whiplr and used to enjoy being choked by her ex-boyfriend, a court heard.
The traveller's former partner told police that he and Grace used a safe word, such as 'turtle', while practising BDSM.
They also agreed a way for her to tap out if she wanted the rough sex to stop, which he said she did 'maybe one in four times'.
A 27-year-old man is currently on trial for murdering the Brit, although he claims she asked him to choke her and she died by accident.
Grace, according to data retrieved from Whiplr, had been active on the site just an hour before meeting the defendant outside the SkyCity casino in central Auckland, New Zealand, last December.
In his statement read today, her former partner said he and Grace had researched how to practice choking safely.
“When we researched it we knew the word was asphyxiation,” he told police. “Grace and I discussed keeping hands wide and on the side of the neck, never on the front.
 Grace and I used a tapping practice too. If Grace tapped me three times then it would stop.
"Grace would tap out maybe one in four times.
“Grace would be sure to do this and I trusted that anytime it was too much for Grace she would do this. Grace and I were careful to discuss not only the physical but the psychological aspects to practicing BDSM.”
The jury was also read a statement from one of Grace’s friends, who said the 21-year-old “enjoyed her partner to put his hands around her neck”.
“I can’t really remember the exact words used but it was something like that, said in a jokey way as we talked about sex with our partners,” she told New Zealand police.
"Grace referred to enjoying a bit of rough sex sometimes when you’re having one of those nights when you’re really, really attracted to one another or when you were particularly turned on.
"I had the impression that it was normally regular sex but maybe rougher when she was more turned on.”
But opening the defence case, barrister Ron Mansfield told the jury: “All the evidence shows that Miss Millane was a loving, bright, intelligent young woman and she was.
“That is her reputation and that should be her reputation and her memory at the start of this trial and at the conclusion if it.
"The fact that we need to discuss with you what she liked to do in the bedroom should have no impact on her reputation at all.”
But, he said: “It’s important that we are fully informed. It’s not the time for embarrassment or immaturity.
“If this couple engaged in consensual sexual activity which included pressure being applied to her neck with her consent and that went wrong, that is not murder.
“Death through this mechanism may thankfully be rare but it does happen and sadly it happened here.”
Mr Mansfield said the defendant admits Grace died from pressure he placed on her neck but said expert evidence was consistent with his account that it was consensual, not violent.
In a police interview, the trial heard last week, he said he only realised Grace was dead when he found her lying on the floor but admits then cramming her body into a suitcase which he buried in a shallow grave in the woods.
Mr Mansfield said his failure to call for help, disposal of Grace’s body and lies to police were due to panic.
“He may have thought he wouldn’t be believed,” Mr Mansfield told the jury. “But don’t prove him right.”
The trial continues.


After months of hard work, the AlethiCorp team has managed to win the contract with the Larkhill Resettlement Council!
AlethiCorp consultants will provide invaluable assistance in the necessary resettlement of endangered Pan-Eurasian ethnicities, as well as subversive elements.


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/instance.20loop.3F.html ---
I made an instance instance normal_of_compact_t2 [topological_space α] [t2_space α] [compact_space α] : normal_space α
where normal_space
extends t2_space
. Apparently this was a bad idea because Lean now thinks that the way it should try to prove a space is T2 is to use normal_space.to_t2_space
and use this instance to reduce the problem to showing the space is T2 and compact...
Is there a way to work around this kind of issue? Or do I just not get to write the instance normal_of_compact_t2
?
I would have hoped that maybe Lean wouldn't try to solve a goal which is the same as one it was trying to solve higher up in the recursion
Concretely the issue is that there's also another class regular_space
which extends t2_space
, and Lean is unable to see that a regular_space
is T2 because it falls into this loop instead
That would be a relatively expensive check. And of course not sufficient to prevent all loops
Doesn't Lean already have some kind of cache it checks for instances in, so couldn't it insert constraints that are in the process of being solved as "gray" nodes in the cache?
I guess it would still be somewhat expensive
What's the general restriction here? If I have class B which extends class A, I can't write an instance which says that A + something else gives me B?
I'm a little confused because somehow I was under the impression that there were actually lots of instance loops and somehow the class inference engine was able to handle them
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Dark Term: "{{ term }}"
Usage Over Time
{% if timestamp_term %}
Forum:
{% else %}
No usage data found.
No underground forum usage data was found for the selected dark term.
{% endif %}
Clean Term Mapping
{% if kl_term or bert_term %}
Mapping Method:
{% else %}
No clean term mappings found.
No clean term mappings were found for the selected dark term.
{% endif %}


The fun and fantasy of an escape room comes from putting yourself in a situation you only see in movies and television: everyone gets a chance to play MacGyver or Bond, Sherlock or Houdini, whoever is your favorite hero of ontological mysteries.
It's cerebral and physically active entertainment, and apparently an unbelievably lucrative business. And like all games, it reveals a lot about the humans who do it, how we choose to amuse ourselves: what's really fun about simulated peril? Do you want to see how well your work colleagues could defuse a bomb? Would you say yes to an escape room marriage proposal? And how do they stack up against an actual escape?
Let's ponder all of this and more, just follow me into this room... lock clicks behind you
Escape
In the past ten years, escape rooms have popped up all over the world. The first Escape Room was created in Japan in 2007 by SCRAP Entertainment, and was inspired by point-and-click adventure video games. From 2010 onward, they spread through Asia and Europe, with some of the highest concentrations in Budapest, then to Australia, Canada, and the USA. As of September 2017, there were 8,000 venues worldwide. If one hasn't opened up in your city, here's how they work:
Scott Nicholson, a Game Design professor from Ontario, has produced the most comprehensive study to date of escape rooms worldwide, entitled "Peeking Behind the Locked Door", and defines Escape Rooms as "live-action team-based games where players discover clues, solve puzzles, and accomplish tasks in one or more rooms in order to accomplish a specific goal (usually escaping from the room) in a limited amount of time."
Essentially, Escape Rooms are mainstream Live Action Role Playing games (or LARP) – but instead of creating your own costumes, stories, and foam-covered weapons to boff each other with, you're provided a pre-made adventure, often with a distinct narrative and setting. Many escape rooms have been compared to haunted houses and immersive theater installations, but their true roots lie in puzzle and exploration games like Myst.
Approximately half of all escape rooms are set in a specific place and time from 1900 to today, but can also be set in the future or distant past. 36% of escape rooms, according to Nicholson's studies, have no overarching narrative other than "escape the room" or "escape a specific unpleasant place," like a prison, asylum, or a serial killer's basement.
In Russia, you can play a Soviet experience, where you have to destroy all of the incriminating documents in a dissident friend's apartment before the secret police come. In Berlin, you must smuggle messages to take down the Wall.
When escape rooms exploded in popularity in China, writers from both China Daily and the South China Morning Post commented on how young people in Hong Kong were using them to escape the stress of their daily lives, getting the same rush as video gaming but with even more immersion. For those who are exhausted by the chaos of life, escape rooms are an orderly simulation of a world where there are answers, even if they are hidden elaborately throughout the environment.
But it isn't only extreme escapists who want to test their wits in these environments: mommy bloggers say they're great for families, because they force everyone to look away from their phones from a moment and talk to each other; and others say they're a great first date idea. If there's no chemistry, no communication, or your date fails to wow you with their puzzle-solving expertise, you don't have to worry about being actually locked in with them for an hour: according to Nicholson's survey, the door isn't even actually locked in 22% of games.
I'm not locked in here with you, you're locked in here with me
According to MarketWatch's 2015 investigation into the escape room industry, corporate clients make up 50% of the escape room audience.
"Frothing" with your coworkers sounds like something only the trendiest startup offices would allow, or an HR violation – but it's actually terminology borrowed from LARP, that refers to the players' spirited post-game discussions. After an immersive, emergent gaming experience, the excitement that bubbles up and runs over, much like the head of an inexpertly-poured beer, can carry into the work environment and make colleagues communicate more creatively and work more closely as a team.
Plus, some escape rooms offer a full CCTV review for management to assess the experience, which at least anecdotally, has been used to determine natural leadership and potential for promotion.
Unfortunately, reports of a first date going too well caught on an escape room's CCTV were fake, but there are plenty of videos of marriage proposals. Usually these consist of the ring being hidden in the last clue to the room, and when you think about it, escape rooms are the perfect place to pop the question: a completely controlled environment, with everything being video taped, and the door locked. On a Reddit thread asking what are the weirdest things escape room employees have seen, one user witnessed a "Will you go with me to prom?" proposal, and (spoiler alert) she said no.
For those with an incredibly high tolerance for cringe, look no further than Escaping "The Room" with Tommy Wiseau, twenty minutes and forty-four seconds of YouTubers trying desperately to guide this creative genius through a series of puzzles in a recreation of the living room from his cult film The Room.
Breaking out, breaking in, and just generally breaking things
Most of the other horror stories from Reddit consist of people breaking things, so that game operators have to write on specific objects, things like "Do not climb." But of course, as an inquisitive player, you could always interpret that as a clue to definitely climb (and break) their props. Other popular methods of destroying escape rooms include tearing up the floorboards and climbing up into the ceiling tiles, a method of escape actually used by a murder suspect in Las Vegas and caught on camera:
There has also already been at least one documented case of a burglar breaking into an escape room, and calling 911 when he couldn't get out.
For escape rooms of the future, however, proprietors won't have to worry about the property damage that people who try to brute-force or speedrun their way through the puzzles inflict on the environments they've meticulously built, because escape rooms have already been created for Virtual Reality. It's a perfect use case: an immersive experience with endless objects and puzzles to generate, and particularly convincing for the horror genre, as VR zombies are much more disgusting and realistic than human actors.
Much like Alternate Reality Games, escape rooms have become a shrewd marketing tool, with branded experiences appearing for TV series like The Walking Dead and Dr. Who, and to build hype around movies like Rogue One.
Whether they're the future of advertising or will peter out like ARGs is yet to be determined. But if you really want to escape the stresses of your daily life, take out your passive aggression on your work colleagues, or make a smashing proposal, may we suggest a Rage Room instead?


The World Needs Eyes And Ears on Syria
The growing slaughter of innocent civilians by the Syrian regime under Bashar al-Assad — and his brother Maher Assad — is posing quite a challenge for the international community which risks a re-run of the impotence demonstrated during the Balkan crisis. The situation in Syria is different however and opens doors to more creative approaches at intervention. Its time to deploy the high-tech tools of information warfare.
The regime currently operates with impunity because they have almost total control over the information flow out of the country. The ban on foreign journalists entering the country means that apologists for the regime like Reem Haddad — whose perfect english tones and presentation skills maker her one of the scariest individuals I have encountered — control the news agenda. A particularly obnoxious example of her spin can be found here. It doesn’t matter how ludicrous are her statements, anyone interviewing her is left defenseless without hard facts from on the ground.
 Imagine for a moment if high quality — independently verified video — of the military shooting innocent — peaceful demonstrators was being shown on the BBC and CBS every evening. Ms Haddad would have a very hard time spinning her way out of that situation and Russian and Chinese objections to the implementations of appropriate UN resolutions would be very hard to avoid.
The solution to this information drought already exists and it doesn’t even need «Boots on the ground.» Its called a Predator and its a unmanned aerial vehicle (UAV) with very sophisticated video surveillance capabilities. The US deploys predator drones over Afghanistan and Iraq every day for exactly this type of intelligence gathering. Syria’s geographic location — being surrounded by US allies — Turkey, Jordan and Israel — would provide perfect bases for launching such surveillance flights and would provide the short flight times necessary to respond to rapidly developing situations. Deploying predators over Syria would bring much needed balance to the flow of information.
As with all plans there will be objections to this one. Syria will squeal to the UN about breaches of it territorial rights. However, slaughtering your own citizens and gross human rights violations probably doesn’t give you the highest ground in that debate. Syria also has a very effective army and air-force capability — unlike Libya. It also has surface to air defenses so a few drones are probably going to be lost to enemy fire in the campaign. However, the knowledge that — at any minute — your actions on the ground may be subject to high-resolution video surveillance may be threat enough to have the regime think again about its strategy.
In my view the benefits of deploying this capability far outweigh any possible objections. These high-tech «Eyes in the Sky» have all the capability needed to feed real-time high quality video direct from scene and that is exactly what the population of Syria needs right now. Barbarous dictators like the Assad brothers like to operate under the cloak of darkness.
It really is time to turn on the spot-light.


Repairing a Roland Digital Piano
I’ve wanted a digital piano for some time now, and I still occasionally glance over the ‘spares and repairs’ category on eBay in hopes of a cheap deal. Finally, I found one:
The Problem
According to the previous owner, when she bought the piano, it was working fine. Over time it developed a crackle and eventually stopped producing any audio output whatsoever. It does however turn on and the digital stuff appears fine, the screen and buttons were all working.
Opening up the keyboard, I found a problem pretty quickly. Leaky capacitors:
Capacitors
Electrolytic capacitors are composed of a thin sheet of (usually) aluminium bathed in electrolyte. At the factory a dielectric oxide layer is formed on the aluminium by applying a voltage to it and thus creating a capacitor.
Over time the electrolyte in these capacitors dries out, usually causing the capacitance to decrease and the impedance to increase. In some cases, gas build up inside the capacitor and then bursts, leaking electrolyte onto the PCB, which is what has happened here.
The electrolyte is corrosive and as you can see from the photos below, can be quite damaging to the copper traces around it. Nearly all of the capacitors on the main board have leaked and corroded the copper around them, so they all had to be replaced.
The worst offenders were to be found in the audio output stage of the board, directly after the DACs and before the connector for the amplifier. There are two 5V regulators here with electrolytics around them, so I’d imagine the heat from the regulators accelerated the leaking process and caused the worst corrosion.
The repair
I started off removing the faulty capacitors with a soldering iron resulting in a few lifted pads, and soon switched to a hot air station. The electrolyte seems to ‘stick’ the caps to the board so this wasn’t as easy as I had hoped but in the end, I got them all off.
Reading around on electronics forums seems to show that deionised water is the best option for cleaning off the old electrolyte so I brushed the board down with water and alcohol. After removing the solder I ended up with a slightly cleaner board.
Unfortunately, the electrolyte had actually corroded away a number of traces and vias completely, which is almost certainly what caused the original problem. I fixed these traces with mod wires and solder and replaced the lifted pads with solder braid where necessary. I had to remove the -5V regulator to clean up the corrosion beneath it and in the process snapped off a leg. So that has now been replaced with a TO-220 package.
In some places the electrolyte had migrated along the tracks underneath the soldermask. In these cases I tried to scrape off as much soldermask as possible and clean the copper underneath to prevent further corrosion.
I ended up replacing the caps with a variety of caps, mainly because it’s much easier to solder them in (especially where broken traces and mods occurred) and there weren’t any particular space requirements.
It Works!
Turning everything on, the keyboard works fairly well, there is still a slight tone over the notes being played, this is barely noticeable unless the treble is turned up but I will try to diagnose it eventually.
I have been thinking about designing a USB midi board to interface with the keyboard matrix, allowing me to replace all the aging electronics with a single board linux computer, but this is probably some time off.


Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.
Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.
Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.
Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.
Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.
Epcot is a theme park at Walt Disney World Resort featuring exciting attractions, international pavilions, award-winning fireworks and seasonal special events.


Java Pets Callback Sample
This sample illustrates building extended predicates in Java.
Building the Sample
- Make sure amzijni.dll (Windows) or libamzijni.so (Unix) is on your path
(it is in amzi/bin).
- Compile and link pets.pro into pets.xpl
- Use javac to compile the main program, Pets.java and the extended predicate,
AmziPreds.java
If you are going to use extended predicates in a package, then modify your
call to AddPred as follows:
ls.AddPred("prompt", 2, "amzi/test/AmziPreds", "prompt", this);
Note, you must use forward slashes (not periods (.)) to delineate the package
name.
Running the Sample
- Type java Pets to run the program--the prompts are issued by the extended
predicate.
Copyright ©1987-2004 Amzi! inc. All Rights Reserved.
Amzi! is a registered trademark and Logic Server and e-Prolog are trademarks
of Amzi! inc.


Note
Currently, Horizon plugins are responsible for their own compatibility. Check the individual repos for information on support.
| Plugin | URL |
|---|---|
| Akanda RUG Extension | https://github.com/stackforge/akanda-horizon |
| App Catalog UI | https://github.com/openstack/app-catalog-ui |
| Cerberus Dashboard | https://github.com/stackforge/cerberus-dashboard |
| Cisco UI | http://github.com/openstack/horizon-cisco-ui |
| Cloudkitty Dashboard | https://github.com/stackforge/cloudkitty-dashboard |
| Cue Dashboard | https://github.com/openstack/cue-dashboard |
| Designate Dashboard | https://github.com/openstack/designate-dashboard |
| Group Based Policy UI | https://github.com/stackforge/group-based-policy-ui |
| Magnum UI | http://github.com/openstack/magnum-ui |
| Manila UI | http://github.com/openstack/manila-ui |
| Mistral Dashboard | https://github.com/openstack/mistral-dashboard |
| Monasca UI | https://github.com/stackforge/monasca-ui |
| Murano Dashboard | http://github.com/openstack/murano-dashboard |
| Neutron LBaaS Dashboard | https://github.com/openstack/neutron-lbaas-dashboard |
| Tacker UI | https://github.com/stackforge/tacker-horizon |
| Tuskar UI | http://github.com/openstack/tuskar-ui |


Ryan PE teacher by day amateur web developer by night. Father of two, husband of 10 years, sacrificing sleep and sanity to change careers for my family; thank goodness for coffee. Code is a new passion and interest discovered through Code Fellows 101 introduction to web development class. Ryan has been hooked ever sense and excited about this new adventure in life.
Ovi is a current developer in the industry with over 6 years of Mobile development. With a number of published apps, he decided to branch out and learn the wonders of web and server development. Ovi enjoys mobile development very much and will would like to always be a mobile developer, but having experience with multiple languages and platforms better prepares anyone for almost any programming challenge. Aside from programming, Ovi enjoys cars and traveling.
Trevor is a veteran of the United States Army. Originally from Iowa, he is now settled in Washington for the foreseeable future. He hopes to combine Code Fellows with his background in business management to jump-start a career in the tech industry.  He is new to code and it is rapidly replacing his other pursuits. When he is not writing code and hunting bugs he enjoys cooking, writting dystopian sci-fi, homebrewing and related research.


--- layout: post title: Index hints features I was not aware of date: type: post published: false status: draft categories: - MySQL tags: [] meta: _edit_last: '2' author: login: shlomi email<EMAIL_ADDRESS>display_name: shlomi first_name: Shlomi last_name: Noach ---
FOR JOIN
FOR GROUP BY
multiple index hints
USE INDEX () empty -- so disables all indexes


Test File: simple-excel_2007.xlsx
Download Converted XLSX File
Test File: simple-word_2007.docx
Download Converted DOCX File
Test File: simple-powerpoint_2007.pptx
Download Converted PPTX File


If you'd like to be the first to know about shop updates, open studio, events, and Mug Club openings, please join my mailing list! Just occasional updates.
home
about
shop
registry


{% extends 'base.html' %} {% block title %}About{% endblock %} {% block content %}
There are three primary motivations for the creation of this website. Firstly, I wanted a way to keep my full stack engineering skills sharp. This includes the entire stack from the kernel all the way to javascript. It also includes the software engineering process of coming up with requirements, a spec, prioritizing features, to completion and delivery.
Second, I wanted somewhere besides facebook and instagram where I could show off all my trip pictures and express more technological oriented opinions.
Third and most important, I was looking for a fun way to exercise my talent and love for computers! Rule one for me when building this website is that I want to have as much fun with it as possible. Im not going to force any engineering decisions that make working on this website difficult so it becomes "work", eg. no javascript or single page application anymore.
Code is available at: amiller.im-py3.
{% endblock %}


This is a secondary view
Title (appears in system switchers):
Set title
Clear title
Activate this app for a protocol (see Scenario 2)
Switch to main view
Switch to main and hide this view
This view was launched with protocol:


--- layout: page title: "Developing Backbone.js Applications" prev: OEBPS/index.html next: OEBPS/ch01.html book_path: books/developing-backbone-js-applications-addy-osmani--_oeb/ --- {% include JB/setup %} {% raw %}
Welcome to my (in-progress) book about the Backbone.js framework for structuring JavaScript applications. It’s released under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported license meaning you can both grab a copy of the book for free or help to further improve it.
I’m very pleased to announce that this book will be out in physical form in a few months time via O’Reilly Media. Readers will have the option of purchasing the latest version in either print or a number of digital formats then or can grab a recent version from this repository.
Corrections to existing material are always welcome and I hope that together we can provide the community with an up-to-date resource that is of help. My extended thanks go out to Jeremy Ashkenas for creating Backbone.js and these members of the community for their assistance tweaking this project.
I hope you find this book helpful!


KNOCK OFF
Release Date: September 4, 1998 Starring: Jean-Claude Van Damme, Rob Schneider, Lela Rochon, Michael Wong, Paul Sorvino, Glen Chin Directed by: Hark Tsui Distributed by: Sony Pictures Entertainment / TriStar Pictures MPAA Rating: R (continuous violence, brief language) URL: http://www.execpc.com/~kinnopio/reviews/1998/knockoff.htm
If you were to watch all of Jean-Claude Van Damme's movies and assign a value to each of them based on campiness, plotting those points on a graph would reveal a decidedly downward trend. One might think, though, that Van Damme would eventually sign on a good movie, and that the graph would finally bottom out before heading upward again. But, if one thought that, one would be wrong. KNOCK OFF, the latest feature from the infamous martial arts expert, is so void of any redeeming qualities that it becomes questionable as to why it was even made. Even long-time fans of Van Damme's work will be disappointed by this one.
As always, with this sort of feature, the writer/director team attempts to cover up for the lack of substance by creating a plot that's overly complicated and rarely to the point. In KNOCK OFF, Van Damme plays Marcus Ray, a fashion designer working for V-Six Jeans Company in Hong Kong. He, along with his business partner Tommy Hendricks (Rob Schneider), happen upon some local mafioso who are in the business of making knock-off jeans and slipping them into the shipping manifest. There's one catch, though: the knock-off jeans are loaded with the ultra-high-tech nanobombs - tiny devices which contain the explosive power of a half-stick of dynamite but look like buttons. Bring in the Russians (apparently they developed the bombs) and the CIA (they're out to stop the Russians) and you've got a full-scale action movie on your hands.
That's about the one thing that works for KNOCK OFF: the action. Unfortunately, it's so overdone and trite by now - Van Damme is only following in a trend that was initiated and mastered by Jackie Chan - that it's not even worth it. This is a far cry from the explosive mixture of martial arts and guns that was so popular in UNIVERSAL SOLDIER. Van Damme never was very good on-screen, and now his longevity is beginning to show it. Unlike Arnold Schwarzenegger, who's managed to turn out an enjoyable feature once in a while, Van Damme has not matured to any level of watchability in recent years.
Rob Schneider is thrown in for comedy, but his ability to deliver the sidelong, snappy one-liners is hampered by the poorly written script. It's hard to believe that this piece of writing comes from the same man (Steven De Souza) who wrote DIE HARD. De Souza makes unnecessary melodrama out of Hong Kong's change from a British colony to a Chinese protectorate, and this only emphasizes the lack of substance. Unlike another recent failure, THE AVENGERS, excuses cannot be made for the cast and crew involved here; Director Hark Tsui has not made an American film prior to this and Van Damme's movies have never received critical praise in this decade. Hopefully Hollywood dollars will now be spent on making more realistic and enjoyable movies after the sure box office failings of this picture, for word of mouth will spread fast and it will not be good.
FINAL AWARD FOR "KNOCK OFF": 1.0 star - a poor movie.
-- Craig Roush<EMAIL_ADDRESS>-- Kinnopio's Movie Reviews http://www.execpc.com/~kinnopio
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Members
|
Sign In with weebly
or
other account (facebook, twitter, ...)
All Forums
Sign In with weebly
or
3 forums
0 posts
Life Upgrades
Start a discussion about Tools and Technology productivity
1 post
Robotic Guitar Assist
Community Input
2 posts
Telepresence
All things Telepresence
New Members (2 total members)
See all
<img src="//pixel.quantserve.com/pixel/p-d1gwTFRU7vEW2.gif" style="display:none;border:0;" height="1" width="1" alt="Quantcast">


{% extends 'index.html' %} {% block header %} {% endblock %} {% block content %} One-stop for Asset Management & Explorer Manage and Explore your items from a unique endpoint. Getting start with create an asset now! {% endblock %}
Manage and Explore your items from a unique endpoint. Getting start with create an asset now!


Select method is used to select data from a database.
You can access each column of the returned row by passing the name or ordinal number of the column to the
ExecuteReader.
Syntax
Select( x =>
x.Fields( { Table | Field | SubSelect( Field | FieldName) } )
.ExcludeFields( { Table | Field } )
.From( Table | SubSelect )
.LeftJoin( (Table | SubSelect), Condition )
.RightJoin( (Table | SubSelect), Condition )
.InnerJoin( (Table | SubSelect), Condition )
.Where( Condition )
.GroupBy( Field Expression Array )
.Having( Condition )
.Skip( value )
.Top( value )
.Paging( page , size )
.OrderASC( Field | SubSelect( Field | FieldName) )
.OrderDESC( Field | SubSelect( Field | FieldName) )
)
Examples
Include/Exclude Fields
Conditional Where
Join
Skip - Top
Group By
Union
Sub Select
Count
Order By


--- layout: post status: publish published: true title: WTF? author: display_name: Andy login: Andy email<EMAIL_ADDRESS>url: '' author_login: Andy author_email<EMAIL_ADDRESS>wordpress_id: 3112 wordpress_url: http://ivyenvy.com/?p=3112 date: '2010-07-30 23:10:10 +0000' date_gmt: '2010-07-31 04:10:10 +0000' categories: - Relief Pitching tags: [] comments: - id: 1606 author: Ryan author_email<EMAIL_ADDRESS>author_url: '' date: '2010-08-01 22:12:05 +0000' date_gmt: '2010-08-02 03:12:05 +0000' content: "Monks can't watch TV. Or no wait that's the Amish. \r\n\r\nAre monks allowed to WATCH Amish people on TV?\r\n\r\nMeehan\r\n\r\nP.S. We have a bullpen?" ---
I'm watching the Cubs play the Rockies right now, and the Cubs have given up 12 runs here in the 8th inning to make the score 17-2 Rockies.  I just about reached for the remote to end my misery, and then I thought twice. No. I'm watching this. It's like my penance for caring too much about this team this season. I'm the monk flagellating himself for his sins right now. The sin of thinking just a week ago that this team could magically turn it around and still make a run.
Old Style is running a radio ad right now emphasizing how their beer has improved so much since they brought back the kraeusening process. In the ad, a guy walks around asking fans how they would "kraeusen" their experience at the ball park that particular day. The answers are all like, "Put sprinklers in the bleachers," and "Have a bottomless container of nachos." Tee-hee. So how would I kraeusen my experience with this ball game? Have the ground open up and swallow the bullpen.


The Paged View data set uses standard data references just like any other data set (such as {ds_RowID}). Because the Paged View data set is dependent on another primary data set, the {ds_RowID} value for each row in the Paged View data set is identical to the ds_RowID of the corresponding row in the primary data set.
The following table shows a set of additional paging-specific data references that you can use when you create spry:region attributes.
|
Data Reference |
Description |
|---|---|
|
{ds_PageNumber} |
The current page index. By default, this is a number between 1 and ds_PageCount. If you use the ZeroBasedIndexes constructor option and set it to true, this is a number between 1 and ds_PageCount, minus 1. |
|
{ds_PageSize} |
The maximum number of items that can appear on a page. |
|
{ds_PageCount} |
The total number of pages required to display all of the data. |
|
{ds_PageItemRowNumber} |
The zero-based row number of the current row being processed. |
|
{ds_PageItemNumber} |
The zero-based row number of the current row being processed plus 1. |
|
{ds_PageFirstItemNumber} |
The item number for the first row displayed on the current page. |
|
{ds_PageLastItemNumber} |
The item number for the last row displayed in the current page. |
|
{ds_PageItemCount} |
The total number of items on the current page. |
|
{ds_PageTotalItemCount} |
The total number of items on all pages. |
|
{ds_UnfilteredRowCount} |
The total number of rows in the data set. |
|
{ds_CurrentRowID} |
Always the ID of the first row in the current page. |
|
{ds_RowID} |
The row ID for the row being processed. |
|
{ds_CurrentRowNumber} |
Always zero (0), which is the index of the first row in the current page. |
|
{ds_RowNumber} |
The row index of the row being processed on the current page. |
<div spry:detailregion="pv1"> This is Page {ds_PageNumber} of {ds_PageCount}. </div>


THE SPACE BETWEEN
"Let us split the difference for you and your friends"
Home
Login
Create An Account


No rules set to enable/disable Stories.
No rules set to redirect Stories (to other Stories).
No rules set to end Stories (with other Stories).


Factory - Selection Types
Can select row
Can select multiple row
Can check row
Can check multiple row
Selections are linked
CREATE TABLE
{{selectedIndexes | json}}
loading...


Kill Count:
` + killCount + `
Reveal Enemy
` + enemy.NN + `
Health (HP): ` + enemy.HP + `
Strength (STR): ` + enemy.STR + `
Speed (SPD): ` + enemy.SPD + `