Increasing concerns about the negative impact of pollution on the health of citizens is driving accelerated deployment of air quality monitoring stations and a wider range of short term and long-term response modes, ranging from symptom fighting measures to ban polluting vehicles, emission zones, closed loop approaches rerouting traffic around pollution hotspots, and a push towards vehicle electrification. Key technology trends include mobile, portable, and wearable air quality sensors, air quality monitoring as a service business models, AI-based predictive analytics, and air quality data marketplaces, websites and applications.
This report includes market trends, case studies, vendor profiles, and forecasts. It also provides recommendations for technology vendors and city governments.


Homepage»Khaana»Garam Mausam Aur Chai Point Ki Thandi Chai, Aye!
When the weather is hot and humid and you still want some chai, people call you crazy. But as Chai Point's tag line goes — India Runs on Chai, and so do we!
So while we were strolling around in Connaught Place, we decided to sip on some chai, but thandi thandi and walked into Chai Point (it's their largest outlet here). Just as we entered, a warm greeting from the counter uplifted our mood instantly. This two level outlet is spacious and aptly crowded with a mix of people (from corporates to collegiates) enjoying their cup of tea.
Occupying a place near the front glass façade, we browsed through the menu and decided to go for Imli Jaljeera and Peach Iced Tea (which probably was the best decision ever).
The thandi chai options at Chai Point are a boon!
As it arrived, the very sip was refreshing to the bones. The Peach Thandi Chai was brewed to perfection retaining its flavour while mixed with the right amount of fruitiness. Cousin Imli Jaljeera was even better, with a tangy chatpata flavour that took us back to the childhood chuski (remember?). The tea flavour was subtle, but very much there. So while the flavour soothed our palate, the tea in it kicked our spirits up.
Chai Point uses the juice of real fruits (and not canned ones) with tea decoctions in calculated amounts to bring about such rich flavours in their iced teas. No wonder it tastes so yum!
We complimented this cold awesomeness with their Egg Puff and Schezwan Noodles Samosa. Sach mein, these are the two things you would not want to miss! While the Egg puff was baked just right with a mildly spicy filling, the Samosa took the cake. The noodles prepared in Chinese style as the filling gave it an international twist. Kehne ko toh we had chai and samosa, but with a zing (swag samajh lo).
By the way, the thandi chai comes in pretty glass bottles that you are free to take home (ghar ke fridge mein jayegi ab toh). They avoid giving straws in order to reduce plastic consumption, but you can ask for one if required. We didn't take any as there was a childish happywali feeling slurping directly from the bottle.
When we finally decided to step out of here, we had tucked in our bottles and bought in their merchandise too. Yaad rahega na ye time, that's why (already missing it).


Allegany County's premier in-patient rehabilitation center. Wellsville Manor Care Center is a 120 Bed Short Term Sub-Acute Rehabilitation and Long Term Care Facility nestled in the hills of Allegany County. Wellsville Manor has been serving the community for over 28 years.
Choosing a Rehabilitation Facility or Nursing Home can be a stressful and confusing time. We want to help make this time as easy as possible for residents and their families. We encourage you to stop in and take a tour and talk with our friendly and caring staff. Our Admissions Coordinator will be happy to show you around and answer any questions you might have and our Social Workers are available to discuss the transition and information you'll need every step of the way during the placement process. Whether you are in need of post-acute short term rehabilitation or long term compassionate care, we are here to offer you the best of both. Wellsville Manor offers rehab 7 days a week, up to 3 hours per day, and is proud to be one of the highest rated local facilities by the Centers for Medicare and Medicaid Services (CMS). When choosing a rehabilitation center, you have the right to choose a facility that best meets your needs. Wellsville Manor's rehabilitation department will develop a individualized plan of care to help you receive the most rehab to return home quickly and safely.
What are people saying about Wellsville Manor?
Did you know that Wellsville Manor is the Highest Ranked Nursing Facility in the Area?


text:
Solheim has no role in SL affairs-Mangala
16th June 2015 Karu LATEST UPDATES, SRI LANKA NEWS, Uncategorized, WORLD NEWS 0
Foreign Affairs Minister Mangala Samaraweera said today that former Norwegian peace envoy Erik Solheim had absolutely no role to play in Sri Lankan affairs, but that his views on engagement with the diaspora, in the context of his long experience, were of value.
In response to a Daily Mirror story headlined 'Erik Solheim back in SL affairs' in its Monday issue, he said, "Mr. Erik Solheim was present very briefly on the first day of the discussions in London, and this was only to share his past experiences in engaging the Sri Lankan diaspora. This was in his personal capacity and not as a representative of the Norwegian government.
"Mr. Solheim has absolutely no role at all in Sri Lankan affairs or in any matter pertaining to Sri Lanka and will not have any role in future either, in any form or capacity. But his views on engagement with the diaspora, in the context of his long experience, were of value." – See more at: http://www.dailymirror.lk/76401/solheim-has-no-role-in-sl-affairs-mangala#sthash.U8k1T2Of.dpuf
Zeid wants mechanisms in place by September
US hails fight against corruption in Lanka

redpajama_set_name: RedPajamaCommonCrawl


text:
Wyszukujesz frazę ""Computer Security"" wg kryterium: Temat
144775 Zasoby elektroniczne
39657 Business Source Ultimate
34003 Complementary Index
24554 Academic Search Ultimate
23589 MasterFILE Premier
7765 MEDLINE
3434 OAIster
2071 Scopus®
1864 Library, Information Science & Technology Abstracts
50187 Magazyny
3416 Raporty
3298 Zasoby elektroniczne
2004 Materiały konferencyjne
1176 Recenzje
470 Książki
109413 computer security
23244 data protection
14232 computer software
13504 computer network security
11429 security systems
10389 information technology
8959 computer crimes
7759 firewalls (computer security)
12159 idg communications, inc.
8730 quinstreet, inc.
8307 united business media
6878 techtarget, inc.
6005 elsevier b.v.
5275 ieee
3134 springer nature
2828 dow jones & company inc
6688 eweek
5627 computer weekly
5438 computerworld
4122 network world
2700 informationweek
2637 infoworld
2468 new york times
2177 wall street journal - eastern edition
140287 english
201 chinese
81 spanish
31 hungarian
Wyświetlanie 1-20 z 144775
Safe contact tracing for COVID-19: A method without privacy breach using functional encryption techniques based-on spatio-temporal trajectory data.
Kim W; Department of Computer Science & Engineering, Korea University, Seoul, Republic of Korea.
Lee H; Department of Computer Science & Engineering, Korea University, Seoul, Republic of Korea.
Chung YD; Department of Computer Science & Engineering, Korea University, Seoul, Republic of Korea.
Access to Information*
COVID-19*/epidemiology
COVID-19*/transmission
Computer Security*
Contact Tracing*
Pandemics*
SARS-CoV-2*
Humans ; Republic of Korea/epidemiology
Certification information on trustworthy digital repository websites: A content analysis.
Donaldson DR; Department of Information and Library Science, Luddy School of Informatics, Computing, and Engineering, Indiana University, Bloomington, Indiana, United States of America.
Certification*
Internet*
Federal hospital data system falters at tracking pandemic.
Piller C
Science (New York, N.Y.) [Science] 2020 Dec 04; Vol. 370 (6521), pp. 1148-1149.
Patient Identification Systems*
COVID-19/*epidemiology
Humans ; Information Dissemination ; United States
Periodyk
Integrating Healthcare Data for Enhanced Citizen-Centred Care and Analytics.
Bowles JKF; School of Computer Science, University of St Andrews, UK.
Mendoza-Santana J; School of Computer Science, University of St Andrews, UK.
Vermeulen AF; School of Computer Science, University of St Andrews, UK.
Webber T; School of Computer Science, University of St Andrews, UK.
Blackledge E; Sopra Steria, Edinburgh, UK.
Studies in health technology and informatics [Stud Health Technol Inform] 2020 Nov 23; Vol. 275, pp. 17-21.
Data Science*
Delivery of Health Care ; Europe ; Humans ; Privacy
Health Data Privacy: Research Fronts, Hot Topics and Future Directions.
Pool J; The University of Queensland, Brisbane, Australia.
Fatehi F; Monash University, Melbourne, Australia.; Tehran University of Medical Sciences, Tehran, Iran.
Hassandoust F; Auckland University of Technology, Auckland, New Zealand.
Akhlaghpour S; The University of Queensland, Brisbane, Australia.
Studies in health technology and informatics [Stud Health Technol Inform] 2020 Nov 23; Vol. 275, pp. 167-171.
Blockchain ; Delivery of Health Care ; Software
Description of Data Breaches Notifications in France and Lessons Learned for the Healthcare Stakeholders.
Simon M; Université Paris-Est Créteil, Créteil, France.
Looten V; UMRS 1138, Centre de Recherche des Cordeliers, Université de Paris, Paris, France.
Confidentiality*
Disclosure ; France ; Privacy
A new secure image encryption algorithm based on a 5D hyperchaotic map.
Fang D; College of Computer Science, Chongqing University, Chongqing, China.; School of Electronics and Information Engineering, Fuqing Branch of Fujian Normal University, Fuqing, China.
Sun S; School of Electronics and Information Engineering, Fuqing Branch of Fujian Normal University, Fuqing, China.
Image Processing, Computer-Assisted/*methods
Algorithms ; Nonlinear Dynamics
A highly nonlinear substitution-box (S-box) design using action of modular group on a projective line over a finite field.
Siddiqui N; Department of Basic Sciences, University of Engineering and Technology (UET), Taxila, Punjab, Pakistan.
Yousaf F; Department of Basic Sciences, University of Engineering and Technology (UET), Taxila, Punjab, Pakistan.
Murtaza F; Sino-Pak Center for Artificial Intelligence, Pak-Austria Fachhochschule: Institute of Applied Sciences and Technology, Haripur, Khyber Pakthunkhwa (KPK), Pakistan.
Ehatisham-Ul-Haq M; Department of Computer Engineering, University of Engineering and Technology (UET), Taxila, Punjab, Pakistan.
Ashraf MU; Department of Computer Science, University of Management and Technology (UMT), Lahore (Sialkot), Punjab, Pakistan.
Alghamdi AM; Department of Software Engineering, College of Computer Science and Engineering, University of Jeddah, Jeddah, Saudi Arabia.
Alfakeeh AS; Department of Information Systems, Faculty of Computing and Information Technology, King Abdulaziz University, Jeddah, Saudi Arabia.
Algorithms ; Communication ; Nonlinear Dynamics
An effective, secure and efficient tagging method for integrity protection of outsourced data in a public cloud storage.
ALmarwani R; College of Computer Science and Engineering (CCSE), Taibah University, Medina, Saudi Arabia.; Information Management Research Group, The Department of Computer Science, The University of Manchester, Manchester, United Kingdom.
Zhang N; Information Management Research Group, The Department of Computer Science, The University of Manchester, Manchester, United Kingdom.
Garside J; Information Management Research Group, The Department of Computer Science, The University of Manchester, Manchester, United Kingdom.
Cloud Computing*
Outsourced Services*
Algorithms ; Models, Theoretical ; Probability ; Time Factors
Cyber-mitigation: Cybersecurity emergency management.
Straub J; Department of Computer Science North Dakota State University Fargo, North Dakota.
Journal of emergency management (Weston, Mass.) [J Emerg Manag] 2020 Nov-Dec; Vol. 18 (6), pp. 463-473.
Malicious Adversarial Attacks on Medical Image Analysis.
Winter TC; University of Utah Health Sciences, Salt Lake City, UT .
AJR. American journal of roentgenology [AJR Am J Roentgenol] 2020 Nov; Vol. 215 (5), pp. W55.
Letter; Comment
Diagnostic Imaging*
Opinia redakcyjna
Reply to "Malicious Adversarial Attacks on Medical Image Analysis".
Desjardins B; University of Pennsylvania, Philadelphia, PA .
Ritenour ER; Medical University of South Carolina, Charleston, SC.
SCOR: A secure international informatics infrastructure to investigate COVID-19.
Raisaro JL; Data Science Group and Precision Medicine Unit, Lausanne University Hospital, Lausanne, Switzerland.
Marino F; Laboratory for Data Security, EPFL, Lausanne, Switzerland.
Troncoso-Pastoriza J; Laboratory for Data Security, EPFL, Lausanne, Switzerland.
Beau-Lejdstrom R; Institute of Global Health, University of Geneva, Geneva, Switzerland.
Bellazzi R; Department of Electrical, Computer and Biomedical Engineering, University of Pavia, Pavia, Italy.; IRCCS ICS Maugeri, Pavia, Italy.
Murphy R; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Bernstam EV; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.; Division of General Internal Medicine, Department of Internal Medicine, McGovern School of Medicine, UTHealth, Houston, Texas, USA.
Wang H; Department of Emergency Medicine, McGovern School of Medicine, UTHealth, Houston, Texas, USA.
Bucalo M; BIOMERIS srl, Pavia, Italy.
Chen Y; Department of Biostatistics, Epidemiology and Informatics, Perelman School of Medicine, University of Pennsylvania, Philadelphia, Pennsylvania, USA.
Gottlieb A; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Harmanci A; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Kim M; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Kim Y; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Klann J; Laboratory of Computer Science, Massachusetts General Hospital, Boston, Massachusetts, USA.
Klersy C; Biometry and Clinical Epidemiology Service, Fondazione IRCCS Policlinico San Matteo, Pavia, Italy.
Malin BA; Department of Biomedical Informatics, Vanderbilt University Medical Center, Nashville, Tennessee, USA.
Méan M; Department of Internal Medicine, Lausanne University Hospital, Lausanne, Switzerland.
Prasser F; Medical Informatics Group, Berlin Institute of Health, Berlin, Germany.; Charité-Universitätsmedizin Berlin, Berlin, Germany.
Scudeller L; Scientific Direction, Clinical Epidemiology and Biostatistics, Fondazione IRCCS Ca' Grande Ospedale Maggiore Policlinico, Milan, Italy.
Torkamani A; Department of Integrative Structural and Computational Biology, Scripps Research, La Jolla, California, USA.
Vaucher J; Department of Internal Medicine, Lausanne University Hospital, Lausanne, Switzerland.
Puppala M; Department of Systems Medicine and Bioengineering, Houston Methodist Cancer Center, Weill Cornell Medical College, Houston, Texas, USA.
Wong STC; Department of Systems Medicine and Bioengineering, Houston Methodist Cancer Center, Weill Cornell Medical College, Houston, Texas, USA.
Frenkel-Morgenstern M; Cancer Genomics and BioComputing of Complex Diseases laboratory, Azrieli Faculty of Medicine, Bar-Ilan University, Safed, Israel.
Xu H; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Musa BM; Department of Medicine, Africa Center of Excellence in Population Health and Policy, Bayero University, Kano, Nigeria.
Habib AG; Department of Medicine, Africa Center of Excellence in Population Health and Policy, Bayero University, Kano, Nigeria.
Cohen T; Biomedical Informatics and Medical Education, University of Washington, Seattle, Washington, USA.
Wilcox A; Biomedical Informatics and Medical Education, University of Washington, Seattle, Washington, USA.
Salihu HM; Department of Family and Community Medicine, Baylor College of Medicine, Houston, Texas, USA.
Sofia H; National Institutes of Health (NIH)-National Human Genome Research Institute, Bethesda, Maryland, USA.
Jiang X; School of Biomedical Informatics, UTHealth, Houston, Texas, USA.
Hubaux JP; Laboratory for Data Security, EPFL, Lausanne, Switzerland.
Journal of the American Medical Informatics Association : JAMIA [J Am Med Inform Assoc] 2020 Nov 01; Vol. 27 (11), pp. 1721-1726.
Biomedical Research*
Coronavirus Infections*
Information Dissemination*/ethics
Pneumonia, Viral*
COVID-19 ; Humans ; Internationality ; Machine Learning
Software weaknesses in cryptocurrencies create unique challenges in responsible revelations: Responsible Vulnerability Disclosure in Cryptocurrencies.
BÖHME, RAINER
ECKEY, LISA
MOORE, TYLER
NARULA, NEHA
RUFFING, TIM
ZOHAR, AVIV
Communications of the ACM. Oct2020, Vol. 63 Issue 10, p62-71. 10p. 1 Color Photograph, 1 Illustration, 1 Diagram.
Inside Risks: A Holistic View of Future Risks: Almost everything is somehow interrelated with everything else - and that should not surprise us.
Neumann, Peter G.
Communications of the ACM. Oct2020, Vol. 63 Issue 10, p23-27. 5p. 1 Color Photograph.
Cloud Based Evidence Acquisitions in Digital Forensic Education
Barrett, Diane
Information Systems Education Journal, v18 n6 p46-56 Dec 2020. 11 pp.
Recenzowane naukowo :
Deskryptory :
Computer Science Education, Crime, Evidence, Computer Security, Internet, Computers, Expertise, Attitudes
Journal Articles; Reports - Research; Tests/Questionnaires
Kod czasopisma :
Teaching Applications and Implications of Blockchain via Project-Based Learning: A Case Study
Mentzer, Kevin; Frydenberg, Mark; Yates, David J.
Active Learning, Student Projects, College Students, Computer Science Education, Internet, Computer Security, Contracts, Records (Forms), Feedback (Response), Peer Evaluation, Group Activities, Student Research, Research Papers (Students), Research Methodology, Instructional Effectiveness, Information Management
Journal Articles; Reports - Research
Encouraging Lifelong Learning through Tech Explorations
Marquardson, Jim
Lifelong Learning, Technology Uses in Education, Information Systems, Independent Study, College Students, Assignments, Reflection, Feedback (Response), Learning Activities, Computer Security
Rates of Adoption and Outcomes After Firmware Updates for Food and Drug Administration Cybersecurity Safety Advisories.
Saxon LA; Department of Medicine, University of Southern California, Keck School of Medicine, Los Angeles (L.A.S.).
Varma N; Department of Medicine, Cleveland Clinic, OH (N.V.).
Epstein LM; Northwell Health, Manhasset, NY (L.M.E.).
Ganz LI; Heritage Valley Health System, Beaver, PA (L.I.G.).
Epstein AE; Department of Medicine, University of Pennsylvania, Philadelphia (A.E.E.).
Circulation. Arrhythmia and electrophysiology [Circ Arrhythm Electrophysiol] 2020 Aug; Vol. 13 (8), pp. e008364. Date of Electronic Publication: 2020 Jul 06.
Defibrillators, Implantable*/adverse effects
Pacemaker, Artificial*/adverse effects
Software Design*
Aged ; Aged, 80 and over ; Device Approval ; Female ; Humans ; Male ; Middle Aged ; Patient Safety ; Prosthesis Design ; Risk Assessment ; Risk Factors ; United States ; United States Food and Drug Administration
PSPAB: Privacy-preserving average procurement bidding system with double-spending checking.
Li L; College of Cybersecurity, Sichuan University, Chengdu, Sichuan, China.; School of Mathematics and Information Engineering, Chongqing University of Education, Chongqing, China.
Liu J; College of Cybersecurity, Sichuan University, Chengdu, Sichuan, China.
Jia P; College of Cybersecurity, Sichuan University, Chengdu, Sichuan, China.
Zheng R; College of Electronics and Information Engineering, Sichuan University, Chengdu, Sichuan, China.
PloS one [PLoS One] 2020 Oct 29; Vol. 15 (10), pp. e0240548. Date of Electronic Publication: 2020 Oct 29 (Print Publication: 2020).
Commerce/*economics


text:
// Copyright 2011 Cricket Technology
// www.crickettechnology.com
/** @file */
/** @defgroup CkSound CkSound */
/** @{ */

#pragma once
#include "ck/platform.h"
#include "ck/pathtype.h"
#include "ck/attenuationmode.h"
#include <stddef.h>

class CkBank;
class CkMixer;
class CkEffectBus;
class CkCustomStream;

/** A sound (either memory-resident or streamed). */

class CkSound
{
public:
    /** Sets the mixer to which this sound is assigned.
      Setting NULL will assign it to the master mixer. */
    virtual void setMixer(CkMixer*) = 0;

    /** Gets the mixer to which this sound is assigned. */
    virtual CkMixer* getMixer() = 0;

    /** Returns true if the sound is ready.
      Bank sounds are ready immediately after creation; stream sounds may not be. */
    virtual bool isReady() const = 0;

    /** Returns true if an error occurred while creating the sound. */
    virtual bool isFailed() const = 0;

    /** Play the sound. */
    virtual void play() = 0;

    /** Stop the sound. */
    virtual void stop() = 0;

    /** Gets whether the sound is playing. */
    virtual bool isPlaying() const = 0;

    /** Sets whether the sound is paused.
     Note that even if false, the sound will be paused if its mixer or any of its
     mixer's ancestors are paused.*/
    virtual void setPaused(bool) = 0;

    /** Gets whether the sound is paused.
     Note that even if false, the sound will be paused if its mixer or any of its
     mixer's ancestors are paused.*/
    virtual bool isPaused() const = 0;

    /** Returns true if the sound is pauses, its mixer is paused, or any of its
      mixer's ancestors are paused. */
    virtual bool getMixedPauseState() const = 0;

    /** Set the loop start and end.
      Default is to loop over all sample frames.
      EndFrame is defined as one frame after the last frame of the loop.
      Setting endFrame = -1 is equivalent to setting it to getLength().
     @par Android note:
      This has no effect for streams in formats other than .cks or Ogg Vorbis. */
    virtual void setLoop(int startFrame, int endFrame) = 0;

    /** Get the loop start and end.
      Default is to loop over all sample frames.
      EndFrame is defined as one frame after the last frame of the loop.
      Setting endFrame = -1 is equivalent to setting it to getLength().
     @par Android note:
      This has no effect for streams in formats other than .cks or Ogg Vorbis. */
    virtual void getLoop(int& startFrame, int& endFrame) const = 0;

    /** Sets the number of times the sound should loop.
      0 means no looping (play once and then stop).
      1 means it will play twice; 2 means it will play 3 times; etc.
      -1 means it will loop indefinitely until the sound is stopped or releaseLoop() is called. */
    virtual void setLoopCount(int) = 0;

    /** Gets the number of times the sound should loop.
      0 means no looping (play once and then stop).
      1 means it will play twice; 2 means it will play 3 times; etc.
      -1 means it will loop indefinitely until the sound is stopped or releaseLoop() is called. */
    virtual int getLoopCount() const = 0;

    /** Gets the number of the current loop.
      For example, returns 0 if this is the first time playing through this sample;
      returns 1 if it is on its second loop through the sample; etc. */
    virtual int getCurrentLoop() const = 0;

    /** Makes the current loop the last.
      This is useful when you don't know in advance how many times you will
      want to loop; set the loop count to -1, and call releaseLoop() when
      you want it to stop looping and play to the end. */
    virtual void releaseLoop() = 0;

    /** Returns true if releaseLoop() has been called after the last call to play(). */
    virtual bool isLoopReleased() const = 0;

    /** Set the play position in the sound, in sample frames.
      This can be called before playing, to start from an offset into
      the sound; or during playback, to jump to a new location. */
    virtual void setPlayPosition(int) = 0;

    /** Set the play position in the sound, in milliseconds.
      This can be called before playing, to start from an offset into
      the sound; or during playback, to jump to a new location. */
    virtual void setPlayPositionMs(float) = 0;

    /** Get the current play position in the sound, in sample frames. */
    virtual int getPlayPosition() const = 0;

    /** Get the current play position in the sound, in milliseconds. */
    virtual float getPlayPositionMs() const = 0;

    /** Sets the volume of this sound.
      The volume can range from 0 to 1. The default value is 1.
      Note that the actual volume used for mixing will also depend on the volume of the
      mixer to which this sound is assigned. */
    virtual void setVolume(float) = 0;

    /** Gets the volume of this sound.
      The volume can range from 0 to 1. The default value is 1.
      Note that the actual volume used for mixing will also depend on the volume of the
      mixer to which this sound is assigned. */
    virtual float getVolume() const = 0;

    /** Gets the volume value used for mixing.
      This is the product of the volume set with setVolume() and the mixed
      volume value of the mixer to which the sound is assigned. */
    virtual float getMixedVolume() const = 0;

    /** Sets the pan.
      The pan can range from -1 (left) to +1 (right). The default is 0 (center). */
    virtual void setPan(float) = 0;

    /** Gets the pan.
      The pan can range from -1 (left) to +1 (right). The default is 0 (center). */
    virtual float getPan() const = 0;

    /** Sets the pan matrix explicitly.
      The pan matrix determines how the left and right channels of an input are weighted during mixing.
      Usually it is set by setPan(), but you can use setPanMatrix() if you need more control.
      For a mono input, the left channel of the output is the input scaled by ll, and the right channel of the output is the input scaled by rr.  The off-diagonal lr and rl terms are ignored.
      For a stereo input, the left channel of the output is the left channel of the input scaled by ll plus the right channel of the input scaled by lr.  The right channel of the output is the left channel of the input scaled by rl plus the right channel of the input scaled by rr.
      */
    virtual void setPanMatrix(float ll, float lr, float rl, float rr) = 0;

    /** Gets the pan matrix.
      The pan matrix determines how the left and right channels of an input are weighted during mixing.
      Usually it is set by setPan(), but you can use setPanMatrix() if you need more control.
      For a mono input, the left channel of the output is the input scaled by ll, and the right channel of the output is the input scaled by rr.  The off-diagonal lr and rl terms are ignored.
      For a stereo input, the left channel of the output is the left channel of the input scaled by ll plus the right channel of the input scaled by lr.  The right channel of the output is the left channel of the input scaled by rl plus the right channel of the input scaled by rr.
      */
    virtual void getPanMatrix(float& ll, float& lr, float& rl, float& rr) const = 0;

    /** Sets the pitch shift value, in half-steps.
      This also changes the playback speed of the sound.
      Positive values mean higher pitch (and faster playback); lower values mean lower pitch
      (and slower playback).  The default value is 0.
     @par Android note:
      This does not work for streams in formats other than .cks or Ogg Vorbis. */
    virtual void setPitchShift(float halfSteps) = 0;

    /** Gets the pitch shift value, in half-steps.
      Positive values mean higher pitch (and faster playback); lower values mean lower pitch
      (and slower playback).  The default value is 0.
     @par Android note:
      This does not work for streams in formats other than .cks or Ogg Vorbis. */
    virtual float getPitchShift() const = 0;

    /** Sets the playback speed.
      Values greater than 1 mean faster playback; values less than 1 mean
      slower playback.  The default value is 1.
     @par Android note:
      This does not work for streams in formats other than .cks or Ogg Vorbis. */
    virtual void setSpeed(float) = 0;

    /** Gets the playback speed.
      Values greater than 1 mean faster playback; values less than 1 mean
      slower playback.  The default value is 1.
     @par Android note:
      This does not work for streams in formats other than .cks or Ogg Vorbis. */
    virtual float getSpeed() const = 0;

    /** Sets the sound to be played when this sound finishes playing.
      The next sound will play immediately, with no gaps.
     @par Android note:
      This does not work for streams in formats other than .cks or Ogg Vorbis. */
    virtual void setNextSound(CkSound*) = 0;

    /** Gets the sound to be played when this sound finishes playing.
      The next sound will play immediately, with no gaps.
     @par Android note:
      This does not work for streams in formats other than .cks or Ogg Vorbis. */
    virtual CkSound* getNextSound() const = 0;

    /** Gets the total duration of the sound, in sample frames.
      Stream sounds will return -1 if they are not ready or if the length is unknown. */
    virtual int getLength() const = 0;

    /** Gets the total duration of the sound, in milliseconds.
      Stream sounds will return -1 if they are not ready or if the length is unknown. */
    virtual float getLengthMs() const = 0;

    /** Gets the sample rate of the sound, in Hz.
      Stream sounds will return -1 if they are not ready. */
    virtual int getSampleRate() const = 0;

    /** Gets the number of channels in the sound (1 for mono, 2 for stereo).
      Stream sounds will return -1 if they are not ready. */
    virtual int getChannels() const = 0;

    /** Sets the effect bus to which this sound's audio is sent to be processed, or
      NULL for dry output (no effects).
     @par Android note:
      Effects cannot be applied to streams in formats other than .cks or Ogg Vorbis. */
    virtual void setEffectBus(CkEffectBus*) = 0;

    /** Gets the effect bus to which this sound's audio is sent to be processed, or
      NULL for dry output (no effects).
     @par Android note:
      Effects cannot be applied to streams in formats other than .cks or Ogg Vorbis. */
    virtual CkEffectBus* getEffectBus() = 0;

    /** Sets whether 3D positioning is enabled.
      If enabled, pan will be determined by the sound and listener positions,
      ignoring the value set by setPan().  Volume will be attenuated based
      on the sound and listener positions and the attenuation settings. */
    virtual void set3dEnabled(bool) = 0;

    /** Gets whether 3D positioning is enabled.
      If enabled, pan will be determined by the sound and listener positions,
      ignoring the value set by setPan().  Volume will be attenuated based
      on the sound and listener positions and the attenuation settings. */
    virtual bool is3dEnabled() const = 0;

    /** Gets whether a 3D sound is virtual.
      If, due to distance attenuation, a 3D sound's volume becomes near enough to 0
      to be inaudible, it becomes "virtual".  A virtual sound is effectively paused
      and is not processed until it would become audible again; this reduces the
      amount of audio processing required. */
    virtual bool isVirtual() const = 0;

    /** Sets the position of the sound emitter in 3D space.
      This is used for pan and volume calculations when 3D positioning is enabled. */
    virtual void set3dPosition(float x, float y, float z) = 0;

    /** Gets the position of the sound emitter in 3D space.
      This is used for pan and volume calculations when 3D positioning is enabled. */
    virtual void get3dPosition(float& x, float& y, float& z) const = 0;

    /** Sets the velocity of the sound emitter in 3D space.
      This is used for doppler shift calculations when 3D positioning is enabled.
      The units should be the same as those used for set3dSoundSpeed(). */
    virtual void set3dVelocity(float vx, float vy, float vz) = 0;

    /** Gets the velocity of the sound emitter in 3D space.
      This is used for doppler shift calculations when 3D positioning is enabled.
      The units should be the same as those used for set3dSoundSpeed(). */
    virtual void get3dVelocity(float& vx, float& vy, float& vz) const = 0;

    /** Sets the listener position and rotation in 3D space.
      This is used for pan and volume calculations when 3D positioning is enabled.
      @param eyeX,eyeY,eyeZ           The listener's position
      @param lookAtX,lookAtY,lookAtZ  The listener's look-at point
      @param upX,upY,upZ              The listener's up vector
      */
    static void set3dListenerPosition(float eyeX, float eyeY, float eyeZ,
                                      float lookAtX, float lookAtY, float lookAtZ,
                                      float upX, float upY, float upZ);

    /** Gets the listener position and rotation in 3D space.
      This is used for pan and volume calculations when 3D positioning is enabled.
      @param eyeX,eyeY,eyeZ           The listener's position
      @param lookAtX,lookAtY,lookAtZ  The listener's look-at point
      @param upX,upY,upZ              The listener's up vector
      */
    static void get3dListenerPosition(float& eyeX, float& eyeY, float& eyeZ,
                                      float& lookAtX, float& lookAtY, float& lookAtZ,
                                      float& upX, float& upY, float& upZ);

    /** Sets the listener velocity in 3D space.
      This is used for doppler shift calculations when 3D positioning is enabled.
      The units should be the same as those used for set3dSoundSpeed(). */
    static void set3dListenerVelocity(float vx, float vy, float vz);

    /** Gets the listener velocity in 3D space.
      This is used for doppler shift calculations when 3D positioning is enabled.
      The units should be the same as those used for set3dSoundSpeed(). */
    static void get3dListenerVelocity(float& vx, float& vy, float& vz);

    /** Sets parameters used for 3D volume attenuation.
      @param mode      The attenuation mode (default is kCkAttenuationMode_InvDistanceSquared)
      @param nearDist  The near distance; sounds closer than this distance will not be attenuated (default is 1.0)
      @param farDist   The far distance; sounds further than this will be at the far volume (default is 100.0)
      @param farVol    The far volume; sounds further than farDist will be at this volume (default is 0.0)
      */
    static void set3dAttenuation(CkAttenuationMode mode, float nearDist, float farDist, float farVol);

    /** Gets parameters used for 3D volume attenuation.
      @param mode      The attenuation mode
      @param nearDist  The near distance; sounds closer than this distance will not be attenuated.
      @param farDist   The far distance; sounds further than this will be at the far volume.
      @param farVol    The far volume; sounds further than farDist will be at this volume.
      */
    static void get3dAttenuation(CkAttenuationMode& mode, float& nearDist, float& farDist, float& farVol);

    /** Sets the speed of sound.
      This is used for doppler shift calculations when 3D positioning is enabled.  If no doppler
      shift is desired, this can be set to 0 (which is the default value).
      You may want to use the predefined constants for the speed of sound (such as
      k_soundSpeed_MetersPerSecond); use the constant that corresponds to
      the unit system you are using for your velocity and position values.
      You can also exaggerate the doppler effect by using a smaller value. */
    static void set3dSoundSpeed(float);

    /** Gets the speed of sound.
      This is used for doppler shift calculations when 3D positioning is enabled.  */
    static float get3dSoundSpeed();

    /** The speed of sound in dry air at 20 degrees C, in centimeters per second.
      This value is provided as a convenience for CkSound::set3dSoundSpeed(). */
    static const float k_soundSpeed_CentimetersPerSecond;

    /** The speed of sound in dry air at 20 degrees C, in meters per second.
      This value is provided as a convenience for CkSound::set3dSoundSpeed(). */
    static const float k_soundSpeed_MetersPerSecond;

    /** The speed of sound in dry air at 20 degrees C, in inches per second.
      This value is provided as a convenience for CkSound::set3dSoundSpeed(). */
    static const float k_soundSpeed_InchesPerSecond;

    /** The speed of sound in dry air at 20 degrees C, in feet per second.
      This value is provided as a convenience for CkSound::set3dSoundSpeed(). */
    static const float k_soundSpeed_FeetPerSecond;

    ////////////////////////////////////////
    // bank sounds

    /** Creates a sound from a bank by index.
      This will return NULL if the index is invalid. */
    static CkSound* newBankSound(CkBank*, int index);

    /** Creates a sound from a bank by name.
      If bank is NULL, all loaded banks are searched for the first matching sound.
      This will return NULL if no sound with that name can be found. */
    static CkSound* newBankSound(CkBank*, const char* name);

    ////////////////////////////////////////
    // streams

    /** Creates a stream from a file path.
      This will return NULL if the file could not be opened.  If a non-NULL value
      is returned, you should also check isFailed() to find out if any errors occurred
      during initialization.

      If the stream file is embedded in a larger file, specify the offset and length of
      the embedded data in bytes, and provide a string ending with a file extension that indicates
      the file format of the embedded file (for example, ".mp3" or "music.mp3").
      Otherwise, leave the offset, length, and extension as 0.
     */
    static CkSound* newStreamSound(const char* path, CkPathType = kCkPathType_Default, int offset = 0, int length = 0, const char* extension = NULL);

    /** Factory function for creating custom streams.
     The function should return a CkCustomStream instance, or NULL to create a stream
     with the default handler. */
    typedef CkCustomStream* (*CustomStreamFunc)(const char* path, void* data);

    /** Set the stream handler.
      Set it to NULL to use the default handler. */
    static void setCustomStreamHandler(CustomStreamFunc, void* data);

#if CK_PLATFORM_IOS
    /** Creates a stream from a URL for an asset in the iTunes library.
      The URL should be determined using an MPMediaQuery object; see the
      "iPod Library Access Programming Guide" document in the iOS Developer Library.
      Note that this will only work for music files without DRM; for files with DRM, the URL will be returned as nil.
      @par Only available on iOS version 4.3 or later; will return NULL on earlier iOS versions.
     */
    static CkSound* newAssetStreamSound(const char* url);
#endif

    /** Destroys the sound. */
    virtual void destroy() = 0;

protected:
    CkSound() {}
    virtual ~CkSound() {}

private:
    CkSound(const CkSound&);
    CkSound& operator=(const CkSound&);
};

/** @} */

redpajama_set_name: RedPajamaGithub


text:
tony romo. colin kaepernick
Stock Down: Week 10
Posted on November 11, 2013 November 11, 2013 by Jason Fitzgerald
[adsenseyu1]
Every Monday during the season we will take a look back at three players who are entering important stages of their contract that may have hurt their stock in upcoming negotiations with their play on Sunday. In addition we will also look at one player signed in the offseason to a new contract that did not live up to the expectations that his contract sets for the player.
Ben Tate– I wrote Sunday about how Tate was going to get an opportunity that could make or break a new contract for him and on Sunday it certainly broke. Tate, replacing Arian Foster, finished Sunday with just 56 yards on 15 carries and added next to nothing in the passing game. Tate is not in the most ideal of circumstances- he's injured himself and his QB is not respected yet- but he has to make the most of this situation. If he fails to deliver over the next few weeks it will be hard to convince another team that Tate should be a highly paid starter.
Colin Kaepernick– During the offseason I was getting questions about how would the 49ers afford $20 million a year on Kaepernick. I thought that was an extremely high estimate and I have to think now most agree. Since being named starter last season Kaepernick had just 1 game in which he passed for under 200 yards and that includes his terrific playoff run. In 2013 he has had 7 games under 200 yards including a 91 yard game yesterday at home against the Panthers. I think Kaepernick has pretty much lost that special aura he had about him last year and with it will go the dreams of an incredibly lucrative extension in the offseason. He'll still get an extension offer but unless he begins to play better the dollars of that offer are falling every week.
Jake Locker– Locker was injured again this week following just a disastrous start against the lowly Jaguars in which he was intercepted once and fumbled. Locker who had already missed two games this year following a hip injury will now most likely finish the season on Injured Reserve. If the injury is season ending it will leave Locker with 14 missed games over a two year stretch due to injury. Locker was eligible for either an extension or an injury guaranteed option year in 2015 that would have been worth close to $9 million. Though picking up the option for most players seems to be a foregone conclusion, with Lockers injury history I don't think the Titans can afford to do that. Not only that but when you can not count on a player it means bringing in real competition for the spot not journeyman backups and mentors like Locker has had since 2011.
New Contract Disappointment Of The Week
Tony Romo– Romo has had his share of good games this season, but last night was not one of them. Romo and the offense was thoroughly confused by a defense that had given up over 24 points in two of their last three games. Romo could never get anything going down the field and was settling for short little throws This was by far Romo's worst game of the season on a day where the Cowboys needed an A+ effort to go toe to toe with a high powered Saints offense. Romo did not deliver and the Cowboys were embarrassed by the Saints. Romo always get more than a fair share of criticism and this game will bring more of that his way and deservedly so in this case.
Posted in Stock Down	Tagged ben tate, jake locker, tony romo. colin kaepernick	Leave a comment


Spirit XE395 Elliptical – You need this!
This Spirit that is ranked 5291517 in the Amazon best sellers rank list. The Spirit XE395 Elliptical are warranted according to the return policies was applied to all items sold on Amazon. Product here are very good, at reasonable prices and are rapidly transported: Usually ships in 1-2 business days.
What is the Spirit XE395 Elliptical good for?
I have found most affordable price of Spirit XE395 Elliptical from Amazon store. It offers fast and free shipping. Best elliptical exercise machine for sale will be limited stock of certain product and discount only for limited time, so do order now to get the best deals. Before you buy, check to see if a product is available online at store, read and compare experiences customers have had with elliptical exercise machine below.
All the latest best elliptical exercise machine reviews consumer reports are written by real customers on websites. You should read more consumer reviews and answered questions about Spirit XE395 Elliptical below.


New York Islanders goaltender Rick DiPietro wanted to make a good impression in his season debut after signing an unprecedented contract last month. It didn't happen.
The Islanders need a better effort from their long-term investment when they continue a season-opening four-game road trip on Saturday against the San Jose Sharks.
On Sept. 12, the 25-year-old DiPietro signed a league-record 15-year contract that will pay the former No. 1 overall pick $67.5 million. With teams now managing a salary cap, the deal raised eyebrows across the league.
"Clubs are free to make their own decisions within the confines laid out in the collective bargaining agreement and other applicable league rules," NHL deputy commissioner Bill Daly said. "Some decisions turn out well, others not so well.
"Time will tell whether this will be a good decision or a bad one for the Islanders."
DiPietro and the Islanders' season got off to a bad start Thursday with a 6-3 loss to Phoenix. After being staked to an early 1-0 lead, DiPietro gave up six unanswered goals before being replaced by Mike Dunham to start the third period.
"We had some bad breaks," DiPietro said. "Things kind of went down south for us."
Dunham, signed Sunday to a one-year contract, stopped all 12 shots he faced in his debut. Viktor Kozlov, also making his New York debut after spending last season with New Jersey, added two third-period goals.
The loss spoiled coach Ted Nolan's first game back in the NHL since 1997.
"The big thing for us will be resiliency, and how we bounce back," said DiPietro, who is 1-6-1 with a 3.51 goals-against average in his last eight road starts.
DiPietro lost his only career appearance against the Sharks, 5-4 on March 11, 2004. After replacing current Isles general manager Garth Snow in the first period, DiPietro gave up five goals - including two to reigning goal-scoring champion Jonathan Cheechoo.
The Sharks opened their season with a 5-4 overtime win over St. Louis on Thursday. San Jose gave up the tying goal to the Blues' Bill Guerin with 5.6 seconds left in regulation, but Curtis Brown scored the game-winner 2:48 left in overtime.
The game included two delays, one when referee Rob Martell was hit in the left eye by a shot and another to fix a hole in the boards left by one of Cheechoo's skates.
"That was one of the longer games I've ever been a part of," said Brown, back with San Jose after one season in Chicago. "I don't think there's anything else they can throw at us this season. That's one of the things, though. You're going to have all kinds of distractions, and you've got to overcome them."
Joe Thornton had three assists Thursday after a 2005-06 season in which he led the NHL with 125 points en route to league MVP honors. In 27 games against the Islanders, all while with Boston, Thornton has eight goals and 11 assists.
Cheechoo failed to score in the season opener after leading the league with 56 last year. Milan Michalek, whose seven preseason goals led the NHL, scored twice off assists from Thornton.
San Jose has won only once in the last seven meetings with New York.


text:
NANCY POPP
Acting Out_Website.jpg
Acting Out 2.jpg
Acting Out 01.jpg
Rowan University Glassboro, New Jersey
January 20th - March 12th, 2011
Organized by Stuart Horodner, former artistic director of the Atlanta Contemporary Art Center, and current Director of the Art Museum at the University of Kentucky, this exhibition featured the work of Nina Katchadourian, Fahamu Pecou, Nancy Popp, Shana Robbins, Joe Sola, and Jaimie Warren.
From the catalogue:
Curator Stuart Horodner notes that Acting Out seeks to engage notions of who and how to be. Each participating artist - using combinations of painting, photography, video and performance - defines specific states of being informed by gender, race, mobility and desire. The artists' activities are generated in traditional studios as well as carefully selected locations (city streets, forests, deserts) that act as stages for precise gestures produced for the camera, canvas or passersby.
Presented in the context of a university gallery, it speaks to youthful questions about identity and possibility. By bringing together artists using diverse media with seriousness and silliness, the exhibition posits that personal investigations of self and sensibility are always in flux, modified by context and empowered by curiosity and risk.
ACTING OUT at Rowan University Gallery Website
ACTING OUT Catalogue as PDF
© {2019} Nancy Popp


Now that summer is in full swing, it's time to get outdoors, be active, play, and have fun. Balancing the benefits of a warm season with our busy schedules can, however, be challenging. After all, summer should enliven, not drain, our energy. Whether you're battling heat exhaustion or a touch of sunburn or simply trying to figure out what to serve for dinner, there are simple ways to turn up the fun and turn down the heat.
To cool off after a day in the sun, soak in a lukewarm bath. Add a few drops of peppermint and calendula essential oils to help bring your body temperature down and also to help relieve sunburn. Or fill a spray bottle with water and a few drops of those oils and spritz yourself whenever you feel hot. One way to chill is to reconsider the foods you eat during the hot summer months. Some foods, known as "cooling foods" in Traditional Chinese Medicine, can actually help decrease signs of heat in the body. Salads, for example, can have a tremendous cooling effect, so pick lettuces, cucumber, celery, and tomato. Fresh summer melons, such as cantaloupe and watermelon, have a high water content and also keep you refreshed (plus they provide a good amount of vitamins B6 and C, as well as potassium). As a bonus, watermelon contains the carotenoid lycopene, which may lower your risk of cancer and coronary artery disease. Fresh corn on the cob, rich in lutein and zeaxanthin, is another good choice. These two nutrients help protect the eyes, which are particularly vulnerable to sun damage this time of year.
Also notice how your body gravitates toward lighter foods during the summer months. Eating less and lighter fare is the natural way your body works with nature's cycle. To keep meals light, choose grilled fish, tofu, tempeh, or free-range chicken or turkey, served on a bed of mixed lettuces.
Along with your meal, you may be tempted to cool down with a large glass of iced tea filled to the rim with ice cubes. Think twice. Tea's caffeine can act as a diuretic, leaving you dehydrated. Taking in too much cold liquid can also weaken your digestive organs, making you feel anything but refreshed. A better choice is to fill your glass with pure water at room temperature. A slice of cucumber, lemon, or lime adds a zing of flavor and variety. Another option is to cool down with a homemade smoothie. Juicy berries are rich in antioxidants, including ellagic acid, a potent cancer fighter. Also take pleasure in eating berries slowly, one by one, savoring each distinct flavor and the health it brings to your body.
Possibly one of the most healing opportunities of the summer season is to lie under a shady tree and simply relax. Indulge in a spontaneous picnic (keep a basket with utensils, a well-worn blanket, and some sun-shading hats in your car so you're always prepared). Just don't forget to wear a sunscreen with an SPF of at least 15. This is no longer optional; it's a must for everybody, every day. Don't go outdoors in the summer sun without putting it on first.
BE WELL is written by James Rouse, ND, the creator of Optimum Wellness and The Fit Kitchen, seen weekly on NBC's KUSA television news.


Gone are the days when people used to have ordinary monitors on their desks. They have replaced ordinary monitors with monitors which are incorporated with an advanced technology known as Liquid Crystal Display (LCD). But these advanced monitors may also give some problems when used over time.
LCD monitor troubleshooting is a step-by-step process wherein you eliminate prospective problem sources. If you are using an LCD monitor, you need to how it works and what all are the troubleshooting methods that can be used if it functions abnormally.
LCD monitor troubleshooting firstly requires some level of patience. If the monitor doesn't work, the primary thing you would need to do is to check if everything is plugged in properly. Ensure that the power cord is decently connected to the power source. Also examine if the cord which connects the monitor to the CPU is properly connected.
You may even remove all power and CPU connections and put them back again in their respective sockets. But before doing so, just make sure that you know which cable needs to be connected in which socket. Also make sure that the power is switched off when you are in the process of removing and connecting the cables.
In case of a working monitor, if the display is disturbed or there is a change in the picture quality when you touch or move the cable, the cable is at fault and needs to be replaced.
If the monitor is working fine but goes out after the window loads, the graphic drivers are the culprit. You can try reloading the latest graphic drivers for solving this issue. To carry out the driver installation process, you will need to boot in 'Safe Mode'.
There are some LCD issues that are partially related to the operating system, such as a flickering screen. For examining such issues, press the 'on' button on the CPU, and check if you see any problem before the OS boots.
If you observe the problem when the PC is booting, the monitor is at fault. But if the problem is not observed until the OS boots, there may be an issue with the drivers, and you need to check the display settings or reinstall the monitor drivers.
You also need to check if the problem lies in the video card. Try to use another LCD monitor with the computer, if it works fine, then there is a possibility of driver issues. If the problems are still persistent with the replacement monitor, the video card is the culprit and needs to be replaced.
Some of the other problems with LCD monitors may include 'dead pixels', which are pixels that only display black or white colors regardless of the displayed image. If a larger part of the screen is covered with such pixels, you can do nothing to resolve the problem other than buying a new monitor.
However, this type of problem is rarely found nowadays. If the screen is showing a lower picture quality, you may just need to check the selected resolution. The resolution settings may also be adjusted if the text is not displayed efficiently.
Another problem that can be encountered with the LCD screen is a green or pink shade on the display. In this situation, the ribbon connector cable of the laptop may be at fault. On an LCD computer monitor, the monitor cable is to be replaced to rectify this problem. Replacing the connecting cables even solve the problem of monitor flickering.
If the monitor doesn't work even after following all LCD monitor repair steps, then the last option would be taking assistance of a computer hardware engineer.
If the monitor's condition is really bad, the engineer might even suggest to replace the monitor. For proper functioning of an LCD monitor, it is recommended to keep it covered to prevent dust from entering.


text:
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Requests;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App;
use Auth;
use Session;
use Redirect;
use Hash;
use Validator;
use Datatables;

class ItemsController extends Controller
{

    public function __construct()
    {
        $this->middleware('admin');
    }

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {

        return view('admin.items.index');
    }

    /**
     * Process datatables ajax request.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function getItemsAjax()
    {

        $items = App\Models\Item::
        join('users', 'items.user_id', '=', 'users.id')
            ->join('categories', 'items.category_id', '=', 'categories.id')
            ->select(['items.id as item_id', 'items.name', 'users.name as author', 'categories.name as category', 'items.image', 'items.created_at'])
            ->orderBy('created_at', 'desc')
        ->get();

        return Datatables::of($items)
            ->addColumn('action', function ($item) {
            return 'id.'">
                    id) .'" data-toggle="modal" data-target="#confirm-delete">';
        })
        ->editColumn(
            'image', function ($item) {
            if(($item->image != null) ||($item->image != "")) {

                return "image \" width=\"150\" alt=\"$item->name\">";
            }
            else {
                return "name\" width=\"150\">";
            }

        })
            ->editColumn('created_at', function ($item) {
                return $item->created_at->format('d.m.Y');
            })
            ->make(true);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function destroy($id){

        if(!$delete = App\Models\Item::find($id)) {
            abort(404);
        }

        if ($delete->delete()) {
            Session::flash('message', 'Item deleted successfully');
            Session::flash('message_type', 'success');
            return redirect::to('/admin/items');
        } else {
            Session::flash('message', 'Error while deleting item');
            Session::flash('message_type', 'danger');
            return redirect::to('/admin/items');

        }

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return Response
     */
    public function edit($id){

        if(!$items = App\Models\Item::find($id)) {
            abort(404);
        }

        return view('admin.items.edit', ['items' => $items]);

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  int  $id
     * @return Response
     */
    public function update(Request $request, $id){

        if(!$update = App\Models\Item::find($id)) {
            abort(404);
        }

        $update->name = $request->input('name');
        $update->category_id = $request->input('category');
        $update->ingredients = $request->input('ingredients');
        $update->content = $request->input('directions');
        $update->time = $request->input('time');

        if ($request->hasFile('file')) {

            $file_name = substr(md5(uniqid(rand(), true)), 0, 100) . '.' . $request->file('file')->getClientOriginalExtension();
            $file_path = 'public/uploads/' . $file_name;

            $request->file('file')->move(
                base_path() . '/public/uploads/', $file_name
            );

            $update->image = $file_path;

        }

        if($update->save())
        {
            Session::flash('message', 'Item updated successfully.');
            Session::flash('message_type', 'success');
            return redirect::to('/admin/items');

        }
        else{
            Session::flash('message', 'Error while updating item.');
            Session::flash('message_type', 'danger');
            return redirect::to('/admin/items');
        }

    }

}


A&B Tool Rentals | Equipment Rental Solutions for Developers, Contractors and the Trades.
Rental Solutions for Developers, Contractors & the Trades.
A&B finds solutions that work for you.
Free up funds for other areas of a project.
Get the job done with A&B. Top quality rental tools from A&B means you always have the right tool for the task at hand.
As soon as the phone rings, we are on a timer. If we don't have it, we find it. If you need it, we get it. A&B automated scheduling GPS connects the available drivers with the fastest route to your location.
The A&B Rental Ready Process™ = Reliable Equipment.
We know that when you are on a schedule and your people are ready, our equipment has to work. That's why we developed the A&B Rental Ready Process™.
Keep Track of Your A&B Rentals.
Lost track of what rentals you have on-site? One call to our sales counter and we can fax, e-mail or text you an up-to-the-minute list. If you have internet access you can go online to view your account 24/7.
Today, the rental movement is going strong. Over 100 million Americans rent their home, and streaming giant Netflix earned just under $16 billion last year. The construction industry is also expected to ride on this trend for the next several years, with the equipment rental market projected to grow 4% by 2024.
Why Should You Rent Construction Equipment?
If you follow more traditional thinking, you probably believe that owning your equipment is the best way to go. And in some situations, that may be true. However, equipment rentals are quickly becoming a more viable option, for all business large or small.
Here are just some of the benefits of renting construction equipment.
Have you ever rejected a job because you didn't have the right equipment? When you rent equipment, that ceases to be a problem. You're not limited to whatever machinery you have on hand, you can rent the specific type and size of equipment to match your job, allowing you to get the job done right at the lowest cost. This allows the ability to expand your services and attract more clients. You also can make the most out of advancements in construction technology by renting newer models, instead of being stuck with an old outdated one.
With renting you are able to expand and contract your equipment needs to match your needs. When you are done with equipment just return it and stop any ongoing costs.
Equipment rental companies take on the burden of long-term storage, maintenance, liability, depreciation and more—so that you don't have to. They can also facilitate easy pick-up and delivery, making it even less stressful for you.
Arranging for construction equipment rental in 2019 is actually quite easy. Most of the time, you just need to contact the company ahead of time to make sure that the equipment you want is available on the days you need it.
Some companies will even have emergency rental services, allowing you to make next or even same-day rentals.
It's a myth that most forms of rental equipment are old and broken machines. Construction rentals are well-maintained and reliable, and if the worst happens and the equipment does break down; you don't have to worry about sourcing new equipment, just contact them and they'll replace it with no trouble.
Rental companies may also provide extra services, such as assistance with machinery, 24/7 service technicians, and operator training for your crew.
The best thing about equipment rentals is that you don't need a lot of capital to run a construction company. Instead of forking over hundreds of thousands of dollars to buy equipment, you can spend a small fraction per project.
You get to avoid expensive capital outlay, service, maintenance, storage, and liability. You also don't have to worry about your purchased equipment depreciating over time. Plus, equipment rentals are immediately tax-deductible as business expenses.
And if you do decide to buy your own equipment down the line, you've had the luxury of renting and testing out the equipment first, which potentially saves you thousands of dollars and a lot of regret.
What Kind Of Equipment Can You Rent?
Heaters – Electric, Propane, or Natural Gas Heaters of all sizes.
First, you need to take stock of what tools and equipment you already own. Unless you're looking to use upgraded models, you can cross these off your list of things to rent.
But more than that, you also need to understand your crew's current expertise, especially when it comes to dangerous equipment and heavy machinery. If you are planning to rent equipment that your crew doesn't know how to handle, you might need to consider the costs of training them or hiring a professional. A & B Tool Rentals can provide training for Boom Lifts, Scissor Lifts, Skid Steers, Excavators, and Construction Heaters to keep you safe and compliant with WorkSafe.
A small landscaping job will require very different tools from a high-rise construction project, so you need to understand your project to avoid renting the wrong equipment.
Consider the size and scope of the job. Some jobs will require large equipment, while others require much smaller machinery. Also think about the working conditions, especially if you need to take your heavy machinery through harsh terrain. Equipment is available with wheels, 4 x 4, or tracks, depending on the specific needs.
Construction equipment rental companies don't provide exact costs on their website because the price of your rental is affected by many factors: what equipment you rent, the length of your rental, transportation costs, your payment plan, and more.
Because there are so many variables, you will need to contact the rental company to get the most accurate quote. It is always recommended to consider the best value for your project and not always the lowest price. Consider the quality of the equipment, the speed of service needed in the event of a breakdown, if scheduled maintenance is included in the rental, how easy it is to schedule maintenance when required, how easy it is to work with the company when something goes wrong.
Renting your construction equipment is a great option if you want more flexibility and more savings. If you're interested in rental equipment, contact us today!


text:
Success is in the sauce
Homemade sauces tweaked to perfection at Crowtown.
Success is in the sauce Homemade sauces tweaked to perfection at Crowtown. Check out this story on coshoctontribune.com: http://ohne.ws/1C8CErz
Ohio Published 10:15 p.m. ET April 5, 2015 | Updated 8:10 a.m. ET April 6, 2015
The Buffalo Grilled Chicken and Bacon Pizza is one of Crowtown Pizza's popular specialty items.(Photo: Jennifer L. Manfrin/for the Tribune)Buy Photo
COSHOCTON – A local pizza restaurant is offering customers homemade choices as memorable as its name.
Crowtown Pizza, at 783 S. Second St., has two homemade sauces the owners have tweaked to perfection.
"I think we hit what our customers seem to like. We are here to please them and support the community. Crowtown Pizza was built for Coshocton," said Marty Ralston, who owns the establishment with his wife, Tammria.
Named with the help of a friend in honor of Coshocton's nickname, Crowtown Pizza opened for business in 2003 at the former Chestnut Street location and moved to the current building in 2009. There is plenty of dining space where customers can enjoy homemade menu items and daily lunch and dinner buffets, Ralston said.
"I have always enjoyed making food, and always wanted to have my own business. It's the American dream."
Whether customers want to order in, take out, or have their orders delivered, Ralston's two homemade sauces give pizza lovers the choice between traditional or New York style sauces. The traditional Italian-style sauce has a blend of Italian spices, while the New York-style sauce is naturally sweet with robust tomato flavor, he said.
"I worked with the sauces until I got to the flavors that I thought was good."
Ralston said his goal has always been to give the customers what they want. That is why the recipes for the homemade sauces were taste-tested with the help of Crowtown Pizza employees before they ever topped the freshly-made pizzas.
Owner Marty Ralston stirs his New York-style sauce at Crowtown Pizza in Coshocton. (Photo: Jennifer L. Manfrin/for the Tribune)
"Marty takes a lot of pride in making the sauces," said cook and manager Kim Murray. "Every day we would taste the sauce recipes until he perfected them. The secret homemade recipes are a hit with the customers."
For customers who want to try pizza with a different flair, Crowtown pizza offers the top-selling pizza Buffalo grilled chicken and bacon pizza with ranch sauce and Crowtown's special buffalo wing sauce. "Customers like it because it's unique," Ralston said.
Hours for Crowtown Pizza are 11 a.m. to 10 p.m. Monday through Thursday, 11 a.m. to 11 p.m. Friday and Saturday and noon to 9 p.m. Sunday.
About the Neighborhood fare
The Coshocton Tribune will feature a local eatery and what fare makes it unique each week. If you have a suggestion or are a restaurant owner who would like to be featured, let us know at ctnews@coshoctontribune.com.
Read or Share this story: http://ohne.ws/1C8CErz


text:
Embattled Fall River mayor facing federal charges says he's '100% innocent'
Updated: Oct 17, 2018 - 10:07 AM
FALL RIVER, Mass. - An embattled Massachusetts mayor charged with defrauding investors in a company he formed before his election is digging in his heels, saying he is "100 percent innocent."
In just weeks, Fall River Mayor Jasiel Correia has gone from being best known for his election victory when he was only 23 years old to becoming the focus of a criminal investigation that saw him indicted on federal charges of wire fraud and filing false tax returns.
He called the past week "the most difficult of my life."
Correia adamantly said he would not resign from office at a news conference Tuesday morning from Fall River City hall.
"Be with you at 11 o'clock." - Fall River Mayor Jasiel Correia to me just now as he arrived at City Hall ahead of his news conference. Correia is under federal indictment and the City Council plans to meet about his future this evening. #Boston25 https://t.co/vAGaY0vNxf
— Michael Henrich (@MichaelHenrich) October 16, 2018
A 6 p.m. special session of the City Council was called to discuss if removing a mayor is possible under the city's Home Rule Charter. It's still unclear what action the council has the authority to make or intends to make, but a vote of no-confidence is expected.
And Correia is also reportedly being evicted from his apartment in Fall River. According to the Bristol County Sheriff's office, Correia was served an eviction notice Monday morning. It's not yet clear why.
On Oct. 11, Correia was arrested by officials from multiple agencies and hauled into a courtroom. An unsealed indictment alleges that he collected more than $360,000 from investors to develop an app that was supposed to help businesses connect with target consumers, federal authorities say. Instead, he spent more than $230,000 of the investor funds to bankroll a lavish lifestyle and advance his political career, officials say.
>> Read the indictment
"His actions were underhanded, shameless and greedy," said FBI agent Hank Shaw. "Mr. Correia blurred the lines between public business and private duties, using investor funds as his own personal ATM, systemically looting almost a quarter-million dollars."
He pleaded not guilty in Boston's federal court, told reporters he believes he will be vindicated and said he will "absolutely not" resign.
"I look forward to my day in court to share my side of the story and to clear my name," he said in a written statement.
Surrounded by family and supporters, Fall River mayor Jasil Correia announces he WILL NOT resign at press conference @boston25 pic.twitter.com/z7cUC0YXJ2
— Kathryn Burcham (@kathrynburcham) October 16, 2018
Correia was recently among 10 Democratic mayors in Massachusetts who chose to endorse Republican Gov. Charlie Baker for re-election in November over Baker's Democratic challenger, Jay Gonzalez.
Terry MacCormack, a Baker campaign spokesman, said the governor believes the charges are "very serious" and will work with officials to ensure the city has strong leadership as Correia's case moves forward.
The governor's re-election campaign Thursday removed Correia's endorsement from its website.
MORE: 'I've done nothing wrong': Fall River mayor arrested for defrauding investors
Cambridge Police arrest man accused of trying to kidnap baby in stroller
Great white sharks spotted at 4 Cape Cod beaches over weekend


text:
package stream.vis.data;

import java.util.*;
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import stream.vis.util.FatalException;

public class QueryPlan {
    /// Root element name in an XML plan
    private static final String PLAN = "plan";

    /// Name for an operator node in an XML plan
    private static final String OPERATOR = "operator";

    /// Name for an identifier attribute
    private static final String ID = "id";

    ///
    private static final String STREAM = "stream";

    /// Name for an input element
    private static final String INPUT = "input";

    /// Name for an "name" element
    private static final String NAME = "name";

    /// Name for the queue attribute
    private static final String QUEUE = "queue";

    /// Name for the store attribute
    private static final String STORE = "store";

    /// Owning operator of a synopsis/store element
    private static final String OWNER = "owner";

    /// name for a synopsis element
    private static final String SYNOPSIS = "synopsis";

    /// Source store of a synopsis
    private static final String SOURCE = "source";

    /// Pos of a synopsis
    private static final String POS = "pos";

    /// Long name of an operator
    private static final String LONGNAME = "lname";

    /// Query Id for an output operator
    private static final String QUERY = "query";

    /// Property of a component
    private static final String PROPERTY = "property";

    private static final String PROP_NAME = "name";

    /// Value
    private static final String VALUE = "value";

    /// Operators in the query plan
    List ops;

    /// Queues in the query plan
    List queues;

    /// Stores in the query plan
    List stores;

    /// Synopses in the query plan
    List syns;

    /// Mapping from Query Id to operator that produces it
    Map queryOutputMap;

    /// Build a query plan given its XML representation
    public QueryPlan (Document xmlPlan) throws FatalException {

	// Lists containing temporary representation of operators, stores
	// and synopses
	ArrayList oplist = new ArrayList ();
	ArrayList storeList = new ArrayList ();
	ArrayList synList = new ArrayList ();

	// Document Sanity check
	Element root = xmlPlan.getDocumentElement ();
	if (!root.getNodeName().equals (PLAN)) {
	    throw new FatalException ("Corrupted plan?");
	}

	// Parse the document and generate the operator and store info
	parseDocument (root, oplist, storeList, synList);

	// Mapping from (server) id of operators to their posn in oplist
	// which is used as a client side id
	Map opIdMap = generateOpIdMap (oplist);

	// Mapping from (server) id of stores to client side id
	Map storeIdMap = generateStoreIdMap (storeList);

	// Generate the Operator objects
	generateOps (oplist, opIdMap);

	// Generate the queues
	generateQueues (oplist, opIdMap);

	// Generate stores
	generateStores (storeList, storeIdMap, opIdMap);

	// Generate the synopses
	generateSynopses (synList, storeIdMap, opIdMap);

	// Generate the mapping from queries to output ops
	queryOutputMap = new HashMap ();
	generateQueryOutputMap (oplist, queryOutputMap);
    }

    public QueryPlan (String planString) throws FatalException {
	this (QueryPlan.getDocument(planString));
    }

    public void updatePlan (String newPlanStr) throws FatalException {

	Document newXMLPlan;

	// get the xml document
	newXMLPlan = QueryPlan.getDocument (newPlanStr);

	// Lists containing temporary representation of operators, stores
	// and synopses
	ArrayList oplist = new ArrayList ();
	ArrayList storeList = new ArrayList ();
	ArrayList synList = new ArrayList ();

	// Document Sanity check
	Element root = newXMLPlan.getDocumentElement ();
	if (!root.getNodeName().equals (PLAN)) {
	    throw new FatalException ("Corrupted plan?");
	}

	// Parse the document and generate the operator and store info
	parseDocument (root, oplist, storeList, synList);

	// min id of a new operator
	int minNewOpId = ops.size();

	// Mapping from server id to client id of operators
	Map opIdMap = updateOpIdMap (oplist);

	// Mapping from server id to client id of stores
	Map storeIdMap = updateStoreIdMap (storeList);

	// create new entities
	addNewOps (oplist, opIdMap);
	addNewQueues (oplist, opIdMap, minNewOpId);
	addNewStores (storeList, storeIdMap, opIdMap);
	addNewSynopses (synList, storeIdMap, opIdMap, minNewOpId);

	// update the query -> output id mapping
	updateQueryOutputMap (oplist, queryOutputMap, opIdMap);
    }

    public int getNumOps() {
	return ops.size();
    }

    public Operator getOp (int id) {
	return (Operator)ops.get(id);
    }

    public int getNumQueues () {
	return queues.size();
    }

    public Queue getQueue (int id) {
	return (Queue)queues.get(id);
    }

    public int getNumStores () {
	return stores.size();
    }

    public Store getStore (int id) {
	return (Store)stores.get(id);
    }

    public int getNumSyns () {
	return syns.size();
    }

    public Synopsis getSyn (int id) {
	return (Synopsis)syns.get(id);
    }

    public int getOutputOp (int queryId) {
	Integer opId = (Integer)queryOutputMap.get(new Integer(queryId));
	return opId.intValue();
    }

    private void parseDocument (Element root,
				List oplist,
				List storeList,
				List synList) throws FatalException {

	// Iterate through the nodes and retrieve operator/store/synopsis info
	NodeList nodeList = root.getChildNodes ();

	for (int n = 0 ; n < nodeList.getLength () ; n++) {
	    Node curNode = nodeList.item (n);

	    if (curNode.getNodeType() != Node.ELEMENT_NODE)
		continue;

	    if (curNode.getNodeName().equals(OPERATOR)) {
		OpInfo opInfo = getOpInfo(nodeList.item(n));
		oplist.add (opInfo);
		continue;
	    }

	    if (curNode.getNodeName().equals(STORE)) {
		StoreInfo storeInfo = getStoreInfo (nodeList.item(n));
		storeList.add (storeInfo);
		continue;
	    }

	    if (curNode.getNodeName().equals(SYNOPSIS)) {
		SynInfo synInfo = getSynInfo (nodeList.item(n));
		synList.add (synInfo);
		continue;
	    }
	}
    }

    // Generate the mapping from server id of the operators to
    // the client id, which is just the index into oplist
    private Map generateOpIdMap (List oplist) {
	Map opIdMap = new HashMap ();
	for (int o = 0 ; o < oplist.size() ; o++) {
	    OpInfo curOp = (OpInfo)oplist.get(o);
	    opIdMap.put (curOp.serverId, new Integer (o));
	}
	return opIdMap;
    }

    // Generate the mapping from server id to client id.  We want to client
    // id to be the index in the ops list.  This method is called to update
    // a plan, so there might be previously created operators.
    private Map updateOpIdMap (List oplist) {
	Map opIdMap = new HashMap();

	// create the map for existing operators
	for (int o = 0 ; o < ops.size() ; o++) {
	    Operator op = (Operator)ops.get(o);
	    opIdMap.put (op.getServerId(), new Integer(o));
	}

	int opId = ops.size();

	// create the map for the new operators
	for (int o = 0 ; o < oplist.size (); o++) {
	    OpInfo opInfo = (OpInfo)oplist.get(o);

	    // new operator
	    if (opIdMap.get(opInfo.serverId) == null) {
		opIdMap.put (opInfo.serverId, new Integer (opId));
		opId++;
	    }
	}

	return opIdMap;
    }

    // Generate the mapping from server id of the stores to the
    // client id of the stores which is the index into storeList
    private Map generateStoreIdMap (List storeList) {
	Map storeIdMap = new HashMap();
	for (int s = 0 ; s < storeList.size() ; s++) {
	    StoreInfo curStore = (StoreInfo)storeList.get(s);
	    storeIdMap.put (curStore.serverId, new Integer(s));
	}
	return storeIdMap;
    }

    // Generate the mapping from server id to client id.  We want to client
    // id to be the index in the stores list.  This method is called to
    // update a plan, so there might be previously created stores
    private Map updateStoreIdMap (List storeList) {
	Map storeIdMap = new HashMap ();

	// create the mapping for previously existant stores
	for (int s = 0 ; s < stores.size() ; s++) {
	    Store store = (Store)stores.get (s);
	    storeIdMap.put (store.getServerId(), new Integer (s));
	}

	int storeId = stores.size();

	// create the mappin gfor the new stores
	for (int s = 0 ; s < storeList.size() ; s++) {
	    StoreInfo storeInfo = (StoreInfo)storeList.get(s);

	    if (storeIdMap.get (storeInfo.serverId) == null) {
		storeIdMap.put (storeInfo.serverId, new Integer (storeId));
		storeId ++;
	    }
	}

	return storeIdMap;
    }

    // Generate the operators
    private void generateOps (List oplist, Map opIdMap) {
	ops = new ArrayList ();

	for (int o = 0 ; o < oplist.size() ; o++) {
	    OpInfo opInfo = (OpInfo)oplist.get(o);

	    // Array of inputs
	    int[] opInputs = new int [opInfo.inputs.size()];
	    for (int i = 0 ; i < opInputs.length ; i++) {
		String childServerId = (String)opInfo.inputs.get(i);
		int childId = ((Integer)opIdMap.get(childServerId)).intValue();

		opInputs [i] = childId;
	    }

	    assert (ops.size() == o);

	    Operator op = new Operator (o, opInfo.serverId, opInfo.name,
					opInfo.longName, opInputs, this,
					opInfo.outputsStream);
	    for (int p = 0 ; p < opInfo.properties.size() ; p++) {
		Property property = (Property)opInfo.properties.get(p);
		op.addProperty (property.name, property.value);
	    }

	    ops.add(op);
	}
    }

    private void addNewOps (ArrayList oplist, Map opIdMap) {

	for (int o = 0 ; o < oplist.size (); o++) {
	    OpInfo opInfo = (OpInfo) oplist.get (o);

	    // Client side of the operator
	    int opId = ((Integer)opIdMap.get(opInfo.serverId)).intValue();

	    // Is this a previously created operator
	    if (opId < ops.size())
		continue;

	    // The way we generated opids this is guaranteed to hold
	    assert (opId == ops.size());

	    // Array of inputs
	    int[] opInputs = new int [opInfo.inputs.size()];
	    for (int i = 0 ; i < opInputs.length ; i++) {
		String childServerId = (String)opInfo.inputs.get(i);
		int childId = ((Integer)opIdMap.get(childServerId)).intValue();
		opInputs [i] = childId;
	    }

	    // create the operator
	    Operator op = new Operator (opId, opInfo.serverId, opInfo.name,
					opInfo.longName, opInputs, this,
					opInfo.outputsStream);

	    for (int p = 0 ; p < opInfo.properties.size() ; p++) {
		Property property = (Property)opInfo.properties.get(p);
		op.addProperty (property.name, property.value);
	    }

	    ops.add(op);
	}
    }

    private void generateQueues (ArrayList oplist, Map opIdMap) {

	queues = new ArrayList ();

	for (int o = 0 ; o < oplist.size(); o++) {
	    OpInfo opInfo = (OpInfo)oplist.get(o);

	    for (int c = 0 ; c < opInfo.inQueues.size() ; c++) {
		String srcServerId = (String)opInfo.inputs.get(c);
		int srcId = ((Integer)opIdMap.get(srcServerId)).intValue();

		int qId = queues.size();
		Queue queue = new Queue (qId, (String)opInfo.inQueues.get(c),
					 srcId, o, this);

		queues.add(queue);
	    }
	}
    }

    private void addNewQueues (ArrayList oplist, Map opIdMap, int minNewOpId) {

	for (int o = 0 ; o < oplist.size () ; o++) {
	    OpInfo opInfo = (OpInfo)oplist.get(o);

	    int destOpId = ((Integer)opIdMap.get(opInfo.serverId)).intValue();
	    if (destOpId < minNewOpId)
		continue;

	    for (int c = 0 ; c < opInfo.inQueues.size() ; c++) {
		String srcServerId = (String)opInfo.inputs.get(c);
		int srcId = ((Integer)opIdMap.get(srcServerId)).intValue();
		int qId = queues.size();
		Queue queue = new Queue (qId,
					 (String)opInfo.inQueues.get(c),
					 srcId,
					 destOpId,
					 this);
		queues.add(queue);
	    }
	}
    }

    void generateStores (List storeList, Map storeIdMap, Map opIdMap) {
	stores = new ArrayList ();

	for (int s = 0 ; s < storeList.size() ; s++) {
	    StoreInfo storeInfo = (StoreInfo) storeList.get(s);

	    int ownOpId = ((Integer)opIdMap.get(storeInfo.ownOp)).intValue();
	    stores.add(new Store (s, storeInfo.serverId,
				  storeInfo.name, ownOpId, this));
	}
    }

    private void addNewStores (List storeList, Map storeIdMap, Map opIdMap) {

	for (int s = 0 ; s < storeList.size() ; s++) {
	    StoreInfo storeInfo = (StoreInfo) storeList.get(s);

	    // id that we assigned to this store
	    int storeId =
		((Integer)storeIdMap.get(storeInfo.serverId)).intValue();

	    // old store
	    if (storeId < stores.size())
		continue;

	    // the way we generate storeId ensures this
	    assert(storeId == stores.size());

	    // the operator who owns this store
	    int ownOpId = ((Integer)opIdMap.get(storeInfo.ownOp)).intValue();

	    Store store = new Store (storeId, storeInfo.serverId,
				     storeInfo.name, ownOpId, this);
	    stores.add (store);
	}
    }

    private void generateSynopses (List synList, Map storeIdMap, Map opIdMap)
	throws FatalException {

	syns = new ArrayList ();

	for (int s = 0 ; s < synList.size() ; s++) {

	    SynInfo synInfo = (SynInfo) synList.get(s);

	    int ownOpId = ((Integer)opIdMap.get(synInfo.ownOp)).intValue();
	    int srcStoreId =
		((Integer)storeIdMap.get(synInfo.source)).intValue();
	    int type = decodePos (synInfo.pos);

	    syns.add(new Synopsis (s, synInfo.serverId, synInfo.name,
				   ownOpId, type, srcStoreId, this));
	}
    }

    private void addNewSynopses (List synList, Map storeIdMap,
				 Map opIdMap, int minNewOpId)
	throws FatalException {

	for (int s = 0 ; s < synList.size () ; s++) {

	    SynInfo synInfo = (SynInfo) synList.get(s);

	    // owner op
	    int ownOpId = ((Integer)opIdMap.get(synInfo.ownOp)).intValue();

	    // if the owner op is old, the synopsis is old
	    if (ownOpId < minNewOpId)
		continue;

	    // source store
	    int srcStoreId =
		((Integer)storeIdMap.get(synInfo.source)).intValue();
	    int type = decodePos (synInfo.pos);

	    int synId = syns.size();

	    syns.add(new Synopsis (synId, synInfo.serverId, synInfo.name,
				   ownOpId, type, srcStoreId, this));
	}
    }

    private void generateQueryOutputMap (List oplist, Map queryOutputMap)
	throws FatalException {

	try {
	    for (int o = 0 ; o < oplist.size() ; o++) {
		OpInfo opInfo = (OpInfo)oplist.get(o);
		if (opInfo.queryId != null) {
		    queryOutputMap.put (new Integer (opInfo.queryId),
					new Integer (o));
		}
	    }
	}
	catch (NumberFormatException e) {
	    throw new FatalException ("Invalid query plan");
	}
    }

    private void updateQueryOutputMap (List oplist, Map queryOutputMap,
				       Map opIdMap)
	throws FatalException {

	try {
	    for (int o = 0 ; o < oplist.size () ; o++) {
		OpInfo opInfo = (OpInfo) oplist.get (o);

		if (opInfo.queryId != null) {
		    Integer queryId = new Integer (opInfo.queryId);

		    if (queryOutputMap.get (queryId) == null) {
			queryOutputMap.put (queryId,
					    opIdMap.get(opInfo.serverId));
		    }
		}
	    }
	}
	catch (NumberFormatException e) {
	    throw new FatalException ("Invalid query plan");
	}
    }

    private int decodePos (String pos) throws FatalException {
	if (pos.equals ("left"))
	    return Synopsis.LEFT;
	if (pos.equals ("right"))
	    return Synopsis.RIGHT;
	if (pos.equals ("center"))
	    return Synopsis.CENTER;
	if (pos.equals ("output"))
	    return Synopsis.OUTPUT;
	throw new FatalException ("Invalid query plan");
    }

    // "Struct" with all the operator info
    private class OpInfo {

	/// Operator identifier
	public String serverId;

	/// Operator type
	public String name;

	/// Long name for the operator (for vis. purposes, we
	/// use "name" for displaying operators, and longName
	/// as a tooltip.
	public String longName;

	/// If the operator in output operator (name == "output"), then
	/// queryId is the id of the query for which it is the output.
	/// For non-output operators, queryId is null
	public String queryId;

	/// Id's of the input operators
	public ArrayList inputs;

	/// Queue ids from which each input is read
	public ArrayList inQueues;

	/// List of "static" properties
	public List properties;

	/// does the operator produce a stream
	public boolean outputsStream;
    }

    // Parse an operator node into an opInfo struct
    private OpInfo getOpInfo (Node opNode) throws FatalException {
	OpInfo opInfo = new OpInfo();
	opInfo.inputs = new ArrayList ();
	opInfo.inQueues = new ArrayList ();
	opInfo.properties = new ArrayList ();
	// Id
	opInfo.serverId =
	    opNode.getAttributes().getNamedItem(ID).getNodeValue();

	if (opInfo.serverId == null)
	    throw new FatalException ("Invalid query plan");

	// stream?
	String bstream =
	    opNode.getAttributes().getNamedItem(STREAM).getNodeValue();
	if (bstream == null)
	    throw new FatalException ("Invalid query plan");
	if (bstream.equals("0")) {
	    opInfo.outputsStream = false;
	}
	else if (bstream.equals ("1")) {
	    opInfo.outputsStream = true;
	}
	else {
	    throw new FatalException ("Invalid query plan");
	}

	NodeList childs = opNode.getChildNodes ();
	for (int n = 0 ; n < childs.getLength () ; n++) {
	    Node child = childs.item (n);

	    if (child.getNodeType () != Node.ELEMENT_NODE)
		continue;

	    if (child.getNodeName().equals (NAME)) {
		opInfo.name = getText (child);
	    }

	    else if (child.getNodeName().equals (INPUT)) {
		opInfo.inputs.add(getText (child));

		String queueId =
		    child.getAttributes().getNamedItem(QUEUE).getNodeValue();
		if (queueId == null)
		    throw new FatalException ("Invalid query plan");
		opInfo.inQueues.add (queueId);
	    }
	    else if (child.getNodeName().equals (LONGNAME)) {
		opInfo.longName = getText (child);
	    }
	    else if (child.getNodeName().equals (QUERY)) {
		opInfo.queryId = getText (child);
	    }
	    else if (child.getNodeName().equals (PROPERTY)) {
		Property property = getProperty (child);
		opInfo.properties.add (property);
	    }
	}

	return opInfo;
    }

    // "Struct" with the store information
    private class StoreInfo {
	/// Store identifier
	public String serverId;

	/// Store name
	public String name;

	/// Id of the owning op
	public String ownOp;
    }

    private StoreInfo getStoreInfo (Node node) throws FatalException {
	StoreInfo storeInfo = new StoreInfo ();

	// Id
	storeInfo.serverId =
	    node.getAttributes().getNamedItem(ID).getNodeValue();

	if (storeInfo.serverId == null) {
	    throw new FatalException ("Invalid query plan");
	}

	NodeList childs = node.getChildNodes ();
	for (int n = 0 ; n < childs.getLength () ; n++) {
	    Node child = childs.item (n);

	    if (child.getNodeType () != Node.ELEMENT_NODE)
		continue;

	    if (child.getNodeName().equals (NAME)) {
		storeInfo.name = getText (child);
	    }

	    if (child.getNodeName().equals (OWNER)) {
		storeInfo.ownOp = getText (child);
	    }
	}

	return storeInfo;
    }

    private class SynInfo {

	/// Synopsis identifier
	public String serverId;

	/// Synopsis name
	public String name;

	/// Id of the owning op
	public String ownOp;

	/// Id of the source store
	public String source;

	/// Position of the synopsis ("left", "right", "center", "output")
	public String pos;
    }

    private SynInfo getSynInfo (Node node) throws FatalException {
	SynInfo synInfo = new SynInfo ();

	// Id
	synInfo.serverId =
	    node.getAttributes().getNamedItem(ID).getNodeValue();

	NodeList childs = node.getChildNodes ();
	for (int n = 0 ; n < childs.getLength () ; n++) {
	    Node child = childs.item (n);

	    if (child.getNodeType () != Node.ELEMENT_NODE)
		continue;

	    if (child.getNodeName().equals (NAME)) {
		synInfo.name = getText (child);
	    }

	    if (child.getNodeName().equals (OWNER)) {
		synInfo.ownOp = getText (child);
	    }

	    if (child.getNodeName().equals (SOURCE)) {
		synInfo.source = getText (child);
	    }

	    if (child.getNodeName().equals (POS)) {
		synInfo.pos = getText (child);
	    }
	}

	return synInfo;
    }

    private class Property {
	String name;
	String value;
    }

    private Property getProperty (Node n) {
	Property property = new Property ();

	property.name =
	    n.getAttributes().getNamedItem (PROP_NAME).getNodeValue();
	property.value =
	    n.getAttributes().getNamedItem (VALUE).getNodeValue ();

	return property;
    }

    private String getText (Node n) throws FatalException {
	Node child = n.getFirstChild ();

	// Has to be a text node
	if (!child.getNodeName().equals ("#text"))
	    throw new FatalException ("Invalid query plan");

	return child.getNodeValue().trim();
    }

    private static Document getDocument (String xml) throws FatalException {
	Document document;

	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  	factory.setIgnoringComments(true);
  	factory.setIgnoringElementContentWhitespace(true);

	try {
	    DocumentBuilder builder = factory.newDocumentBuilder();
	    document = builder.parse
		(new ByteArrayInputStream (xml.getBytes()));
	}
	catch (ParserConfigurationException e) {
	    throw new FatalException ("Unknown exception");
	}
	catch (SAXException e) {
	    throw new FatalException ("Unknown exception");
	}
	catch (IOException e) {
	    throw new FatalException ("Unknown exception");
	}

	return document;
    }

    private static Document getDocumentOld (String filename)
	throws FatalException {

	Document document;

	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  	factory.setIgnoringComments(true);
  	factory.setIgnoringElementContentWhitespace(true);

	try {
	    DocumentBuilder builder = factory.newDocumentBuilder();
	    InputStream fileInput = new FileInputStream (filename);
	    document = builder.parse (new InputSource (fileInput));
	    return document;
	}

	catch (ParserConfigurationException e) {
	    throw new FatalException ("Unknown exception");
	}
	catch (FileNotFoundException e) {
	    throw new FatalException ("Plan file not found");
	}
	catch (SAXException e) {
	    throw new FatalException ("Unknown exception");
	}
	catch (IOException e) {
	    throw new FatalException ("Plan file i/o exception");
	}
    }

    public static void mainTest (String[] args) {

	try {
	    String filename = args[0];
	    Document document = getDocumentOld (filename);
	    QueryPlan plan = new QueryPlan (document);
	}

	catch (ArrayIndexOutOfBoundsException e) {
	    System.out.println ("Invalid usage");
	}
	catch (FatalException e) {
	    System.out.println ("Fatal exception:" + e);
	}
    }
}


text:
How Are Modular Buildings Delivered?
Modular building units are wrapped in protective covering, transported from a factory by land or sea, and permanently installed at their destination.
The delivery stage of modular construction is one of the most fascinating aspects of the modular process, and perhaps best captures how this innovative technique is unlike any other within the industry today. Similar to the spirit of modularization, the vast majority of everyday products are made in a factory, typically far away from where they are sold and purchased. Thus, just as the modular methodology modernizes traditional construction by shifting the actual building process into a factory or warehouse, it also involves the transportation of the finished modules to their ultimate destinations.
The delivery of nearly every modular building starts in much the same way, with the module components that form the completed building originating within a fabrication facility—such as ours in Berwick, Pennsylvania.
Unlike prefabricated components, volumetric units are designed and built around a six-sided structural frame, ensuring that each has the independent strength necessary to withstand the stress of delivery. As they leave the facility, each is wrapped in a protective covering that will shield them from the elements during their journey and installation.
Who is responsible for delivery?
The party responsible for the delivery of modular units to the job site will be determined in the contract with the modular manufacturer. Full-service manufacturers, such as Deluxe Modular, will offer contract options in which the manufacturer will make all necessary arrangements for delivery.
The specific path these units take to the final destination will depend upon the distance and location, but most modules will leave the facility via trucks. From there, some may be transferred onto trains for more efficient travel across longer distances.
The delivery of modular units is not restricted to land travel, though. These building blocks can also be shipped by sea, not unlike the countless shipping containers traversing the ocean on cargo vessels every day. Compatibility with this form of transportation enables the conveniences of modular construction to reach destinations where traditional construction would present much greater logistical challenges in coordinating the delivery and availability of various construction materials and labor.
Deluxe has firsthand experience with such long distances. The Sandals Royal Bohemian Hotel, for example, was built in our Berwick facility and delivered to the tropical island of Nassau in the Bahamas, more than 1,000 miles away. Want to learn more about how it was done?
Download the case study.
No matter how they travel the bulk of the distance, most modular units will arrive to the construction site, again by truck. It's at this stage that developers will want to ensure they're working with an experienced modular manufacturer who can handle this crucial stage properly, especially in congested urban settings requiring careful navigation and timing to minimize disturbance to the surrounding area.
The delivery of a modular building rarely occurs all at once, however. As crews can only install a given number of modules per day, depending on the size of the crew, and the construction site may have limited ability to store modules long term, units are often delivered on a daily basis throughout the course of the installation process, which can be completed in as little as a few days.
To learn more about how Deluxe Modular can help you complete your next project at a fraction of the time and budget, Book a Meeting with one of our modular professionals.