text:
"""
Role
====

The ``PluginFileLocator`` locates plugins when they are accessible via the filesystem.

It's default behaviour is to look for text files with the
'.yapsy-plugin' extensions and to read the plugin's decription in
them.

Customization
-------------

The behaviour of a ``PluginFileLocator`` can be customized by instanciating it with a specific 'analyzer'.

Two analyzers are already implemented and provided here:

    ``PluginFileAnalyzerWithInfoFile``

        the default 'analyzer' that looks for plugin 'info files' as
        text file with a predefined extension. This implements the way
        yapsy looks for plugin since version 1.

    ``PluginFileAnalyzerMathingRegex``

        look for files matching a regex and considers them as being
        the plugin itself.

All analyzers must enforce the

It enforces the ``plugin locator`` policy as defined by ``IPluginLocator`` and used by ``PluginManager``.

    ``info_ext``

        expects a plugin to be discovered through its *plugin info file*.
        User just needs to provide an extension (without '.') to look
        for *plugin_info_file*.

    ``regexp``

        looks for file matching the given regular pattern expression.
        User just needs to provide the regular pattern expression.

All analyzers must enforce the policy represented by the ``IPluginFileAnalyzer`` interface.

API
===

"""

import os
import re
from lib.yapsy import log
from lib.yapsy.compat import ConfigParser, is_py2, basestring

from lib.yapsy.PluginInfo import PluginInfo
from lib.yapsy import PLUGIN_NAME_FORBIDEN_STRING
from lib.yapsy.IPluginLocator import IPluginLocator

class IPluginFileAnalyzer(object):
    """
    Define the methods expected by PluginFileLocator for its 'analyzer'.
    """

    def __init__(self, name):
        self.name = name

    def isValidPlugin(self, filename):
        """
        Check if the resource found at filename is a valid plugin.
        """
        raise NotImplementedError("'isValidPlugin' must be reimplemented by %s" % self)

    def getInfosDictFromPlugin(self, dirpath, filename):
        """
        Returns the extracted plugin informations as a dictionary.
        This function ensures that "name" and "path" are provided.

        *dirpath* is the full path to the directory where the plugin file is

        *filename* is the name (ie the basename) of the plugin file.

        If *callback* function has not been provided for this strategy,
        we use the filename alone to extract minimal informations.
        """
        raise NotImplementedError("'getInfosDictFromPlugin' must be reimplemented by %s" % self)

class PluginFileAnalyzerWithInfoFile(IPluginFileAnalyzer):
    """
    Consider plugins described by a textual description file.

    A plugin is expected to be described by a text file ('ini' format) with a specific extension (.yapsy-plugin by default).

    This file must contain at least the following information::

        [Core]
        Name = name of the module
        Module = relative_path/to/python_file_or_directory

    Optionnally the description file may also contain the following section (in addition to the above one)::

        [Documentation]
        Author = Author Name
        Version = Major.minor
        Website = url_for_plugin
        Description = A simple one-sentence description

    Ctor Arguments:

        *name* name of the analyzer.

        *extensions* the expected extensions for the plugin info file. May be a string or a tuple of strings if several extensions are expected.
    """

    def __init__(self, name, extensions="yapsy-plugin"):
        IPluginFileAnalyzer.__init__(self, name)
        self.setPluginInfoExtension(extensions)

    def setPluginInfoExtension(self, extensions):
        """
        Set the extension that will identify a plugin info file.

        *extensions* May be a string or a tuple of strings if several extensions are expected.
        """
        # Make sure extension is a tuple
        if not isinstance(extensions, tuple):
            extensions = (extensions,)
        self.expectedExtensions = extensions

    def isValidPlugin(self, filename):
        """
        Check if it is a valid plugin based on the given plugin info file extension(s).
        If several extensions are provided, the first matching will cause the function
        to exit successfully.
        """
        res = False
        for ext in self.expectedExtensions:
            if filename.endswith(".%s" % ext):
                res = True
                break
        return res

    def getPluginNameAndModuleFromStream(self, infoFileObject, candidate_infofile=None):
        """
        Extract the name and module of a plugin from the
        content of the info file that describes it and which
        is stored in ``infoFileObject``.

        .. note:: Prefer using ``_extractCorePluginInfo``
                  instead, whenever possible...

        .. warning:: ``infoFileObject`` must be a file-like object:
                     either an opened file for instance or a string
                     buffer wrapped in a StringIO instance as another
                     example.

        .. note:: ``candidate_infofile`` must be provided
                  whenever possible to get better error messages.

        Return a 3-uple with the name of the plugin, its
        module and the config_parser used to gather the core
        data *in a tuple*, if the required info could be
        localised, else return ``(None,None,None)``.

        .. note:: This is supposed to be used internally by subclasses
                  and decorators.
        """
        # parse the information buffer to get info about the plugin
        config_parser = ConfigParser()
        try:
            if is_py2:
                config_parser.readfp(infoFileObject)
            else:
                config_parser.read_file(infoFileObject)
        except Exception as e:
            log.debug("Could not parse the plugin file '%s' (exception raised was '%s')" % (candidate_infofile, e))
            return (None, None, None)
        # check if the basic info is available
        if not config_parser.has_section("Core"):
            log.debug("Plugin info file has no 'Core' section (in '%s')" % candidate_infofile)
            return (None, None, None)
        if not config_parser.has_option("Core", "Name") or not config_parser.has_option("Core", "Module"):
            log.debug("Plugin info file has no 'Name' or 'Module' section (in '%s')" % candidate_infofile)
            return (None, None, None)
        # check that the given name is valid
        name = config_parser.get("Core", "Name")
        name = name.strip()
        if PLUGIN_NAME_FORBIDEN_STRING in name:
            log.debug("Plugin name contains forbiden character: %s (in '%s')" % (PLUGIN_NAME_FORBIDEN_STRING,
                                                                                candidate_infofile))
            return (None, None, None)
        return (name, config_parser.get("Core", "Module"), config_parser)

    def _extractCorePluginInfo(self, directory, filename):
        """
        Gather the core information (name, and module to be loaded)
        about a plugin described by it's info file (found at
        'directory/filename').

        Return a dictionary with name and path of the plugin as well
        as the ConfigParser instance used to collect these info.

        .. note:: This is supposed to be used internally by subclasses
                  and decorators.
        """
        # now we can consider the file as a serious candidate
        if not isinstance(filename, basestring):
            # filename is a file object: use it
            name, moduleName, config_parser = self.getPluginNameAndModuleFromStream(filename)
        else:
            candidate_infofile_path = os.path.join(directory, filename)
            # parse the information file to get info about the plugin
            with open(candidate_infofile_path) as candidate_infofile:
                name, moduleName, config_parser = self.getPluginNameAndModuleFromStream(candidate_infofile,
                                                                                candidate_infofile_path)
        if (name, moduleName, config_parser) == (None, None, None):
            return (None, None)
        infos = {"name": name, "path": os.path.join(directory, moduleName)}
        return infos, config_parser

    def _extractBasicPluginInfo(self, directory, filename):
        """
        Gather some basic documentation about the plugin described by
        it's info file (found at 'directory/filename').

        Return a dictionary containing the core information (name and
        path) as well as as the 'documentation' info (version, author,
        description etc).

        See also:

          ``self._extractCorePluginInfo``
        """
        infos, config_parser = self._extractCorePluginInfo(directory, filename)
        # collect additional (but usually quite usefull) information
        if infos and config_parser and config_parser.has_section("Documentation"):
            if config_parser.has_option("Documentation", "Author"):
                infos["author"] = config_parser.get("Documentation", "Author")
            if config_parser.has_option("Documentation", "Version"):
                infos["version"] = config_parser.get("Documentation", "Version")
            if config_parser.has_option("Documentation", "Website"):
                infos["website"] = config_parser.get("Documentation", "Website")
            if config_parser.has_option("Documentation", "Copyright"):
                infos["copyright"] = config_parser.get("Documentation", "Copyright")
            if config_parser.has_option("Documentation", "Description"):
                infos["description"] = config_parser.get("Documentation", "Description")
        return infos, config_parser

    def getInfosDictFromPlugin(self, dirpath, filename):
        """
        Returns the extracted plugin informations as a dictionary.
        This function ensures that "name" and "path" are provided.

        If *callback* function has not been provided for this strategy,
        we use the filename alone to extract minimal informations.
        """
        infos, config_parser = self._extractBasicPluginInfo(dirpath, filename)
        if not infos or infos.get("name", None) is None:
            raise ValueError("Missing *name* of the plugin in extracted infos.")
        if not infos or infos.get("path", None) is None:
            raise ValueError("Missing *path* of the plugin in extracted infos.")
        return infos, config_parser

class PluginFileAnalyzerMathingRegex(IPluginFileAnalyzer):
    """
    An analyzer that targets plugins decribed by files whose name match a given regex.
    """

    def __init__(self, name, regexp):
        IPluginFileAnalyzer.__init__(self, name)
        self.regexp = regexp

    def isValidPlugin(self, filename):
        """
        Checks if the given filename is a valid plugin for this Strategy
        """
        reg = re.compile(self.regexp)
        if reg.match(filename) is not None:
            return True
        return False

    def getInfosDictFromPlugin(self, dirpath, filename):
        """
        Returns the extracted plugin informations as a dictionary.
        This function ensures that "name" and "path" are provided.
        """
        # use the filename alone to extract minimal informations.
        infos = {}
        module_name = os.path.splitext(filename)[0]
        plugin_filename = os.path.join(dirpath, filename)
        if module_name == "__init__":
            module_name = os.path.basename(dirpath)
            plugin_filename = dirpath
        infos["name"] = "%s" % module_name
        infos["path"] = plugin_filename
        cf_parser = ConfigParser()
        cf_parser.add_section("Core")
        cf_parser.set("Core", "Name", infos["name"])
        cf_parser.set("Core", "Module", infos["path"])
        return infos, cf_parser

class PluginFileLocator(IPluginLocator):
    """
    Locates plugins on the file system using a set of analyzers to
    determine what files actually corresponds to plugins.

    If more than one analyzer is being used, the first that will discover a
    new plugin will avoid other strategies to find it too.

    By default each directory set as a "plugin place" is scanned
    recursively. You can change that by a call to
    ``disableRecursiveScan``.
    """

    def __init__(self, analyzers=None, plugin_info_cls=PluginInfo):
        IPluginLocator.__init__(self)
        self._discovered_plugins = {}
        self.setPluginPlaces(None)
        self._analyzers = analyzers  # analyzers used to locate plugins
        if self._analyzers is None:
            self._analyzers = [PluginFileAnalyzerWithInfoFile("info_ext")]
        self._default_plugin_info_cls = plugin_info_cls
        self._plugin_info_cls_map = {}
        self._max_size = 1e3 * 1024  # in octets (by default 1 Mo)
        self.recursive = True

    def disableRecursiveScan(self):
        """
        Disable recursive scan of the directories given as plugin places.
        """
        self.recursive = False

    def setAnalyzers(self, analyzers):
        """
        Sets a new set of analyzers.

        .. warning:: the new analyzers won't be aware of the plugin
                     info class that may have been set via a previous
                     call to ``setPluginInfoClass``.
        """
        self._analyzers = analyzers

    def removeAnalyzers(self, name):
        """
        Removes analyzers of a given name.
        """
        analyzersListCopy = self._analyzers[:]
        foundAndRemoved = False
        for obj in analyzersListCopy:
            if obj.name == name:
                self._analyzers.remove(obj)
                foundAndRemoved = True
        if not foundAndRemoved:
            log.debug("'%s' is not a known strategy name: can't remove it." % name)

    def removeAllAnalyzer(self):
        """
        Remove all analyzers.
        """
        self._analyzers = []

    def appendAnalyzer(self, analyzer):
        """
        Append an analyzer to the existing list.
        """
        self._analyzers.append(analyzer)

    def _getInfoForPluginFromAnalyzer(self, analyzer, dirpath, filename):
        """
        Return an instance of plugin_info_cls filled with data extracted by the analyzer.

        May return None if the analyzer fails to extract any info.
        """
        plugin_info_dict, config_parser = analyzer.getInfosDictFromPlugin(dirpath, filename)
        if plugin_info_dict is None:
            return None
        plugin_info_cls = self._plugin_info_cls_map.get(analyzer.name, self._default_plugin_info_cls)
        plugin_info = plugin_info_cls(plugin_info_dict["name"], plugin_info_dict["path"])
        plugin_info.details = config_parser
        return plugin_info

    def locatePlugins(self):
        """
        Walk through the plugins' places and look for plugins.

        Return the candidates and number of plugins found.
        """
        # 		print "%s.locatePlugins" % self.__class__
        _candidates = []
        _discovered = {}
        for directory in map(os.path.abspath, self.plugins_places):
            # first of all, is it a directory :)
            if not os.path.isdir(directory):
                log.debug("%s skips %s (not a directory)" % (self.__class__.__name__, directory))
                continue
            if self.recursive:
                debug_txt_mode = "recursively"
                walk_iter = os.walk(directory, followlinks=True)
            else:
                debug_txt_mode = "non-recursively"
                walk_iter = [(directory, [], os.listdir(directory))]
            # iteratively walks through the directory
            log.debug("%s walks (%s) into directory: %s" % (self.__class__.__name__, debug_txt_mode, directory))
            for item in walk_iter:
                dirpath = item[0]
                for filename in item[2]:
                    # print("testing candidate file %s" % filename)
                    for analyzer in self._analyzers:
                        # print("... with analyzer %s" % analyzer.name)
                        # eliminate the obvious non plugin files
                        if not analyzer.isValidPlugin(filename):
                            log.debug("%s is not a valid plugin for strategy %s" % (filename, analyzer.name))
                            continue
                        candidate_infofile = os.path.join(dirpath, filename)
                        if candidate_infofile in _discovered:
                            log.debug("%s (with strategy %s) rejected because already discovered" % (
                            candidate_infofile, analyzer.name))
                            continue
                        log.debug("%s found a candidate:\n    %s" % (self.__class__.__name__, candidate_infofile))
                        #						print candidate_infofile
                        plugin_info = self._getInfoForPluginFromAnalyzer(analyzer, dirpath, filename)
                        if plugin_info is None:
                            log.debug("Plugin candidate '%s'  rejected by strategy '%s'" % (
                            candidate_infofile, analyzer.name))
                            break  # we consider this was the good strategy to use for: it failed -> not a plugin -> don't try another strategy
                        # now determine the path of the file to execute,
                        # depending on wether the path indicated is a
                        # directory or a file
                        #					print plugin_info.path
                        # Remember all the files belonging to a discovered
                        # plugin, so that strategies (if several in use) won't
                        # collide
                        if os.path.isdir(plugin_info.path):
                            candidate_filepath = os.path.join(plugin_info.path, "__init__")
                            # it is a package, adds all the files concerned
                            for _file in os.listdir(plugin_info.path):
                                if _file.endswith(".py"):
                                    self._discovered_plugins[os.path.join(plugin_info.path, _file)] = candidate_filepath
                                    _discovered[os.path.join(plugin_info.path, _file)] = candidate_filepath
                        elif (plugin_info.path.endswith(".py") and os.path.isfile(plugin_info.path)) or os.path.isfile(
                                plugin_info.path + ".py"):
                            candidate_filepath = plugin_info.path
                            if candidate_filepath.endswith(".py"):
                                candidate_filepath = candidate_filepath[:-3]
                            # it is a file, adds it
                            self._discovered_plugins[".".join((plugin_info.path, "py"))] = candidate_filepath
                            _discovered[".".join((plugin_info.path, "py"))] = candidate_filepath
                        else:
                            log.error("Plugin candidate rejected: cannot find the file or directory module for '%s'" % (
                                candidate_infofile))
                            break
                        #					print candidate_filepath
                        _candidates.append((candidate_infofile, candidate_filepath, plugin_info))
                        # finally the candidate_infofile must not be discovered again
                        _discovered[candidate_infofile] = candidate_filepath
                        self._discovered_plugins[candidate_infofile] = candidate_filepath
        #						print "%s found by strategy %s" % (candidate_filepath, analyzer.name)
        return _candidates, len(_candidates)

    def gatherCorePluginInfo(self, directory, filename):
        """
        Return a ``PluginInfo`` as well as the ``ConfigParser`` used to build it.

        If filename is a valid plugin discovered by any of the known
        strategy in use. Returns None,None otherwise.
        """
        for analyzer in self._analyzers:
            # eliminate the obvious non plugin files
            if not analyzer.isValidPlugin(filename):
                continue
            plugin_info = self._getInfoForPluginFromAnalyzer(analyzer, directory, filename)
            return plugin_info, plugin_info.details
        return None, None

    # -----------------------------------------------
    # Backward compatible methods
    # Note: their implementation must be conform to their
    # counterpart in yapsy<1.10
    # -----------------------------------------------

    def getPluginNameAndModuleFromStream(self, infoFileObject, candidate_infofile=None):
        for analyzer in self._analyzers:
            if analyzer.name == "info_ext":
                return analyzer.getPluginNameAndModuleFromStream(infoFileObject)
        else:
            raise RuntimeError("No current file analyzer is able to provide plugin information from stream")

    def setPluginInfoClass(self, picls, name=None):
        """
        Set the class that holds PluginInfo. The class should inherit
        from ``PluginInfo``.

        If name is given, then the class will be used only by the corresponding analyzer.

        If name is None, the class will be set for all analyzers.
        """
        if name is None:
            self._default_plugin_info_cls = picls
            self._plugin_info_cls_map = {}
        else:
            self._plugin_info_cls_map[name] = picls

    def setPluginPlaces(self, directories_list):
        """
        Set the list of directories where to look for plugin places.
        """
        if isinstance(directories_list, basestring):
            raise ValueError(
                "'directories_list' given as a string, but expected to be a list or enumeration of strings")
        if directories_list is None:
            directories_list = [os.path.dirname(__file__)]
        self.plugins_places = directories_list

    def updatePluginPlaces(self, directories_list):
        """
        Updates the list of directories where to look for plugin places.
        """
        self.plugins_places = list(set.union(set(directories_list), set(self.plugins_places)))

    def setPluginInfoExtension(self, ext):
        """
        DEPRECATED(>1.9): for backward compatibility. Directly configure the
        IPluginLocator instance instead !

        This will only work if the strategy "info_ext" is active
        for locating plugins.
        """
        for analyzer in self._analyzers:
            if analyzer.name == "info_ext":
                analyzer.setPluginInfoExtension(ext)


text:
CBN and NCC sign agreement on mobile money operations
The Central Bank of Nigeria (CBN) and the Nigerian Communications Commission (NCC) have signed a mem...
CRC Credit Bureau's MD/CEO receives Nigeria CFO Award
CRC MD/CEO recognized for his Outstanding Contribution in Accounting and Finance in Nigeria...
Nigeria Up 24 places To 2013 Levels In World Bank Doing Business Report
Nigeria moved up 24 positions to rank 145th in the Global Ease of Doing Business 2018 report release...
Credit to Private Sector Rises to N22.2tn
Banking sector credit to the private sector increased year-on-year to N22.172 trillion at the end of...
CRC Credit Bureau Receives Award as Most Innovative & Impactful Credit Information Provider
the transparency of the selection process of award winners and the utmost independence the selecting...
CRC Credit Bureau Appoints New Chairman
CRC Credit Bureau Limited has announced the appointment of a new chairman and three non-executive di...

redpajama_set_name: RedPajamaCommonCrawl


Have you ever left the salon with a fresh new hair color, only to realize how bad it was before the appointment? (They say that hindsight is 20/20, and let me tell you, that's true for your hair, as well as the rest of your life.) Before, you might have never noticed the fading color, the lackluster finish, or the tone separation, but now that you've changed it, you think "why did I wait so long?" That's been my experience at least. After getting balayage highlights last winter, I couldn't believe I had lived with my old hair for so long.
For pretty much all my adult life, I figured this boost in shine and color radiance only resulted from a new dye. But lucky for me I was wrong. It also results from a much simpler hair treatment—a hair gloss. "I usually gloss every client," says Stephanie Brown, colorist at Nunzio Saviano Salon in NYC. "It's a way to close the hair shaft to make it smooth and shiny. It can also tone hair as well." Keep reading to learn more about hair glossing from celebrity hairstylists.
The first thing you should know about glosses is that there are two kinds: clear and tinted. "Clear glosses are usually just for shine, whereas tinted glosses tone the hair. You can make hair more golden or ashier or darker or brighter with tinted glosses," says Brown. How do you decide which one you need? Simple. If your hair is dull and needs a shine boost, go for clear. If the color is slightly off (thanks to the fading summer sun), go for tinted. According to Kérastase celebrity hairstylist Matt Fugate, "tinted glosses will counteract an underlying problem and address the tone.
For example, if your hair is warm or brassy, it will cool it down, or if your hair is ashy or dingy, it can warm it up."
Though the color enhancement is subtle, the effects are major. Take it from Ryan Sanger, hairstylist at Bomane Salon in Beverly Hills, who says that hair glosses are essentially, "a quick service that makes your hair look shiny and expensive." (Yes, please). Plus, compared to a full-length color session, it takes no time at all. Sanger says that a hair gloss "processes from five to 20 mins and usually last between four to 10 weeks." You can get them repeatedly, too. Let's say you notice your shine is fading after five weeks.
Head in for another gloss, and that problem will be fixed. Or you can DIY the look at home to get similar results.
"The Kérastase Réflection Chromatique Collection is my go-to," Fugate says. "The collection comes with a shampoo, conditioner, masque, and Touche Chromatique Pen that has not only tremendous health and conditioning benefits, but the products also allow you to spot-treat and pinpoint your hair color to either prevent fading or to address tonal changes." These haircare kits come prepared specifically to cater to certain hair colors.
For blond hair, Brown recommends this budget-friendly strengthening treatment. " It strengthens, moisturizes, and adds shine. It is an amazing and inexpensive product." She also recommends using a toning in-shower conditioner, which corrects and prevents color fade. "Just use it like a normal conditioner—there's no need to leave it on the hair," she says. Try Overtone Haircare Conditioner ($17). "I love the overtone colors pastel silver and pastel purple to remove yellow tones and pastel blue for brassy orange tones."
As for Sanger, he recommends the Olaplex conditioning treatment (so do we—this stuff is basically bottled magic). "Olaplex is a must! It strengthens your hair by reversing damage and bringing your hair back to a healthy youthful shine. I would also recommend Davines Essentials MINU/Hair Mask ($34) to prolong and further enhance the shine from your glossing service."
Now that you're up to date on hair glossing, read all about the biggest hair trend from New York Fashion Week!


text:
Ari Armstrong
ARI ARMSTRONG, pioneer, was born in Wayne County, Ind., November 4, 1814, son of John and Letitia (Dye) Armstrong; is the sixth in a family of thirteen children, and is of Scotch-German lineage. The father of Mr. Armstrong was born in the Old Penn Commonwealth in 1776, and his mother in New Jersey. The paternal grandparent of Mr. Armstrong was James Armstrong, a native of Scotland, where the Armstrong family is supposed to have originated. When the father of Mr. Armstrong was thirteen years of age, he came with his parents from Pennsylvania to Kentucky, where they remained until 1810, when they removed to the territory that now composes Wayne County, Ind., and there the family remained until 1815, when it came to the territory of which Lawrence County is now composed, and made settlement near the present site of the town of Mitchell, and there the family remained two years, and then came to what is now Perry Township, and a cabin was erected where Mr. Ari Armstrong's house now stands. Here his father died in 1866, and his mother in 1828.
The father of Mr. Armstrong was one of the first white men to make settlement in Lawrence County. He was also a prominent man, and was extensively known for his uprightness and integrity. He was formerly a member of the Baptist Church, but late in life united with that Christian Church. When the subject of this sketch had gained his years of majority, he took up the successes and reverses of life for himself. His first move was to borrow $300 of the Bedford Bank, and go to Cincinnati and invest it in Peacock plows, and bring his investment to Springville for sale. These were the first iron mold-board plows ever known in Perry Township, and consequently 1834 marks the new ear as far as plows are concerned in this township. The money which Mr. Armstrong borrowed was the fist loaned from the Bedford Bank after its establishment.
The marriage of Mr. Armstrong took place in 1835 to Miss Mary Short, a native of Pulaski County, Ky., but who came to Lawrence County in 1818. To this marriage were born twelve children, six of whom survive their mother, whose death occurred November, 1854. The subject to this sketch was married again in 1865 to Mrs. Sarah A. Pitman, who was born in Lawrence county. To this union have been born seven children. Mr. Armstrong is one of the most extensive land-holders in the county, and now has 1,700 acres. For many years he has been dealing in stock, and is yet one of the leading stock-men of the country. Politically Mr. Armstrong is a Republican. Under the old law he was one of the Trustees of Perry Township for a number of years. In 1871 he was elected County Commissioner of Lawrence County, and as such he served two terms. He has been a member of the Christian Church for fifty-six years, and has been an officer in that church most of the time. For nearly seventy years Mr. Armstrong has been a resident of Lawrence County, and for a half century he has been one of its leading and successful men.


SYMPTOM: Starter won�t turn the motor over. Solenoid may or may not be heard �clicking� with key into the start position.
Battery cables and connections are good.
PROBLEM: Worn out ignition/starter switch.
The simple & inexpensive installation of an add-on �starter relay� will keep you going if you have a worn starter switch (contacts) and can also make your existing, good switch last longer.
Installing a relay moves the semi-heavy current required for the solenoid actuation away from the switch, to the relay instead.
Basically, this procedure installs a fog light (30 amp) relay in line with the starter switch-to-solenoid wire and provides good �juice� directly from the battery. On my 70-something bugs, I installed it under the back seat, driver side, right where the solenoid wire has a male-to-female inline connection.
Locate the rather heavy (about 10 gauge) red wire (w/a black stripe) that runs from the starter solenoid. A good place to start is under the rear seat on the driver side. This wire will probably have a connection, enclosed in clear plastic. If you find this connector, pull it apart.
Once this wire is opened at the connector, cut the male connector off and install a �� female spade connector in its place. If the other end does NOT already have a female connector on it, install one on it too. You should now have female connectors on the 2 (pieces) of the solenoid wire.
Connect the wire (from step 2) that is still connected to the solenoid, to one of the �switch� contact tabs on the fog light relay. The relay should have a pin layout painted on one of its sides.
Connect the (other) side of the wire, that leads towards the front of the car, to one of the �coil� tabs on the relay.
Fabricate a ground wire from the black wire stock, by stripping the end and crimping a �� female spade connector.
Using a screw, ground one end of the black wire to chassis ground, nearby. Connect the other end, with the female spade connector, to the remaining �coil� tab on the relay.
Fabricate a �battery power� wire from the red, 10-ga wire stock. Strip both ends and install a female spade connector onto one end.
Connect the female connector end of the �battery power� wire (step 7) to the remaining �switch� contact tab of the relay.
Connect the other end of the battery power wire to the positive (+) side of the battery.
You are done! It is really easier than it sounds. I recently mis-diagnosed my �clicking solenoid� problem as a bad starter solenoid and replaced the whole thing with a known, good starter� to no avail. This fixed it immediately!


text:
Q: Save checkbox values into database I am designing a form where the user can fill up their particulars and submit it to the database. For the most part, it works. There is one part with the form about the driving license class, it does not work. A person can have multiple driving licenses so I made that into a checkbox field. However, when the user selects two or more driving licenses, only the lastly selected driving license appears in the database. So, if a person selects Class1 firstly and then selects Class2, only Class2 appears in the database.
How can I include all the driving licenses selected by the user into one database column?
I have attached the code below.
form.blade.php
@extends('layout.basiclayout')
@section('content')

page 1/7

        {!! Form::open(['url' => 'form/submit']) !!}

PERSONAL PARTICULARS -

                  {{Form::label('Name/NRIC', 'Name AS PER NRIC/PASSPORT: ')}}
                  {{Form::text('Name/NRIC', '', ['class' => 'form-control', 'placeholder' => 'eg: John Smith'])}}

            {{-- start of Driver`s License --}}

                Do you have a Driver`s license?

                   <input type="radio" name="Driver_license" id="yesid" value="Yes" onclick="document.getElementById('Driver_license').style.display='block'">Yes
                  <input type="radio" name="Driver_license" id="noid" value="No" onclick="document.getElementById('Driver_license').style.display='none'">No

              <input type="checkbox" name="Driver_license_class" id="Driver_license_class1" value="Class1">Class 1
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class2" value="Class2">Class 2
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class2A" value="Class2A">Class 2A
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class2B" value="Class2B">Class 2B

              <input type="checkbox" name="Driver_license_class" id="Driver_license_class3" value="Class3">Class 3
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class3A" value="Class3A">Class 3A
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class3C" value="Class3C">Class 3C
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class3CA" value="Class3CA">Class 3CA

              <input type="checkbox" name="Driver_license_class" id="Driver_license_class4" value="Class4">Class 4
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class4A" value="Class4A">Class 4A
              <input type="checkbox" name="Driver_license_class" id="Driver_license_class5" value="Class5">Class 5

            {{-- End of Driver`s License --}}

                  {{Form::submit('Next Page', ['class' => 'btn btn-primary'])}}

{!! Form::close() !!}

@endsection

migration file
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePersonalInfosTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('personal_infos', function (Blueprint $table) {
            $table->increments('id');
            $table->String('Name');
            $table->String('Driver_license');
            $table->String('Driver_license_class');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('personal_infos');
    }
}

controller
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\PersonalInfo;

class PersonalInfoController extends Controller
{
          public function submit(Request $request){
        $this->validate($request,[
            'Name/NRIC' => 'required',
        ]);

        $PersonalParticulars = new PersonalInfo;
        $PersonalParticulars->Name = $request->input('Name/NRIC');
        $PersonalParticulars->Driver_license = $request->input('Driver_license');
        $PersonalParticulars->Driver_license_class = $request->input('Driver_license_class');

        $PersonalParticulars->save();
    return redirect('http://formapplication.dev/page2');
    }
}

A: You have to set it up as an array by adding [] in the name of the checkbox.
Change all <input type="checkbox" name="Driver_license_class" to:
<input type="checkbox" name="Driver_license_class[]"

Now, you will receive the results as an array, instead of just the single value. To process the values into the database, you could do mulitple things depending on how you want it to be saved.
You could loop trough the values by using the following code:
if(isset($_POST['Driver_license_class'])){
    foreach($_POST['Driver_license_class'] as $license){
        echo $license; // Outputs the selected license
    }
}

Or you can implode the values with the desired delimiter:
implode(", ", $_POST['Driver_license_class'])

This will return the selected results as comma seperated values.
Edit
As requested, here is where you need to change your code after adding the []:
$PersonalParticulars->Driver_license_class = implode(", ", $request->input('Driver_license_class'));

A: Change the name of checkboxes in your blade to

name="Driver_license_class[]"

So that you can get the selected licenses as an array in your php code.
To save an array to a field in database, you need to save it in CSV format:

$PersonalParticulars->Driver_license = implode(',', $request->input('Driver_license'));

Alternatively you may save data in JSON format

$PersonalParticulars->Driver_license = json_encode($request->input('Driver_license'));

redpajama_set_name: RedPajamaStackExchange


text:
Q: Adding a new column based on values I have the following sample data:
data weight_club;
  input IdNumber 1-4 Name $ 6-24 Team $ StartWeight EndWeight;
  Loss = StartWeight - EndWeight;
  datalines;
1023 David Shaw         red    189 165
1049 Amelia Serrano     yellow 145 124
1219 Alan Nance         purple   210 192
1246 Ravi Sinha         yellow 194 177
1078 Ashley McKnight    green    127 118
;

What I would like to do now is the following:

*

*Create two lists with colours (fe, list1 = "red" and "yellow" and list2 = "purple" and "green")

*Classify the records according to whether or not they are in list1 and list2 and add a new column.

So the pseudo code is like this:
'Set new category called class

If item is in list1 then class = 1
Else if item is in list2 then class = 2
Else class = 3

Any thoughts on how I can do this most effciently?

A: Your pseudocode is almost exactly it.
If item is in ('red' 'yellow') then class = 1;
Else if item is in ('purple' 'green') then class = 2;
Else class = 3;

This is really a lookup, so their are many other methods. One I usually recommend as well is Proc format, though in a simplistic case like this I'm not sure of any gains.
Proc format;
    Value $ colour_cat
    'red', 'yellow' = 1
     'purple', 'green' = 2
      Other = 3;
Run;

And then in a data/SQL either of the following can be used.
*actual conversion;
Category = put(colour, $colour_cat.);

 * change display only;
 Format colour $colour_cat.;


Adam Smith says that nobody ever imagined a god of weight—and he might have added, of the multiplication table either. It may be that the relations of Nature are all as inevitable as that twice two are four.
But we must here state that we should not see anything if there were a vacuum. But this would not be due to some nature hindering species, and resisting it, but because of the lack of a nature suitable for the multiplication of species; for species is a natural thing, and therefore needs a natural medium; but in a vacuum nature does not exist.
Opus Majus [1266-1268], Part V, distinction 9, chapter 2, trans. R. B. Burke, The Opus Majus of Roger Bacon (1928), Vol. 2, 485.
I never could do anything with figures, never had any talent for mathematics, never accomplished anything in my efforts at that rugged study, and to-day the only mathematics I know is multiplication, and the minute I get away up in that, as soon as I reach nine times seven— [He lapsed into deep thought, trying to figure nine times seven. Mr. McKelway whispered the answer to him.] I've got it now. It's eighty-four. Well, I can get that far all right with a little hesitation. After that I am uncertain, and I can't manage a statistic.
Speech at the New York Association for Promoting the Interests of the Blind (29 Mar 1906). In Mark Twain and William Dean Howells (ed.), Mark Twain's Speeches? (1910), 323.
I read … that geometry is the art of making no mistakes in long calculations. I think that this is an underestimation of geometry. Our brain has two halves: one is responsible for the multiplication of polynomials and languages, and the other half is responsible for orientation of figures in space and all the things important in real life. Mathematics is geometry when you have to use both halves.
Making out an income tax is a lesson in mathematics: addition, division, multiplication and extraction.
In Evan Esar, 20,000 Quips and Quotes, 419.
Perhaps in the times of Ahmes the multiplication table was exciting.
In What I Believe (1925), 3.
From 'Experiments with Bacterial Viruses (Bacteriophages)', Harvey Lecture (1946), 41, 161-162. As cited in Robert Olby, The Path of the Double Helix: The Discovery of DNA (1974, 1994), 237.
The late Alan Gregg pointed out that human population growth within the ecosystem was closely analogous to the growth of malignant tumor cells within an organism: that man was acting like a cancer on the biosphere. The multiplication of human numbers certainly seems wild and uncontrolled… Four million a month—the equivalent of the population of Chicago… We seem to be doing all right at the moment; but if you could ask cancer cells, I suspect they would think they were doing fine. But when the organism dies, so do they; and for our own, selfish, practical, utilitarian reasons, I think we should be careful about how we influence the rest of the ecosystem.
From Horace M. Albright Conservation Lectureship Berkeley, California (23 Apr 1962), 'The Human Environment', collected in Conservators of Hope: the Horace M. Albright Conservation Lectures (1988), 44.
The progress of civilization consists merely in the multiplication and refinement of human wants.
Statement prepared for a dinner-symposium on 'Previews of Industrial Progress in the Next century', held in Chicago (25 May 1935), the evening preceding the reopening of the Century of Progress Exposition. In Alfred P. Sloan, Jr., 'Science and Industry in the Coming Century', The Scientific Monthly (Jul 1934), 39, No. 1, 75. Also in Address (20 Apr 1939) at a dinner of the Merchants and Manufacturers celebrating the opening of the New York World's Fair, as "Civilization consists in the multiplication and refinement of human wants." Collected in Representative American Speeches (1939), 13, No. 3, 193.
The world looks like a multiplication-table, or a mathematical equation, which, turn it how you will, balances itself.
From 'Compensation', collected in The Complete Works of Ralph Waldo Emerson (1903), 102.
In Anton Chekhov, S. S. Koteliansky (trans.) and Leonard Woolf (trans.), Note-Book of Anton Chekhov (1921), 18.
This survival of the fittest implies multiplication of the fittest.
In Principles of Biology (1865, 1872), Vol. 1, 444.
To prove that tuberculosis is caused by the invasion of bacilli, and that it is a parasitic disease primarily caused by the growth and multiplication of bacilli, it is necessary to isolate the bacilli from the body, to grow them in pure culture until they are freed from every disease product of the animal organism, and, by introducing isolated bacilli into animals, to reproduce the same morbid condition that is known to follow from inoculation with spontaneously developed tuberculous material.
'The Etiology of Tuberculosis' (1882), Essays of Robert Koch (1987), trans. K. Codell Carter, 87.


Kathryn - Trash the Dress!
Sandy and Eric Married on the "L"
Thanks for visiting Pizzoferrato Photography. We are a husband and wife team specializing in Wedding and Portrait photography since 2007. We look forward to hearing from you!


Playground and amusement equipment in the Netherlands must comply with the safety requirements of the Amusement and Playground Apparatus Decree (Warenwetbesluit attractie- en speeltoestellen, WAS). You may only keep playground and amusement equipment which has a certificate of approval. You can have a foreign certificate converted to a similar Dutch one. An appointed inspection bodyExternal link has to test your equipment annually. You are not obliged to keep a logbook, but you do have to keep the inspection documents until the next inspection.
The WAS does not apply to playground equipment at private homes and small amusement equipment for a maximum of 3 persons (e.g. coin-operated children's rides at supermarkets).
If you assemble or install an amusement machine for the first time, you must notify the Netherlands Food and Consumer Product Safety AuthorityExternal link (Nederlandse Voedsel en Waren Autoriteit, NVWA) accordingly. This does not apply, however, to small amusement machines intended for a maximum of 3 persons.
In some cases, you will need an All-in-one Permit for Physical Aspects (omgevingsvergunning) if you want to install a piece of playground or amusement equipment. This depends on the zoning plan in your municipality and the height of the equipment.
If you rent out amusement equipment, you must include several documents, among others a manual, a spreadsheet for keeping records of maintenance and accidents and proof of the type approval. These documents must be kept with the equipment at all times by the operator.
Operators of foreign amusement devices that are temporarily operationalExternal link (maximum 14 days) in the Netherlands, must provide a written notification of the amusement device to the NVWA. For this, they have to complete the form for registering amusement devicesExternal link at least 48 hours before it is first set up in the Netherlands.
Operators who set up foreign amusement devices at more than one fairground or who remain at one fairground for longer than 14 daysExternal link are subject to the mandatory commissioning inspection and periodic inspections. They are required to comply with the same safety requirements as their Dutch counterparts.
Please note: The technical requirements that apply in the Netherlands to playground and amusement equipment differ from those of other EU Member States. If an item of playground or amusement equipment is already permitted in another EU Member State, the Dutch government may only prohibit its sale in the Netherlands in exceptional cases.


Zuki's ideal forever home will be indoors only to protect his pale features.
Zuki can't wait to be the centre of your universe! This curious kitty is very outgoing and has a rather rambunctious purr-sonality but his athletic antics are sure to make you smile. Zuki's favourite pastimes include zooming about, playing and then playing some more so you will need lots of toys to help this boisterous boy burn off some of that energy. Once Zuki is all tuckered out then the cuddles will begin and there will be plenty of purrs. You'll be over the moon with this lively little guy in your life.


Elder Bednar Makes a Visit!
¿Cómo están? Espero que hayan tenido una semana muy feliz y que hayan sonreído mucho!
This week was absolutely unforgettable. It was filled with Elder Bednar. He got to Argentina early on in the week and he had a few transmissions there that got sent out to the rest of the area.. Chile, Uruguay, and Paraguay. We had the opportunity to attend the transmission for the youth on Tuesday and the transmission for the young single adults on Wednesday as well.. not to mention a missionary transmission for the whole area on Wednesday in the morning and then the real face to face conference on Friday.. like I said this week was full of Elder Bednar and I loved it. I learned so much and now I have a lot to put to practice. I am so grateful for the opportunities that I have had to grow and to learn in the last little bit, the gospel is so great!
One thing that I loved that Elder Bednar said was that we don't go anywhere by coincidence. He shared a story about how he was working on his roof one day.. and he needed some nails so he went to the store in a baseball cap, jeans and a dirty t-shirt. While we was there a guy came up to him and asked "Are you Elder Bednar?" and he told him that he was.. The man then said.. "The disguise isn´t working" then the man continued and asked, "Can I ask you a question?" Elder Bednar said yes.. He said, I came to the store to answer your question. I need nails but that isn´t why I came to the store.. I came to answer this question.
He just kept saying.. the Lord works in his church.. One by One.. like said in 3 Nephi 17:21, 3 Nephi 28:1 and 3 Nephi 11:15. Remember that when you are asked to help someone in your calling.. the Lord works one by one! For us as missionaries.. I think a lot of the time we just get caught up in the motions and don´t take a moment to think about why we are in the place we are in or why we are in the situation that we are in and now I am going to take that moment to think about.. I really feel that it will help us as missionaries fulfill our call to serve!
He also talked a lot about agency.. and it is interesting because there is a scripture that really has caught my attention that is found in Doctrine and Covenants 58:28. It really hit me hard during a charla when we were talking about the plan of happiness with a progressing member.. "For the power is in them, wherein they are agents unto themselves.".. I love it. It has gone perfectly with what we have been learning from Elder Bednar.. the power is in us and we are agents to act and not objects to be acted upon. I took the chance to study agency more too after the YSA transmission and I had a remarkable study in Moses 7. Agency is awesome, check it out. We really don´t have the agency to choose between good and bad after making covenants and you can find it in the scripture. Just think about this question.. "Why do we have agency?" If you remember from a few weeks ago.. the doctrine always answers the question "Why?".. so go find the doctrine!
This week in the area was great! After such a spiritual week full of Elder Bednar we topped it off with a baptism on Saturday. Maikel is such a sweet kid.. right after being baptized and changed into his clothes again he had the opportunity to share his testimony. He couldn't finish it without just breaking down, we are excited for him. He will get the priesthood next week and we couldn't be happier! Church didn't quite go as we would have liked but we were able to help one investigator come.. we went an picked up Margarita and about 2 or 3 hours after church finished she sent us a text telling us that she has a friend that wants to go to church and change her life. We were able to meet her last night and it was awesome, so much potential in her friend. Her name is Monica and has 3 kids. References from investigators are amazing and now they both have a friend to walk with to church because they live right by each other!
Love, Elder Taylor Abel.. an agent ready to act!
Maikel and his momma and little bro. His little bro is the cutest.. His name is Matias!
Us and Maikel.. cutie huh?
Working hard and sharing the plan of HAPPINESS!
This week was pretty awesome.. we worked hard. Last week we had 4 investigators in the church and so we didn't want to settle for less so we set up everything the best that we could and we were waiting on potentially 6 investigators in church.. Sunday came around and unfortunately we only had one. However we did all that we could to help them come, we just have a higher hope for next Sunday. Just gotta keep going right.. can't back down or give up! Things with Elder Emrich are great, he is such a good companion and I am super grateful for him. There is just so much good here in Ceibal, we have been finding some good part member families and that has honestly made the difference. I now know what they were talking about in the worldwide conference when they said that the part member families are gold mines.. so true.
We believe that we felt true sadness on Sunday as well.. we left early from the house to go and pick up Lauro, Natalia and their children. I had my camera in hand and I was so excited to get there and begin to take pictures of all the kids as they were ready to go to church.. we got there and they were asleep. We returned to church and after the first hour we headed back and we talked with a few kids.. we actually saw 2 of them in the street going on a little errand for their parents so we knew that they were up.. we went with lots of hope to still be able to help them go to church.. we talked to the kids outside and we told them to call their parents and tell them that we are here.. they went in and came back out after a couple of minutes and told us that they were still sleeping.. We just turned around and walked away with a saddened heart. It is so sad that they are stopping the progression of their kids, not to mention their own progression. Sometimes I just don't understand. Last week we had a fullness of joy and this week.. it was destroyed. Better hope for next time.
Really, this week I think that I was able to grow quite a bit in my knowledge of the scriptures. I was reading the counsel that Alma gives his boys and it just clicked with me when I was reading Alma 36 that the Book of Mormon is full of doctrines, principles. It was awesome and now it just makes sense and I have a stronger desire to study each day. The Book of Mormon is such a blessing, I am learning lots more as I find principles and doctrines. I love it! Keep reading!
We only had 68 in church this past week.. we had 90 the week before .. dropped lots and we aren't sure why. We think that it was carnival. We definitely have to work on the attendance this week.. trying to get as many people we can to come to church. We are going to set up Saturday so that we can make a stop by all of our progressing members and our investigators. We are excited for our investigator Maikel to be baptized this Saturday and we can't wait for Friday to be with Elder Bednar. Going to be a great week!
We go hard through the heat, the rain... just to have people receive the happiness that we have..... so that they can be together with their families forever!
Things here in Ceibal have been going really well. We had some really good experiences this last week and we were able to see the Lord`s hand as we worked in His vineyard. The experience that I would like to share with you comes from Friday night and we had set up a charla with an investigator and his less active wife.. (we have been finding a lot of people like them.. where one is a member and the other is interested in our message) anyways.. they weren't there. We thought for a second on where we could go. We both decided on Lauro and Natalia (Natalia is the member here and I met here in Obelisco because her parents all served us over there.. now she lives in Ceibal.. coincidence.. I think not Ü Because we missed the charla with them on Wednesday due to a youth activity.. (another crazy story for another time!) The charla was awesome and it went so well with what we learned about in concilio (The meeting with President Smith and the other zone leaders). We got talking about prayer and we began to talk about why it is important to pray and Elder Emrich can in with a sweet message and the doctrine of why we pray.. 2 Nephi 32:8-9. We then talked about it and committed him to pray and as he said yes.. I had the biggest impression to invite them to be baptized. I wasn't sure if he would say yes because he is one of those guys who told us that we just wants to take it slow.. step by step. However, I couldn't deny the impression and so we invited him to be baptized. He said yes! and then we talked about their relationship status.. they aren't married however Lauro would like to be married because he has 7 kids (other marriage) and needs a wife to help him so we invited Natalia to pray about what the Lord would like her to do and she said she would. It was such a Spirit guided lesson and helped us realize that the most important thing in the charla is that we follow and listen to the Spirit.
Okay.. so you may be wondering why I bolded the word why.. Read the talk below. It is by Elder Bednar and he talks about Doctrines, Principles and Applications. The question why is answered by the doctrine. The question what is answered by principles and the question how is answered by the applications. Check it out.. super good talk. We have been studying it because Elder Bednar comes the 26th of February! So stoked.. really though study it!
This Saturday we had a training from the area presidency for the ward council and the missionaries to talk about the plan for 2016 here in South America South. An Elder Johnson before we started asked if he could talk to me afterwards. The meeting finished up and it was awesome.. we then went and told Elder Johnson that it would be a good time to talk now if he would like. I was thinking that he was going to ask for advice or something.. no, he had some things he wanted to tell us.. well me more than anything. He told me that he was feeling really stressed out and that we were only living by the letter of the law and not by the Spirit of the law. At first I was kind of bugged because he has no idea how it is to be a zone leader.. when I got to Salto again there was very little obedience and so we began to help the zone by making sure that they were where they were supposed to be when they were supposed to be there. We have only been together as a zone once and so I was just thinking that he was just judging off that one experience. However, as he kept telling us what was going on I think that Spirit was trying to tell me that I needed to change. When I was with Orihuela I felt a lot of pressure because he was always trying to push power and authority on me and I had to be a little tougher or he would call me out on it. We went and had a little charla after the meeting with Elder Johnson, and I was just so mad. I wasn't mad at him.. I wasn't made at Orihuela.. I wasn't mad at anyone but myself. We got home and said our prayer to end the day and I went right to the shower. I just stood there in the shower with the coldest water I could have pouring down on me. I didn't know what do to and I felt that I needed to change. I needed to be the old Elder Abel.. the one before I was with Orihuela. I turned off the water and just stood there thinking. I put some clothes on and went right to the paper where it talks about the responsibilities as zone leader.. that led me to another spot and as I was there all I could think of was how I needed to be more like Christ. 3 Nephi 27:27 came to mind.. "Even as I am." That is when the change of heart came in.. I took an hour searching on how to be more like Christ. I decided that for the next little bit I am going to study the Christ like attributes and try to develop them more. I could definitely feel the guidance of the Spirit as I was in the process. Maybe it was a little soon for Elder Johnson to jump the gun on me .. however, that doesn't matter anymore. He gave me the chance to change and I will thank him for that on Tuesday when I see him. Change is good.. repentance is a miracle and I thank our Heavenly Father daily for sending His Only begotten son to atone for us. I invite you all to take a step back.. take a look in the mirror and see where you can change and how you can be better. It can be hard at times.. but I know that change is needed to be more like our Savior and Redeemer.
Well family, I would just like you all to know how much I love you! You guys are my favorite. I thank my lucky stars every day for you all. I am such a blessed missionary and I am so grateful for the blessings that God has given us as a family! God is great! I hope that you all have a wonderful week! Until next.. just keep on smiling!


From Last Placing To Fourth: Meet The Girls's Floorball Team That Never Gives Up!
From Last Placing To Fourth: Meet The Girls's Floorball Team That Never Gives Up!
Floorball was introduced to Singapore in the 90s by Mr Stefan Dahlgren. It is a sport that requires many elements and techniques of running. Floorball and Hockey have a lot of similarities and people often mistake one for the other.
Every year, there will be a Polytechnic-Institute of Technical Education (POL-ITE) Games, just like the name itself, it is a competition where all Polytechnics including joint ITE go against one another to claim the throne.
In 2015, the Singapore Polytechnic girls Floorball team came in the last placing after a tough fight against all the other Polytechnic and ITE teams. With new tactics, a change of how things are usually done and few new sets of players, the 2016 Singapore Polytechnic girls floorball team achieved fourth placing.
RS: Introduce yourselves to the running community!
SP Floorball Girls Team: Hi runners! We are from team SP Floorball and we are a team of 20 players. We are glad and it is a great pleasure to be sharing about our school Floorball team with you here.
RS: What are the key attributes that a player needs to be able to join the Singapore Polytechnic Floorball team?
SP Floorball Girls Team: Everyone may think that having the skills is the key attribute into getting into the team, well we agree on that too but there are other attributes that are even more important than just skills. To us, skills can be learned during training but what is more important is having the commitment and the willingness to learn.
Without these two key attributes and if we just based it on skills, we feel that the team would not be a team but would be an individual "team" instead. Without commitment, it would be hard to get the whole team together during training and in the end, the team would lack chemistry and understanding between one another. Without the willingness to learn, the player and the team would never improve and we would forever be stagnant.
Also read: Meet Bevan Colless: An Ardent Triathlete and Physiotherapist Committed to Solving Runner Injury Mysteries!
RS: So, can you tell us how do you do your pieces of training?
SP Floorball Girls Team: Of course we would love to! Well since the point of time when the team's basic skills weren't really there, our coach decided to focus more on working on our basic skills before proceeding on to other things. No doubt there were people who learned a bit slower than the others but it wasn't a problem for us. Those that learned faster would teach the slower ones so that everyone will end up at the same pace and learning the same thing together.
We have various real game situation drills and have game time against the boys' team to allow us to put the drills into a real game situation and it also helps us to be stronger since Floorball is a contact sport, we do not want to be a pushover to the other schools.
We also do various kinds of Physical Training (PT)! From running on our own and clocking our own timing to running at the stadium with the boys' team to running uphill at different parks (e.g. Kent Ridge Park and etc) and finally kayaking as a team. We sure do a lot of things!
RS: How did you manage to gel up the team?
SP Floorball Girls Team: Well, other than just doing drills to understand a real game situation and doing PT, teamwork and chemistry between players is definitely important. With that, the leaders came up with an idea and decided to have a team training trip to Malaysia to have exposure against other overseas teams and bond the team more. We did various things during our training trip to Penang! From going against the Malaysian teams to hiking in the jungle to fishing to sightseeing to playing laser tag as a team to barbecuing at monkey beach and lastly have our appreciation night.
It was a great training trip! It definitely helped to bond all of us more and we felt even more excited to train when we were back from the training trip though all of us had post trip syndrome.
RS: Can you also tell us how did you guys manage to bounce back from the last placing to fourth?
SP Floorball Girls Team: We definitely know that compared to the other teams, we are falling behind in terms of speed and skills but that doesn't make us the weaker team. Whereas we compensate the other things with things that most of the other teams don't do - like we give constant encouragement to our teammates and if one feels like giving up, we'll push one another to give support and comfort them.
Through this, we realise how much a team can be like a family and we definitely did better each game with everyone always encouraging one another. We may not have been in the top 3 but coming from the last placing to the fourth is still a great achievement for us.
RS: What are some of the greatest challenges the team has faced in this journey?
SP Floorball Girls Team: We think that the greatest challenge that we as a team are facing on this journey and all year round is being able to keep the team together and have the chemistry to play with one another. Everyone must be able to adapt and understand each others' playing styles in order to be able to play well together on court.
Also read: She became Diabetic at 31 years old. But that's just the start of her run story.
The Singapore Polytechnic girls team will go into action once again in October with a few new sets of players!


Check out our extra-curricular activities . We offer an experience for the body, mind, and soul.
Come and be a part of an education that prepares for Eternity. Apply today!
WELCOME TO KILLEEN ADVENTIST JUNIOR ACADEMY!
Welcome to a glimpse of our wonderful school! Here at KAJA, we are committed to providing a quality education in a Christ-filled environment for Pre-K3 through Ninth grade.
Our school is part of the worldwide Seventh-day Adventist School System. The Seventh-day Adventist educational system includes elementary schools, high schools, colleges and universities in countries around the globe.


Another feature from the Jamaica Biennial 2017 archives.
Di-Andre Caprice Davis was born in Kingston, Jamaica, and is a self-described experimental artist. In 2016, she completed an artist's residency at Bluecoat, a contemporary arts centre in Liverpool, England. Her work has been featured in a number of art shows including Jamaica Biennial 2014, Young Talent 2015, Digital (2016) and Kingston, Part 1: The City and Art (2016) at the National Gallery of Jamaica. Additionally, it was featured in Jamaican Pulse: Art and Politics from Jamaica and the Diaspora, which was held in 2016 at the Royal West of England Academy in Bristol, United Kingdom. Davis has been inspired by the relationship between mathematics, science and technology, and how these can be manipulated to inform how the human brain perceives, processes and interprets visual imagery. She is based in Kingston.
Di-Andre Caprice Davis was born in Kingston, Jamaica. She is a self-described "intuitive experimental artist" exploring new media technologies. Notable exhibitions include the National Gallery of Jamaica's Jamaica Biennial 2014 as well as Trajectories (2014), which was hosted by multi-national law firm, Myers Fletcher and Gordon. She also participated in the exhibition Canopy Guild which was organized by New Local Space (NLS) also in the same year. Most recently, she was a selected exhibitor in the NGJ's Young Talent 2015 exhibition. She lives and works in Kingston.
Di-Andre Caprice Davis was born in 1986, Kingston, Jamaica. She is a self-described visual artist who is experimenting with new media technologies. She works and lives in Kingston.
In my work, I combined a passion for digital aesthetic with furthering the exposure and understanding of how technology has affected our world. Although the images are highly personal representations of my dreams, they are abstract enough and open enough to allow individual interpretation. I have used animation techniques to show the power of artistic image manipulation; turning still images into hypnotic GIF art. I prefer to collage and compose several looping actions emphasizing the motions that mimic bodily rhythm. It is like an adventure in a second life exploring its outer limits with digital imaging tools.


text:
<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;

/**
 * @var yii\web\View $this
 * @var app\models\CommentModel $model
 * @var yii\widgets\ActiveForm $form
 */
?>

    <?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'Id_Comment')->textInput() ?>

    <?= $form->field($model, 'Id_User')->textInput() ?>

    <?= $form->field($model, 'Id_Goods')->textInput() ?>

    <?= $form->field($model, 'Text')->textarea(['rows' => 6]) ?>

        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>

    <?php ActiveForm::end(); ?>

redpajama_set_name: RedPajamaGithub


Does anyone have a great videographer that they would recommend and also be willing to share samples of their work or their own video from them? I reached out to Elite already based on some recommendations but they aren't taking new bookings at this point.
What is your wedding date? UGH! I'm hoping Elite is still available for mine. Although I'm still not sold on videography. I have a few other co names I will send you. My wedding is in Montego Bay also. What venue are you using?
There is a thread also on here with many photo/video suggestions.
I'm getting married at Iberostar Rose Hall Suites on November 16, 2013. They told me "we are not taking any bookings after August of this year. We are somewhat booked for the year and reevaluating if we are able to accept more bookings without the compromising quality of our product."
However, I was a bit on the fence about them anyway because they are quite expensive and I know I'll only see the wedding video 2-3 times.
They're good and less than Elite.
Just wanted to make you aware of an issue I am having with a vendor that was referred to me through word of mouth on this site. I used Robert Dunkley and DVS video for my wedding in June. He was a pleasure to work with before and during the wedding, However I have not heard from him since my wedding day, and he is not answering any of my calls or emails. I have also been hearing that he is doing the same to other brides as well. I am pretty sure that he took my money and ran. I have even gone as far as contacting him under a fake email claiming to be a bride trying to book his services, he got back to me right away and was trying to have me book him. Once I confronted him and told him who I was he dropped all communication again. I am heartbroken over this issue because not only did I lose a big chunk of money but I also lost alot of memories that he captured,. I wanted to warn you all so you do not have to go through the same thing I am dealing with.


The designer or other owner of an original design of a useful article which makes the article attractive or distinctive in appearance to the purchasing or using public may secure the protection provided by this chapter upon complying with and subject to this chapter.
The design of a vessel hull, deck, or combination of a hull and deck, including a plug or mold, is subject to protection under this chapter, notwithstanding section 1302(4).
Department of Defense rights in a registered design under this chapter, including the right to build to such registered design, shall be determined solely by operation of section 2320 of title 10 or by the instrument under which the design was developed for the United States Government.
A design is "original" if it is the result of the designer's creative endeavor that provides a distinguishable variation over prior work pertaining to similar articles which is more than merely trivial and has not been copied from another source.
A "useful article" is a vessel hull or deck, including a plug or mold, which in normal use has an intrinsic utilitarian function that is not merely to portray the appearance of the article or to convey information. An article which normally is part of a useful article shall be deemed to be a useful article.
that is designed and capable of carrying and transporting one or more passengers.
A "hull" is the exterior frame or body of a vessel, exclusive of the deck, superstructure, masts, sails, yards, rigging, hardware, fixtures, and other attachments.
A "plug" means a device or model used to make a mold for the purpose of exact duplication, regardless of whether the device or model has an intrinsic utilitarian function that is not only to portray the appearance of the product or to convey information.
A "mold" means a matrix or form in which a substance for material is used, regardless of whether the matrix or form has an intrinsic utilitarian function that is not only to portray the appearance of the product or to convey information.
A "deck" is the horizontal surface of a vessel that covers the hull, including exterior cabin and cockpit surfaces, and exclusive of masts, sails, yards, rigging, hardware, fixtures, and other attachments.
Subsec. (a)(3). Pub. L. 110–434, § 1(c), added par. (3).
Subsec. (b)(2). Pub. L. 110–434, § 1(d)(1), substituted "vessel hull or deck, including a plug or mold," for "vessel hull, including a plug or mold,".
Subsec. (b)(7). Pub. L. 110–434, § 1(d)(3), added par. (7).
Not later than November 1, 2003, the Register of Copyrights and the Under Secretary of Commerce for Intellectual Property and Director of the United States Patent and Trademark Office shall submit to the Committees on the Judiciary of the Senate and the House of Representatives a joint report evaluating the effect of the amendments made by this title [enacting this chapter and amending sections 1338, 1400, and 1498 of Title 28, Judiciary and Judicial Procedure].


text:
Q: How to handle browser back button using javascript? In my application, First I need to select an option and press next button.
Then I click on browser provided back button. That option should be selected when I come back to that page.
How can we do this with javascript?

A: You need to use Jquery/JS Session object to store your data. In your scenario whenever you select the option just update your storage object localStorage.setItem("optionVal", "test");
so when you go next and comeback to using back button just check if the optionVal is not null and has some value if it has some value just bind it with the drop down DOM. To check/get data you need to use localStorage.getItem("lastname"); since you have not provided I can just tell you the approach. Here are some links that might help:
http://www.w3schools.com/html/html5_webstorage.asp

A: You can create a Wizard for this process like payment option in e-commence site
http://bootsnipp.com/snippets/featured/form-wizard-and-validation
http://formvalidation.io/examples/bootstrap-wizard/
if you send the whole scenario then may me help with complete code


text:
Q: How to copy string without allocating memory - C I just started in C and this is a beginner question. But is there any way to copy a string without allocating memory beforehand?
I want to reproduce the strcopy function inbuilt in C with the same structure (char *strcpy(char *src, char *dest);). I got it to work with declaring the char pointer in the function itself and then returning it. It works also with the original structure as strcpy if I allocate the memory beforehand.
#include <stdlib.h>

char *strcopy(char *src, char *dest)
{
    int i = 0;
    while (src[i] != '\0')
    {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0';
    return (dest);
}

int str_size(char *str)
{
    int i = 0;
    while (str[i] != '\0')
        i++;
    return (i);
}

int main(int argc, char **argv)
{
    char *src = argv[1];
    char *dest = (char*)malloc(str_size(src));
    dest = strcopy(src, dest);
    return (0);
}

So is it somehow possible to copy a string without allocating memory beforehand and without changing my function-head?

A: If you want to avoid dynamic allocation, use static allocation:
#include <stdlib.h>
#include <string.h>

#define BUFFER_SIZE        1024

char *strcopy(char *src, char *dest)
{
    int i = 0;
    while (src[i] != '\0')
    {
        dest[i] = src[i];
        i++;
    }
    dest[i] = '\0';
    return (dest);
}

int str_size(char *str)
{
    int i = 0;
    while (str[i] != '\0')
        i++;
    return (i);
}

int main(int argc, char **argv)
{
    char *src = argv[1];
    char dest[BUFFER_SIZE];

    if(strlen(src) >= BUFFER_SIZE){
        return -1;
    }
    else{
        dest = strcopy(src, dest);
    }

    return 0;
}


"Crocodile" is an exploration of murder and memory. Shazia is an insurance investigator assigned to the case about a driving accident. Her main investigative tool is a machine called a 'Recaller', which has the ability to record the recalled memories (or "engrams") of witnesses, when the chip is embedded into their temple. By scanning the accident victim's memories of the event, Shazia catched a glimpse of a woman looking out of her hotel window - a potential witness. Shazia tracks down the woman, Mia, and convinces her to use the Recaller in order to help with the case. Mia has a dark past though and cannot adequately suppress her memories. Shazia catches a glimpse of these images, which sets off a brutal crime spree.


Elections, Iowa and Primary Elections.
Use these links to see comic strips about Iowa elections by comic strip.
Caption: What's wrong with you? I'm not sure whom to vote for anymore. I was leaning on Trump … but when he lost that first contest in Iowa, I realized he's not the "always-wins" guy I thought he was. Then I thought, maybe Cruz. He's strong on illegal immigration too. But on the other hand, as Trump said, he's an Anchor Baby. And I hate those. How can you hate a baby? Don't let their pudgy cheeks fool you. Anchor Babies are the worst.
Caption: You want to see me, boss? Yes, minion. Something fishy is going on. Donald Trump lost the Iowa caucuses. That morning, he held an event in "Waterloo, Iowa." It can't be a coincidence. The universe apparently has a sense of irony. No tyrant, demagogue, or would-be despot is safe. I'm going to give you a bag of money. You're going to go to city hall and bribe my lackeys to change the name of our street to something other than "Indicted Ave." Very bad man.
Caption: You look happy. Good day fo' a thug rapper, Big L. But I thought you were depressed. I thought white folks in Iowa voting for Obama filled you with hope. I thought that hope made it impossible for you to go on profiting from black misery and despair. Yeh, but then I remembered black-on-black crime. That ALWAYS gon' be there.


This week we are excited to chat with our next design team duo, Kathryn Whyte and Brittany Davis of Saturday Studio. These two graphic designers joined forces in Charleston, SC, just a year ago. In that year they have built a beautiful, fresh, and modern body of work that we can't get enough of. We are especially in love with their motto: "Do what you love and every day will feel like a Saturday."
Tell me about your paths to becoming designers. How did you decide to join forces and start a design firm together?
We were both graphic design majors in college (Brittany at CCAD in Columbus, Kathryn at Tyler School of Art in Philly), and met in Charleston in 2013. In getting to know each other we realized we have similar design histories. We both did a lot of freelancing after college, had both worked as in-house designers for different food & bev businesses, and were working full-time at the same design firm when we met. The next step seemed obvious—let's team up and do things our own way!
Word of mouth and referrals from friends were helpful when we started (and still are)—people were really supportive of our new venture. Getting our work out on social media was key, as well—especially Instagram and Pinterest.
Stay organized! It's much easier to focus on a task (design deadline, preparing a proposal, etc), when we plan, schedule, and delegate. It limits distractions and second-guessing.
What has been your greatest struggle as a team so far?
We're still a pretty new studio (we've been Saturday for a little over a year), so being patient with ourselves and the process of getting our name out there can be a struggle. We have a lot of skills and experience under our belts, but you have to start at the beginning with a new business—we're always working toward realizing the potential we see for Saturday Studio.
What is your favorite thing about working as a team?
We always push each other to be better. We have a lot in common, but we have different strengths—both creatively and in business. That balance keeps things from getting stale, and helps us look beyond just settling for the first idea we come up with.
"We always push each other to be better. We have a lot in common, but we have different strengths—both creatively and in business. That balance keeps things from getting stale, and helps us look beyond just settling for the first idea we come up with."
Do you have any advice for handling communication as a partnership?
Be honest, but be constructive. We're sure a lot of partnerships start out as friendships, and it can be a challenging transition. We both have our stubborn moments, and both like to be right (who doesn't?), but knowing when to compromise is important. It comes down to respecting each other's opinions and feelings.
"Knowing when to compromise is important. It comes down to respecting each other's opinions and feelings."
Keep working! We keep our website as up-to-date as possible, and stay active on social media. Maintaining good relationships with our current clients goes a long way toward attracting new ones—happy clients are the best way to gauge if we're doing things right!
In addition to client work, we try to make time for self-authored projects. One of our favorites is Talihina Cold Brew. We wanted to brand and design packaging for cold brew coffee, but we didn't have a coffee client, so we made one up! It was an opportunity for us to explore branding, typography, printing, and photography, and in the end was another project that could attract potential clients.
The business aspect of our job is probably the least interesting to us! It's a huge component, though, so we make it a priority. Again, organization is key. And knowing when to ask for or hire help.
Since you are your own bosses, do you have any advice for maintaining a work-life balance?
When you work for someone else you can go home at the end of the day and not think about work again until the next morning. That definitely changes when you own your own business, and it wasn't something we took lightly when we started. We're almost always thinking about projects or ideas on some level, but we're ok with that—the important thing for us is to take a break from the desk, and from executing the ideas. Making our own schedule is a big perk, and works to our advantage when we need a break, whether it's a whole day or just an hour to get some doughnuts.


Castor Gallery is pleased to announce Andy Gershon, Moon Portraits, an exhibition of 9 new screen printed compositions and three photographs by New York based artist, Andy Gershon. This exhibition will be the artist's second solo exhibition with Castor Gallery.
Moon Portraits is a new body of photographic work based on Gershon's images of the moon, captured by his telescope and transferred to silkscreens, creating immersive compositions of celestial moments. Gershon's screen-prints offer a reimagined imagery of the moon's phases; its shadows and brightnesses taking on novel, vibrant hues that reverberate vividly.
In Moon Portraits, Gershon augments the subjects into colorful combinations that act like gravitational forces, turning each print into a magnetic focal point that reimagines a familiar feature, seeing it anew, unique and numinous. Gershon's documentation and recomposition of elemental forces render these moments as markers, contemplating permanence and finitude.


text:
Q: Shipping Python interpreter with C++ project Problem description:
I have a Visual Studio 2022 C++ project that involves live python script interpretation. Naturally, I need a valid Python installation to do this. However, I intend to ship this as an application, so I'd like to have a localized Python installation, to avoid consumer-side installation, but that doesn't interfere with Windows' Environmental Variables.
What I've done:
I included "Python.h" from my Python installation's "include" folder, I've added its "libs" folder to "Additional Library Directories", I've added "python311.lib" to "Additional Dependencies", and I remembered to copy Python311.dll to my project's Solution Directory.
Everything is linked properly.
However, when I run compile and execute my program, I receive a long list of errors, which are as follows:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = 'python'
  isolated = 0
  environment = 1
  user site = 1
  safe_path = 0
  import site = 1
  is in build tree = 0
  stdlib dir = 'C:\Coding Projects\MaSGE\Lib'
  sys._base_executable = 'C:\\Coding Projects\\MaSGE\\x64\\Release\\MaSGE.exe'
  sys.base_prefix = 'C:\\Coding Projects\\MaSGE'
  sys.base_exec_prefix = 'C:\\Coding Projects\\MaSGE'
  sys.platlibdir = 'DLLs'
  sys.executable = 'C:\\Coding Projects\\MaSGE\\x64\\Release\\MaSGE.exe'
  sys.prefix = 'C:\\Coding Projects\\MaSGE'
  sys.exec_prefix = 'C:\\Coding Projects\\MaSGE'
  sys.path = [
    'C:\\Coding Projects\\MaSGE\\python311.zip',
    'C:\\Coding Projects\\MaSGE\\Lib',
    'C:\\Coding Projects\\MaSGE\\DLLs',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

Current thread 0x0000399c (most recent call first):
  <no Python frame>

Of particular interest to me are the first two lines, plus the "PYTHONHOME = (not set)" and "PYTHONPATH = (not set)" on lines 4 and 5 which, to my knowledge, are Environmental Variables.
This brings me to the crux of the problem:
Is there some way in which I can install a portable Python interpreter to a specific folder to circumvent the issue with Environmental Variables?

A: To embed python into your application, you need two things:
Initialize isolated python
This will not let user's system interfere with your app.
https://docs.python.org/3/c-api/init_config.html#init-isolated-conf
Deploy python stuff with your application
On windows, you need:

*

*Python DLL (python311.dll).

*Python standard library.
Either copy Lib folder from python installation, or zip its contents and name it after python dll (e.g. python311.zip), or use the same zip from Windows embeddable package)

*Python modules (DLLs directory)

On linux, situation is slightly different:

*

*Python shared library (libpython311.so)

*Python standard library (Either copy lib/python311/ folder from python installation, or zip its contents except lib-dynload folder and name it lib/python311.zip)

*(If using zipped standard library) Copy lib-dynload to lib/python3.11/lib-dynload
Of course, you have to replace 311 and 3.11 with your version of python.


British Airways and Iberia have confirmed today that they have reached a New Distribution Capability (NDC) related Agreement with Hogg Robinson Group.
Under this initial Agreement, bookings made by Hogg Robinson Group in key European markets for British Airways and Iberia marketed flights will not be subject to the Distribution Technology Charge of €9.50 per fare component, which was announced in May of this year with effect from November 1, 2017.
The agreement applies to all Hogg Robinson Group owned operations in Europe except UK, Italy and Switzerland.
Bill Brindle, Chief Operating Officer of Hogg Robinson Group, said: "We confidently predicted big changes were coming in airline distribution and have been engaging on this topic with key players such as British Airways and Iberia for some time now. Hogg Robinson is at the forefront of change, and as first-mover among global TMCs, we are ideally positioned to take advantage of the opportunities that new travel distribution will bring for both our business and for our corporate customers.
For any media enquiries, please contact the British Airways press office on press.office@ba.com, tel: 020 8738 5100.