Tumgik
#Disteli-Dialog
dritacircle · 2 years
Text
Xscreensaver command
Tumblr media
XSCREENSAVER COMMAND INSTALL
XSCREENSAVER COMMAND UPDATE
XSCREENSAVER COMMAND DRIVER
ScreenSaver /c - Show the Settings dialog box, modal to the foreground window. The ScrnSave.lib library handles this for Screen Savers that are written to use it, but other Win32 Screen Savers marked 4.0 or higher must handle the following command-line arguments: ScreenSaver - Show the Settings dialog box. Windows communicates with Screen Savers through command-line arguments. Original product version: Win32 Screen Saver Original KB number: 182383 In line 7F8, replace “geteuid” with “getppid”.This article introduces command-line arguments for Win32 Screen Savers marked 4.0 or higher. Sudo grub-install -root-directory=/mnt /dev/sdaīUG : VLC is not supposed to be run as root. Open “/etc/apt//90user” and add this: APT::Cache-Limit "100000000" īUG : GRUB2 error: out of disk sudo mount /dev/sda1 /mnt
XSCREENSAVER COMMAND UPDATE
Then run this: sudo apt-get clean & sudo apt-get update -fix-missing Please increase the size of APT::Cache-Limit. Menue>Internet>Chrome>Properties>Comand and add this: /usr/bin/chromium-browser %U -user-data-dir BUG : run a *.deb sudo dpkg -i bīUG : E: Dynamic MMap ran out of room. System > Preferences > Keyboard ShortcutsĪdd new “Ctrl+Alt+L” with “xlock” ,apply done!
XSCREENSAVER COMMAND INSTALL
Run this command: apt-get install xlockmore gconf-editor System > Preferences > Startup Applications add this: /usr/bin/pulseaudioīUG : Couldn’t execute command: xscreensaver-command -lock Run this: sudo add-apt-repository ppa:webupd8team/mintbackup & sudo apt-get update Open the file “/etc/inputrc” and add this: set bell-style none To solved this run this: sudo rfkill unblock all Sudo apt-get install network-manager-gnomeĪdd the Network icon to the panel: echo auto lo > /etc/network/interfacesĮcho iface lo inet loopback > /etc/network/interfaces Sudo apt-get install network-manager-vpnc-gnome Sudo apt-get install network-manager-vpnc Sudo apt-get install network-manager-pptp-gnome Sudo apt-get install network-manager-pptp Sudo apt-get install network-manager-openvpn-gnome Network-manager-gnome – network management framework (GNOME frontend) sudo apt-get install network-manager-openvpn Network-manager-dev – network management framework (development files) Network-manager – network management framework daemon Network-manager-vpnc-gnome – network management framework (VPNC plugin GNOME GUI) Network-manager-vpnc – network management framework (VPNC plugin core) Network-manager-pptp-gnome – network management framework (PPTP plugin) Network-manager-pptp – network management framework (PPTP plugin) Network-manager-openvpn-gnome – Network Management framework (OpenVPN plugin GNOME GUI) Network-manager-openvpn – network management framework (OpenVPN plugin core) If you need more features at your network just install what you need:
XSCREENSAVER COMMAND DRIVER
Or you could add the ubuntu repository to your system, just open the “/etc/apt/sources.list” file and generate a list from, now you could add what you want.Ĭode: sudo sh n -buildpkg Ubuntu/lucidĪfter a reboot you could check your driver status with: fglrxinfo If you want the Update manager, run this: sudo apt-get install update-manager System > Administration > Software Sources Now you could choose your software sources at: Then run a update: sudo apt-get update & apt-get dist-upgrade Ubuntu software centre and update managerįor more Software, I installed the ubuntu software centre with this command: sudo apt-get install software-center This is an collection of problems and bugs I had with Backtrack 5 R2 ( Linux based Distribution).
Tumblr media
0 notes
derlift · 4 years
Photo
Tumblr media Tumblr media Tumblr media
Werkbetrachtung: Projektmitarbeiterin Stefanie Steinmann sinniert über Hasen von Samuel Buri
Während dem Lockdown haben wir die Mitglieder unseres Teams gebeten, sich je ein Werk aus den dazumal geschlossenen Ausstellungen auszuwählen, um es unserem Publikum in Erinnerung zu rufen und auf ihre ganz persönliche Art vorzustellen. Nun ist das Museum wieder offen – Wir laden sie deshalb mit dieser Werkbetrachtung herzlich dazu ein, den Kunstwerken in unseren Ausstellungen wieder im Original zu begegnen. Sollen Sie selbst Lust haben, eine – wie auch immer geartete – persönliche Werkbetrachtung mit uns und anderen Besucher*innen zu teilen, freuen wir uns über Ihre Zusendung auf [email protected]
Stefanie Steinmann, Projektmitarbeiterin Nachlasserschliessung Meinrad Peier, wählt zwei Exponate aus der Ausstellung «Und Hasen, Hasen schneit es fort, Millionen jede Stund'» von Hans Peter Litscher (Kunstmuseum Olten, 26.1.–16.8.2020):
Samuel Buri (*1935) Bouquet und Osterhas, 2019 Öl auf Leinwand, 70 x 80 cm Leihgabe des Künstlers, Ausstellungsansicht KMO 2020
Samuel Buri (*1935) Hase, 1985 Holz, bemalt, ca. 17 x 10 x 10 cm (ohne Ohren) Leihgabe des Künstlers, Ausstellungsansicht KMO 2020
Buris Hasen
Die Abbatiale de Bellelay (BE) widmete dem Künstler Samuel Buri 1985 eine Retrospektive. Dort kauften meine Eltern eine abstrakte Buri-Graphik, die seither im Esszimmer meines Elternhauses ihren Platz hat: sie zeigt eine Landschaft und ein Gewässer in verschiedensten Farben – im Vordergrund schwimmt eine kleine Ente, welche ich als kleines Mädchen immer bewundert habe. Mit diesem Buri-Bild bin ich aufgewachsen, habe es immer wieder während dem Essen betrachtet und bin dabei in diese farbige Welt eingetaucht. Ich verfolge deshalb das Schaffen von Samuel Buri (*1935) seit längerer Zeit und freue mich, wenn ich einzelne seiner Werke sehe, wie etwa 2018 im Kunstmuseum Basel anlässlich einer Schenkung des Künstlers ans Museum.
Während meines Praktikums im Kunstmuseum Olten 2019/2020 durfte ich den Künstler/Kurator Hans Peter Litscher kennenlernen. Seine schillernde Biographie fasziniert mich ebenso wie die Lebendigkeit, mit der er uns im Vorfeld der von ihm fürs KMO konzipierten Ausstellung über seine Erlebnisse mit zahlreichen Künstler*innen und anderen wichtigen Personen der Kunstszene berichtete.
Für seine Ausstellung «Und Hasen, Hasen schneit es fort, Millionen jede Stund’» im KMO war Hans Peter Litscher auf der Suche nach bösen, revolutionären Hasen – ein Motiv, das ihn schon seit Jahren beschäftigt. Neben Dieter Roth, Sigmar Polke oder Paul Thek erwähnte er wiederholt auch Samuel Buri, doch lange war nicht klar, ob ein Werk dieses wichtigen Vertreters der Schweizer Pop Art in die Ausstellung kommen würde...
Nach der Eröffnung, so wurde mir erzählt, kam Samuel Buri persönlich nach Olten und besuchte Litschers Ausstellung. Anscheinend war er so begeistert von dessen Wunderkammer voller Hasen aus der Kunstgeschichte, dass er unbedingt darin vertreten sein wollte. Kurz entschlossen brachte er wenig später das Gemälde «Bouquet und Osterhas» und die Holzskulptur «Hase» zur grossen Freude von Hans Peter Litscher nach Olten.
Das 2019 entstandene Gemälde «Bouquet und Osterhas» hat inzwischen einen Ehrenplatz in der Ausstellung gefunden – als Bindeglied zwischen Litschers Jagd-Wunderkammer im EG und dem verworrenen Hasenuniversum im 3. OG. In seinem Gemälde interpretiert Buri den uns allen bekannten traditionellen Ostertisch mit farbigem Blumenstrauss, Schokoladehasen und einem Teller mit gefärbten Ostereiern in der ihm eigenen wunderschönen Farbenwelt. Dadurch fordert er – typisch für sein ganzes Schaffen – mit dem Zusammenspiel von Farbe und Form das Auge der Betrachtenden heraus. Blumenstilleben zählen ja zu den wichtigsten Motiven Buris, daneben hat er sich mit seinen komponierten Bildern von Landschaften, Bäumen, Ateliers, Kirchen, Kreuzgängen ins Gedächtnis eingeprägt.
Buris 1985 entstandene Kleinskulptur «Hase» hat indes im 3. OG in einer Vitrine neben farbenfrohen Werken von Basquiat ihren Platz gefunden. Die Figur ist in Mintgrün und mit grossen violetten Tupfen bemalt. Irritierenderweise lagen ihre beiden übergrossen Ohren jedoch zunächst vom Körper getrennt da… [Anmerkungen der Redaktion: inzwischen sind sie in Absprache mit dem Künstler von unserer Restauration fachgerecht an ihren anatomisch korrekten Ort zurückbefördert worden.] Weshalb dieser (böse?) Hase von seinem Urheber derart bestraft wurde, weiss wohl nur Samuel Buri selbst und vielleicht auch sein Vertrauter, Hans Peter Litscher. Hoffen wird, dass er uns das Geheimnis an einer seiner Führungen verraten wird!
Stefanie Steinmann Kunstmuseum Olten, ehem. Praktikantin, aktuell Projektbeauftragte Nachlassaufarbeitung Meinrad Peier Veröffentlicht am 12.8.2020
0 notes
viking-raider · 4 years
Text
War Path *Fic Request*
Summary: Marshall is sent on a War Path, when you, his wife, and your daughter, Kate, are abducted by Simon Stulls.
Pairing: Marshall/You
Rating: R - Violence, language and sexual nature.
Word Count: 10,404
Inspiration: Request by @jessevans​ (x)
A/n: There’s dialog from the movie in the fic, I watched it repeatedly for inspiration and muse fuel.
Tag List: @jennylovelyheart​, @dontlikeudoyle​,  @betkaskarpetka​
Tumblr media
(Cred to @henrycavilledits​)
                                                          ---
“I love you, dad!” Kate called as he started out the door.
“I love you too, sweetie.” he called back, then turned to you.
“Be safe at work, Marshall.” You told him, standing on tip-toe to kiss him good-bye.
“Aren't I always, y/n.” Marshall told you, kissing you.
You watched Marshall get into his truck, he looked at you and smiled, before pulling off to go to work at the station.
That memory kept playing over in Marshall's mind.
                                                     – –
Marshall leaned on his arms against his desk as he reviewed the file on his current case. He just didn't understand how the guy had killed all those girls, he had the IQ of two, and that was being generous. Yet, he'd managed to lure all those girls, imprison them, rape them, and then dispose of them so well that many of them still hadn't been found yet. All Marshall could continue to think was he was having help from someone, and if they found out who, then they could break the case and lock the bastards up. Sighing, Marshall dropped down in his chair and rubbed at his eyes with one hand, then ran his hand through his curly hair, he'd only been in the office for three hours and he already felt like he had been there for thirty. He glanced at the picture frame on his desk of you and Kate, smiling bright and laughing, he'd taken the photo himself the winter before, when the two of you had outvoted him and went ice skating. Marshall found that the photo of you both was a simple solution to grounding him again while he was working, especially on hard cases like this one with Simon Stulls. There was a knock on his door, pulling him away from the picture.
“Detective,” it was regular uniformed officer. “Mrs. Chase is going to be doing a profile interrogation on that Stulls guy.”
“Alright, thanks.” Marshall sighed again, scrubbing a hand over his bearded face, and hauled his tall frame out of his chair to go down and watch the session.
Marshall joined Commissioner Harper in the viewing room to watch Rachel Chase talk to their perp. “Wow, Marshall you actually look good, what've you been up too?” Harper grinned, as Marshall folded his arms and watched Simon through the one way mirror. “Or is y/n slipping tranquilizers in your dinner?”
“Probably.” Marshall answered, not in the mood for banter.
Dickerman came into the room, holding a bag with some kind of device in it. “Look at this, it's the device he used to cause those girls' deafness, a pressurized air valve. Custom made and all. It injures the soft tissue in the ear.” she explained to them.
Marshall looked from the device to Simon, he snatched the device from Dickerman and moved out of the room and into the interrogation room, slamming the device down on the table beside Simon and scaring the hell out of him. Simon instantly started freaking out seeing the device, sliding as far away from it as he could with his hands cuffed to the table, and became hysterical.
“That's how he caused all those girls to go deaf.” he barked at Rachel, above all of Simon's crying and incoherent babble.
“Marshall...” Rachel started to protest.
“You're the one that wanted to be in here.” He cut her off, worked up.
“and I asked you not to be in here.” she countered.
Shaking his head, Marshall went back out of the room, slamming the door behind him, to scare Simon even more, and went back into the viewing room, crossing his arms and leaning against the wall as he watched Rachel continue to interview him. When the interview and what paperwork he needed to do was finished, Marshall decided to go home. It was well past midnight when he did finally get home. He closed and locked the front door quietly, not wanting to dist rub you and Kate, who he knew were asleep. Dropping his police bag on the floor by the door, he went into the kitchen and saw the covered plate of spaghetti on the counter for him, with a sticky note on it, in your handwriting.
Hope you caught the bad guys. <3
Sighing heavily, he squeezed his eyes shut and unwrapped the plate. He thought it was hard, when he was still on SWAT and got home late, missing dinner with you both nine out of ten times. He remembered being on a SWAT call and getting the call from you after that Kate had taken her first steps, or when she said her first word, which ironically was, Da. He thought it would be easier, better hours, if he moved to Homicide when Kate was a year old. And the hours had been for the first year, until he got promoted to lead detective and the hours became even worse than the hours for SWAT. Marshall didn't know how you did it, while he was out at all hours catching criminals, you were here at home with your daughter, holding the house down. You did everything, kept the house neat and clean, took Kate to and from school, made it to all her school events, soccer and gymnastic, doctor's appointments, homework and have dinner on the table, on time. You never complained about him hardly ever being home, you understand his job was vitally important to the citizens of the city. You were unendingly proud of him, and you always told him that. Marshall didn't know how he deserved such a strong woman, flawless wife and incredible mother to his daughter. But, he'd never allow anything to hurt either of you.
He finished eating, washed his plate and silverware so you wouldn't have to when you got up in the morning, and went up stairs. He pushed open the door to Kate's room and walked quietly in, letting the light from the hallway to flood into her room, to see her. He stood there in the dark for a moment, watching her sleep peacefully. Watching the rise and fall of her chest, to ensure the nagging voice in his head that she was safe, well and alive. He'd seen too many girls her age be dug up and found locked up because of Simon in the last week, and it fed into that obsessively protective dad voice in the back of his paranoid head. Reassured, Kate was perfectly fine, Marshall walked back out of her room, leaving the door cracked and finally made his way to the room he'd been thinking of all day. He got to the master bedroom and noticed the light coming from underneath, and frowned. Pushing the door open, he found you propped up against the pillows, sound asleep and your kindle resting on your chest. Marshall's chest wrenched, realizing you'd been reading in bed, trying to stay awake long enough to see him come home.
“Hey.” he whispered, picked the kindle up and setting it on your bedside table. “Y/n.” he called, cupping your cheek in his hand and tilting his head to look at your face.
“Marshall?” You whispered, you like everyone one else in his life, minus his mother and Kate, called him Marshall, because he absolutely hated being called Walter.
“Yeah, sweetie.” He smiled, stroking your hair.
“How was work?” You asked, opening your sleepy eyes to look at him.
He shook his head in a so-so manner, and sighed, moving away from you to get out of his thermal sweater and jeans. “The case is stressful, as always.” he told you, getting into bed beside you and resting back against the headboard. “I don't know how the guy we have, could have done it alone, he's not mentally capable, or sound, for that matter.” he dropped his head back against the headboard and stared at the ceiling.
You moved close to him, wrapping your arms around his muscular one, and rested your head against his shoulder, rubbing your cheek against his bare skin. “You'll figure it out, Marshall.” you assured him, closing your eyes. “You always do, babe.”
Marshall turned his face into your hair and closed his eyes; your scent and the solid warmth of your body against his, just your presence alone, gave Marshall the relief and grounding he needed after a long shitty day. The pair of you fell asleep, just like that. Marshall was woken up the next morning by the buzzing of his cell phone. Jolting up right, he snatched his cell off his night stand and looked at the message.
“Fuck.” He growled, getting up and throwing on clothes to race downstairs.
“What's wrong, Marshall?” you asked, seeing him in an agitated hurry.
“The asshole from my case just managed to kill six cops, while still in custody.” he said, yanking on his boots.
“Oh my god.” you gasped, pressing a hand to your chest as your stomach sank.
“I have to go.” Marshall said, picking his bag and keys up, and racing out of the house, without even kissing you good-bye.
                                                         – –
“How the fuck did he kill six cops, while in custody, if he's not getting some type of help?” Marshall argued with Rachel and Harper.
“He could have rigged it to go off on a timer.” Harper suggested.
“A timer he'd have to set up, if he knew we were coming for him, which he didn't.” Marshall told him, reasonably.
“Perhaps there are two of him.” Rachel suggested, following Marshall's train of thought. “I always felt like there were two of him, but, I always figured that second him, was a personality. What if, Marshall's right, and there's a second person, helping him.”
Marshall threw up his hands, exasperated, and frustrated that they were finally getting his point.
“Alright, let's go with it, then.” Harper folded, “I want you to check out whatever you can on his life, Rachel. I don't care, if you have to burn down the house, just find out what skeletons this idiot has in his closet.” he told them, before leaving.
“Alright, so, when we did our first search on Simon, we found out that his mother committed suicide, but, before that she was sexually assaulted, which resulted in Simon's birth, and reached a settlement for it. The county backlogs all the interviews for sexual assaults, in case of review. So, all we have to do is go down to the archives and find the tapes.” Rachel explained, yanking open the door.
“Alright then.” Marshall said, following her to the elevator and down to the basement where the files were kept. “Hey, Harper, I need two teams down in archives to help dig up--”
“Got it.” Rachel called, picking up the box of VHS tapes.
“Hold on that.” Marshall said, hanging up his phone.
“You wanna meet Simon's mother?” she asked.
Rachel and Marshall sat down and watched the tapes, making notes on anything that seemed of use. After watching all of the tapes, Marshall went back to his office looking over his notes and the file they already had on him, when a huge explosion rocked the windows of his office. Spinning around he saw the car parked out on the street on fire and a huge plum of charcoal black smoke rise into the air. Dropping the files in his hands, Marshall raced down to the street and skidded to a stop beside Glasgow, who stood staring, shocked, at the car with tears streaming down his face.
“Are you alright?” Marshall rested his hand on the tech's shoulder. “What happened?”
“I was going home, Quinn was walking with me and I told him I'd see him tomorrow and he got into his car.” Glasgow explained in a robotic voice. “I turned to go to my car, as Quinn got into his, then it blew up.”
Firefighters worked to put the fire out, and all the officers and people in the precinct knew that there was no way for Quinn to survive, making the case with Simon even more personal for them. Marshall went back into the office after the fire was put out and the team made a search of what remained of the car and took it to the lab. He found Rachel outside his office waiting for him. He stopped in front of her and crossed his arms over his chest, readying himself for whatever it is she had for him.
“We hacked Copper's computer and found he was talking to someone called Hunter. Hunter 71.” She explained, referencing the judge. “If you want to come down to the lab with me and check it out, might give you some type of distraction.”
Marshall rolled his eyes, tried, and nodded his head, following her down to the Cyber tech lab. He looked at the computer monitor of the female techie as Rachel went over what they had found on Cooper's computer, when Dickerson entered the lab, grabbing their attention.
“The explosive in the car was pentaerythritol tetranitrate. Commonly used.” she explained. “However, the compounds in the trigger are unique. High-intensity, stable, low surrounding impact, and dense. Expensive. Military Grade.”
“Simon said that, Santa comes and drops money off at the house every year.” Rachel said, rubbing the side of her face. “Maybe Santa pays the bomb maker.” She suggested, pressing her hand to her cheek as exhaustion started to finally set in.
“Run a search for military personnel in the state, born in 1971.” Marshall told the tech.
The tech typed in the search in the police database.
“Okay, which of those are trained in explosives?” Rachel asked, seeing how big the hit was.
“No longer in service.” Marshall added.
The window popped open on the screen showing three hits, two in red were deceased and, one in green, still living, was Lewis Redston. Getting the hit, Marshall got the all clear to track Redston to the factory he was living and working out of. He suited up, the old excited feeling of being on SWAT coming back over him as he picked up the assault rifle from the rack and going out to his truck. He pulled his phone out of his pocket before they drove to the factory five minutes away, and called you on the phone, it was a old habit he'd developed when he was still on SWAT to let you know he was going into a hot situation, he loved you and not to worry, which was futile cause you would. But, he caught himself before he hit the call button, he hadn't called you for that reason in years, and felt odd that he'd started to do it now. Shaking his head, he shoved his phone back into his pocket, and turned his mind to focus on the task ahead.
Getting to the factory, Marshall felt the adrenaline start pounding in his veins as they swung the door to the building open and entered. They started sweeping the building when shots started ringing out, one bullet hitting one of the officers. The order to pop a smoke bomb was given, giving the group the opportunity to retrieve the injured member and pull him to safety. Marshall hid behind a iron pillar as more bullets rang out, and ducked into a squat as a bullet hit the pillar by his head. Squatting down, he noticed the trail of blood going up to where the shooting was and carefully followed it, sneaking up on the shooter.
“Cease fire! Cease fire! Turn around.” he yelled at the man in the wheelchair, pointing his gun at him.
“Stay back!” the man warned, then pointed his hand gun under his chin.
“Wait!” Marshall yelled.
“We both know why you're here.” Redston remarked, resting the muzzle of his gun on his chest.
“You sold a trigger explosive to a man that abducted and killed more than ten girls.” Marshall told him, easing off his gun.
“What?”
“Don't you have a fucking newspaper?” Marshall snapped at him, frowning, and watching the expression on Redston's face dawn with recognition. “What else did you make him?” he asked.
“Uh, a signal blocker for cell phones.” Redston told him. “It was nothing.” he sighed as it all struck him. “That was the guy who locked up all those women?”
“Yeah.” Marshall nodded. “Someone out there has been---”
Marshall didn't get the opportunity to finish his sentence as Redston pointed his gun back under his chin and pulled the trigger, making Marshall wince.
                                                          – –
Rachel sat on the floor in the storage room after a hard interview with Simon. She wiped at the tears streaming down her face as an officer came in carrying a box and set it down on the floor in front of her.
“This came for you at the front desk.” he said, looking her over. “I signed for you, so you could have a break.”
“Thanks.” she sniffed, sitting forward to look at the box. “It's been a hard day.”
“You wanna get some ribs?” he asked, standing back up with a look that told her, he just wanted to help and give her a distraction from everything going on.
“No, I'm good. Thank you.” she told him, pulling the shipping label off the box.
Nodding, he left her alone to look at the box and whatever was in it.
“Marshall.” She frowned seeing Marshall's name on the sender's section of the label, and pulled a note off the top of it. Setting the label down, she unfolded the note.
“Winterbug, Winterbug
I'll throw you onto the ice.
Freeze or burn, til you play nice...
Tick Tock, Tick Tock....
Run, Silly Bean.”
“Everyone get out!” she screamed, running out of the storage room.
                                                           – –
Marshall was still at the scene of the factory when he noticed Harper pull up. He got into the passenger seat of the Commissioner's car, to talk to him.
“You know, I have to yell at people to get them to listen to me.” Harper commented as soon as Marshall closed the car door. “You don't.”
“What are you doing here, Harper?” Marshall asked, still not in the mood for his banter. “It's freezing cold, in the middle of the night.” he pointed out. “You don't--Well, I know you don't want to be here.”
Harper laughed, “I despise down time.” he told Marshall. “My wife use to scold me about never taking any. So, it doesn't feel right to put up my feet, where hers should be. You know.” He explained. “I'm still used to seeing you look like shit. You look, like, almost normal.” he chuckled, picking up his earlier comment. “What's going on?”
Marshall smiled, staring out the front window. “I'm just--” he paused, nodding his head slightly at him. “You know.”
Harper nodded back at him, getting it. Their conversation was cut short by the radio in his car turning on and radio dispatcher calling over it. “Bomb threat at the Police station. Everyone evac. I repeat, everyone evac.”
“Shit.” They both uttered, and Marshall got out of Harper's car to go to his own, and they both rushed over to the station.
Marshall got out of his truck. “Rachel, where is he?” he asked her, as she approached him.
“He's in his cell.” She told him. “The package came from you.” she added.
“This is bullshit.” Marshall told her, picking up his pace towards the station. “He's not going to blow himself up.” he started to run for the door.
“How do you know?!” Rachel yelled out to him, as he went down the stairs into the station.
“Cause then the game is over!” He yelled back, yanking the door open.
Marshall run down the hall and to Simon's cell, barging in and looking around it. “Fuck!” he barked, seeing it empty. He ran down the hall again, skirting around a corner and up the stairs to the storage room where the box was. He got into the room as the bomb techs were carefully opening it.
The techs carefully cut the tape on the box and slowly pulled back the flaps. They didn't find a bomb, but they were shocked to find a baby inside. Marshall's heart plummeted recognizing the baby in the box as Glasgow's daughter, seeing her and not seeing any signs of life, all he could think of was Kate. He pressed his hand over his face, hearing Glasgow's screams from outside in the hall, coming closer.
“Alicia!” Glasgow screamed, tearing into the room and dropping to his knees seeing his daughter in the box.
To the immense shock, and relief of the group, Alicia sneezed suddenly and yawned up at them, blissfully unaware of the terror going around her. Glasgow picked her up in his arms, pressing her to his chest and sobbed as he backed out of the room. Marshall stood there for several more moments, collecting himself, before having the overwhelming need to go home and hold both you and Kate tightly in his arms. He'd made it as far as his truck when he felt his cell buzzing in his front pocket, checking it, he saw your caller ID and felt instantly relieved. You always did have an odd sense of when he needed to hear your voice, and called him, he figured it was one those moments.
“Baby.” He answered, letting the relief show in his voice.
“Marshall.” You answered back.
The sound of your voice made both his stomach and his heart plummet again, he could hear the tear stained fear in it. “Y/n, what's wrong? Tell me, right now.” he demanded, his hands starting to shake.
“Marsh...” you started to say, but was cut off.
He heard you yelp, and Kate crying in the background. “Y/n!” he yelled into his cell.
“Hello, Detective Marshall.” Simon's voice came over the phone.
“Don't you fucking touch either of them, you freak!” Marshall barked, his eyes widening with anger and fear. “I swear to God, I will kill you, if you hurt them!” he threatened, his free hand tightening into a fist, as he tried to gain control of himself.
“Oh, what's the fun in taking them, Marshall.” Simon taunted him. “If I don't get to play with them.” he laughed, drowning out the sound of you and Kate crying.
Marshall's stomach twisted in knots. “I'm going to fucking kill you, Simon.” he growled over the phone. “And it won't be pretty.” he vowed.
“We'll see about that, Silly bean.” Simon laughed harder. “Say good-bye, Detective.” he said, holding the phone out to You and Kate.
“Marshall!” you yelled, hugging Kate against you.
“Daddy, help us!” was the last thing Marshall heard before the line went dead.
“Fuuuccck!” Marshall screamed at the top of his lungs, disturbing the cold night air around him and slamming his hands flat against the hood of his truck several times.
He raked his hands through his hair and stormed back into the station, “Rachel!” he yelled through hallways of the station. “RACHEL!” he screamed louder, getting even more irritated and frantic.
“Hey, hey!” Harper called, coming out of his office, hearing Marshall causing an uproar. “Marshall, what's wrong?”
“That fucking bastard has y/n and Kate.” Marshall barked, pacing the hallway like a caged tiger. “He fucking kidnapped my family, Harper.” He said quieter, his accent breaking as he did. “Simon has them.” he stopped in his tracks, pressing his hands to his face and crouched down, letting the emotions overwhelm him.
                                                             – –
You were making Kate dinner, when there was a knock on the door. Sighing, you stopped what you were doing and went to go answer it, you frowned seeing a medium height, blond man standing there. “Can I help you?” you asked him, the pit of your stomach giving you a bad feeling.
“Are you, Mrs. Marshall?” he asked you, looking you over with a look that made the feeling in your stomach grow.
“Do I know you?” you asked, taking a step back.
“No.” He smiled, sinisterly. “But, your husband does.” he said, pulling a gun from his jacket and pointing it at you.
“Oh...god..” you panted, feeling sick.
You backed away from the door as he came in, you looked around trying to find anything that you could use as a weapon to defend you and Kate. But, you saw nothing. You watched him look around the living room, kitchen and downstairs bathroom, you could only guess he was looking for anyone else in the house, making you pray to god Kate stayed up in her room, quietly.
“Is there anyone else in the house?” he asked you.
“N-no.” you shook your head, eyes locked on the muzzle of the gun.
“Don't lie to me!” He screamed, cocking the gun and shooting the wall next to you, making you yelp in surprise. “I know you and Marshall have a daughter, where is she?”
“She's at a friend's for a sleep-over.” You lied again, and yelped again when he shot the wall for a second time.
“Mom!” Kate called from upstairs, making you squeeze your eyes shut and take a shuttered breath.
“Call her down here!” he barked at you.
“Look, whatever you want, whatever is between you and my husband...” You started to beg him. “Just take me, and leave my daughter alone...she's just a kid.”
“I told you to call her down,” Simon growled, impatient. “If I go up there, it won't end well for either of you.” he warmed. “SO, CALL HER DOWN HERE!” he barked at you.
Taking several deep breaths to calm yourself, you called upstairs to your daughter. “Kate, sweetie, can you come downstairs, please.”
“Why?” She called back.
You rolled your eyes, of all times for her to employ pre-teen attitude. “Because I asked you too, young lady.” you replied, in your best authoritative voice.
Kate's groan was audibly from down the stairs. Ordinarily, if she'd pulled that you'd have sent her back to her room, and gone up to take her phone and laptop from her as punishment. But, you both found yourselves beyond ordinary circumstances. She came pounding downstairs and stopped dead on the second to last step, seeing Simon pointing the gun at you.
“Mooom?” she whispered, eyes wide with fear.
“It'll be alright, honey.” you told her, still watching Simon. “Hey, don't fucking point that at her.” you barked at Simon as he started to point his gun at Kate.
“Or what?” he taunted you, pointing the gun back at you.
“Hell hath no fury like a mother's love.” You quoted to him, slowly feeling your anger replace what fear you had; mother bear mode was starting to kick in.
“Don't you dare talk to me about mothers.” Simon sneered at you.
“Why, do you need one?” Kate asked, in a voice you wanted to take credit for, but, it oozed Marshall's sarcastic wit, a hundred percent.
Agitated, Simon popped off another round into a wall, instantly startling Kate and the sarcastic wit she had crumbled, making her cry and show the real eleven-year old she was. You instinctively started to move towards her, but stopped seeing Simon tense up.
“Where's your cell phone?” he demanded of you.
“In-in the....kitchen.” You told him, tempering your fear and want to be angry, for the safety of Kate.
“Get it, and don't do anything funny, or the next shot will be at your daughter.” Simon told you, cocking the gun again, and pointing it at Kate.
Your blood boiled as you carefully eased yourself into the kitchen and picked your cell phone up off the counter and went back into the hallway with them. “Alright, I have it.” You said, showing it to him.
“Call your husband.”
“Okay.” you gulped, unlocking your screen and hitting Marshall's speed dial.
“Baby.”
You could hear the pained relief in his voice, telling you he'd had a bad day, and knowing it was going to get a whole lot worse. “Marshall.” You answered, tears automatically falling.
“Y/n, what's wrong? Tell me, right now.” he demanded.
“Marsh....” You yelped, as Simon snatched the phone out of your hand.
“Y/n!”
Simon put the call on speaker, “Hello, Detective Marshall.” he smiled.
“Don't you fucking touch either of them, you freak!” You heard him scream on the other end. “I swear to God, I will kill you, if you hurt them!” Marshall threatened, only making Simon smile even more.
“Oh, what's the fun in taking them, Marshall.” Simon taunted him. “If I don't get to play with them.” he laughed as you and Kate cried.
“I'm going to fucking kill you, Simon.” Marshall growled over the phone. “And, it won't be pretty.” he vowed.
“We'll see about that, Silly Bean.” Simon laughed harder. “Say good-bye, Detective.” he said, holding the phone out to you and Kate.
“Marshall!” you yelled, hugging Kate against you.
“Daddy, help us!”
Simon laughed, dropping your cell on the floor and smashing it to bits under his foot. You held Kate as tightly against you as you could, watching him destroy your phone. Fear, anxiety and anger racing through you, making your heart pound and your body jittery with adrenaline. You wanted to be, and were, extremely scared, but you also knew Marshall was coming for you and Kate. You didn't know how, or when, but you knew he was, and when he did, Simon was going to get one hell of a beat down.
“Get up!” Simon barked, waving the gun at them.
Pulling Kate up with you, you stood up at his command.
“We're going outside to my car, if you make any sudden moves or any eye contact with anybody, I'll fucking kill you right there.” he told you, stepping aside and motioning the door with his gun.
“Okay.” You nodded, moving you both to the door. “It'll be alright.” you whispered to Kate, pulling the door open and making her go out first, so you were between her and Simon.
Simon pulled open the back of his van and shoved you and Kate inside, before slamming the door shut again. You leaned back against the van wall and held Kate against your chest, stroking her hair and trying to calm her down as much as possible.
“I'm scared, mom.” she whimpered.
“I know, baby.” you whispered back, rubbing her back. “But, daddy's going to find us.” You cupped her face in your hands and made her look you in the face. “Daddy's going to come for us, alright. You just remember that, whatever happens, remember Dad's going to save us. It's his job to protect us, and it's his job to find bad men like Simon, and make them pay.” You reassured her, holding her head against your chest, and squeezing your eyes shut against the hot tears burning in your eyes.
You had to stay strong for her, and you had to stay that way long enough for Marshall to find you both, or at least until he found Kate, if push came to shove.
Simon got into the van several minutes later, slipping into the driver's seat and started the van up. “We're going to enjoy our play time together.” he grinned in the rear-view mirror, and laughed seeing the dark expression you shot back at him.
                                                              – –
“Is there any fucking thing else, we know on this bastard?” Marshall asked, pacing in the tech room as he, Rachel and the computer tech worked on finding anything that could give them a hint, or a lead, on where to find Simon, and ultimately you and Kate.
Before either the tech or Rachel could answer his question, his phone rang. “What?” he barked, not even checking to see who it was.
“Marshall, it's Cooper.”
“What do you want, Cooper?” Marshall asked, rubbing at his eyes.
“I heard what happened.” Cooper told him, understanding some of what Marshall was feeling and thinking. “The Commissioner and I have found the mother's file in the Archives, 1976. Amy Stulls. Rape and attempted murder. The settlement was out of court for $1.4 million, but the payee's name is not listed in the reports.” he explained.
“Great.” Marshall said, feeling some of his blood pressure go down as he walked out of the tech room. “Can you come down to the station?” he asked, walking down the hall to Harper's officer.
“I'll do my best.” Cooper told him, turning around as Marshall entered the office.
Marshall narrowed his eyes at the judge turned hacker vigilante. He moved between Cooper and Harper, who sat in a chair in front of his desk. “Make yourselves comfortable.” Marshall said, plopping down into his chair, behind his desk, as Cooper dropped at thick, white file folder down on his desk. He flipped it open and started looking through it, finding huge chunks of the report was blacked out.
“Well, he's covered his tracks well.” he said, leaning back in his chair as his office phone rang. He answered it, putting it on speaker phone. “Yep?”
“The father's name isn't on any of the reports.” Rachel replied. “and I can't find any thing on him in the database.” she explained, frustration clear in her voice, you and Rachel had become great friends throughout her time with Marshall, you'd become one of her confidential friends in the problems she was having, especially with her cheating pig of a husband. “If the commissioner had given me the fucking time that I needed to find it, instead of fucking yelling at me, then maybe we'd have a clue where he was right now, so we could save y/n and Kate.”
“Are you going to word it that way in your report?” Harper asked, catching her off-guard. “We know he knew the mother and that he paid her off. If he didn't own that textile factory, then see who does own the building.”
“Patching it through.” Rachel told him, leaning closer to the monitor.
“MCG industries. A state-wide textile and supply distributor.” the Techie read it off. “Founded by David McGovern. Recently in a car accident with one, Michael Cooper.”
Marshall's head snapped up to look at Cooper, who looked as shocked and caught off-guard as he was. Cooper replayed the incident in his head, remember the older man he'd gotten into the accident with, when he was chasing after, who he now knows as Simon, when he abducted Lara.
“McGovern's also serving as chairman of the board of benefactors to Flexton Prep, where he currently resides on campus.” the Tech added.
Marshall and Harper exchanged looks, and Marshall was up and going before he finished processing another thought. The team rushed to McGovern's residence, when they got into the hall leading to McGovern's apartment, they could hear Simon yelling at the top of his lungs. They busted down the door and swarmed in, finding Simon sitting at a dining room table, and David McGovern all bloody on the living room floor, clutching a bear.
“Drop the fucking knife, Simon.” Marshall yelled, pointing his gun at him, and fighting the overpowering voice in his head telling him to shoot Simon right there. But he didn't, he needed the bastard alive to find you and your daughter. “Drop it!” he barked one last time.
“I want my bear!” Simon sobbed, rocking back and forth in his chair. “I want my bear.” he kept repeating over and over again.
“Shut the fuck up.” Marshall barked back, slamming his against the dining table, forcefully. “Only thing you're getting is handcuffed.” he said, yanking Simon's hands behind his back and slipping his hands into cuffs, tightening them painfully.
“I want my bear!” He kept yelling.
Rachel looked at the body of McGovern, realizing that he was Simon's father, and leaned over to take the brown teddy bear from his cold hand. “Is this the teddy bear your mommy gave you?” she asked, holding the bear up for him to see.
“Mommy's bear.” he cried. “I want mommy's bear!”
“I'll give you Mommy's bear, if you tell us what we want to know.” Rachel bargained with him. “How about that? Bear for what we want.”
“Yes, yes!” he nodded, rocking his body. “Want Mommy's bear.”
“Good.” She nodded at Marshall, who hauled Simon up out of his chair and dragged him out of the apartment to the awaiting police car, so they could take him back to the station for interrogation.
                                                            – –
You were both freezing in the back of the van by the time Simon had driven you and Kate to wherever it was he was taking you. He parked and got out, you could hear the crunch of snow under his feet as he approached the back of the van, making your fear spike again.
“You remember what I told you, Kate?” you asked her, looking down at her face.
“Yeah, that Daddy was coming to get us.” she answered, shivering.
“That's right.” you nodded, breathing hard and trying to keep a strong face for her. “Whatever happens to me, Kate. I need you to stay strong and wait for him to come, do you understand me, Katelin?”
“Why are you saying this?” she asked, fear starting to really show in her blue eyes, that where identical to Marshall's. Even that brown fleck in the top, but hers was in her right eye, while Marshall's was in his left eye. “What's going to happen to you, Mom?”
You smiled at her, but the fear and worry you were feeling showed in it, as you brushed her long, curly chocolate brown hair out of her face; making you wonder for a moment, what of you she had, she seemed to have so much of Marshall's in her. “I don't know if anything will, Kate. But, I'm just covering all the bases.”
“You sound like dad.”
That got a genuine smile on your face. “When you're married to a Detective, like your father, for almost fifteen years,” you quipped. “things start rubbing off on you.”
The back door thrust open and Simon grabbed you by the hand, yanking you out of the car, followed by Kate. It was really dark outside and snowing, adding to how cold you and Kate were already, seeing neither of you had jackets, just thin shirts and jeans. He dragged you both into a house, it was a huge three story and well furnished, from what you could see. Forcing you through the foyer and into the living room, Simon yanked open a door between the living room and kitchen, which you correctly presumed was the basement. The basement itself spanned the entire house, full of junk and whatnot, he turned into a long room to one end of the basement, where there were padlocked stalls made out of thick plywood with a narrow slot window was cut into the door. Unlocking one of them, he shoved you both inside, slammed the door and padlocked it again.
“I'll be back in a bit, then we can play.” he smiled, through the slot before walking away, leaving you two in the dark, cluttered and smelly stall.
You slid down the far wall, pulling your knees to your chest and wrapping an arm around Kate's shoulders and she sat next to you, resting her head on your shoulder. You rested your head back against the wall and stared up at the dark ceiling, you could hardly see, and willed yourself to keep it together, you willed Marshall to hurry up and find you. You prayed nothing would happen between now and when Marshall did finally find you. But, you weren't stupid, you knew something was going to happen, you'd listened to Marshall talk about the case on Simon's activities, all the girls he violated and killed, the six police officers, and so much more. You wished in that moment, you hadn't always asked him about the case he was on, pressing for details. You couldn't help it, though, you'd been working on getting your Master's degree in Criminal Psychology, when you found out you were pregnant with Kate, and dropped out, to become a stay-at-home mom. Hearing about Marshall's cases brought that section of your mind back out, satisfying it. Not saying that Kate didn't satisfy you, you knew she was more important to you than pursuing a career in that field ever could be. But, that Criminal Psychologist section of your brain started to analyze Simon's behavior and mental reasoning, and it wasn't doing anything to calm you down. You tensed hearing his footsteps coming back to the stall, wrapping your arms tighter around Kate, readying yourself.
The door opened and Simon smiled at you. “I just got off the phone with your husband.” he told you, proudly, but you could see something lingering in the back of his eyes. “He's just arrested my brother, again.”
“Brother?” you asked, before you could help it, there goes that damn Psychologist brain again.
“You see,” Simon said, squatting in the doorway. “I have a identical twin brother, that's how I've been fooling people, like your moronic husband.” he explained to you.
That suddenly made a world of sense, Marshall believed the Simon they had in custody wasn't smart enough to pull off everything that happened, that he was getting help of some kind. Help from an identical twin would get the job done, allowing them to swap back and forth, with no one the wiser. You didn't want to admit it, but you had too, that was pretty genius.
“He's not intelligent like I am,” Simon was saying. “But, I fucking love him.”
You slowly licked your lips, hoping you could keep him talking, depending on how he contacted Marshall, Marshall might be able to trace the call to where they were. “I'm sure you do.” you said in a neutral tone. “Twin bonds are incredibly unique and strong. You must want him back, if Marshall has him.”
“Oh, I very much do what him back.” Simon agreed, eyeing you and Kate. “But, first, I wanna have some fun.” he told you, reaching out and grabbing Kate's leg.
“Mom!” she screamed as he started to pull her over to him.
“Whoa!” You yelled, standing up and slamming your foot down on his wrist, forcing him to let Kate go. “You want someone to play with, play with someone your own size.” you threatened him, your hands clenching into fists.
Simon stood up and looked you over, licking his lips as his eyes wandered over your body, resting on your breast first, before meeting your eyes. “Fair enough.” he grinned, gripping your wrist and pulling you out of the stall.
“Mom!” Kate yelled, tears flooding her eyes. “Mommy, no!”
“Kate, what did I tell you?” You called to her, your own tears blurring your vision. “Remember, what I told you, Katelin.” you repeated as Simon closed and locked the door to the stall.
You blinked at the tears, feeling them fall down your cold cheeks like liquid fire, as you stared angrily at Simon, closing your emotions off into an iron fortress to numb yourself for whatever happened next. He grinned at you, enjoying the tears and pure hatred in your eyes, reaching out to wipe away one of them, making you jerk your head away from his hand, which only rewarded you with a slap that almost sent you reeling into the wall. He grabbed you by the neck, feeling his fingers bruising your skin as he did, forcing you down the hallway and up the stairs.
Simon led you upstairs from the basement and up the two flights of stairs to the top floor. There were so many rooms, empty and collecting dust, you wondered what the house had been before Simon and his twin had gotten there. Shoving you into a room at the end of the hall, he pushed the door almost closed. You stumbled into the room, catching yourself on a dresser before you fell, and turned towards Simon, your expression from the basement hadn't changed a fraction. You weren't giving him anything to go off of, if he wanted a different reaction from you, he'd have to kill you for it.
“Do you like playing with that big oaf of a husband, of yours?” Simon asked, coming closer to you and running his hand up your stomach. “Does he preform well?”
“Fuck yourself.” You snapped at him.
Simon frowned angrily and punched you square in the stomach. You bent in half gasping for air as the pain ripped through you. He grabbed you by the back of your hair, yanking your head back painfully. “Feisty, I love it.” he grinned, using his hand in your hair to throw you onto the bed. “Bet Marshall does too.” he laughed, pushing you over on the bed and ripping open your shirt, revealing your black lace bra underneath.
You panted, stomach still hurting, as he groped your breasts. Gulping, you pushed your head back, so you didn't see him as he touched you. He pulled at the belt in the loops of your jeans, but became angry when he didn't manage opening it. He moved away and yanked open one of the drawers of the dresser, rummaging around before finding what it was he wanted in there. You looked down your body at him, biting into your lip hearing the click of pocket knife opening.
“Shit.” you panted, quietly.
He turned back to you, slipped that blade between your jeans and belt, and with an easy flick of the sharp blade, cut your belt off. He pulled the cut belt off of you, shoving the still open knife into his own belt and worked on opening your jeans. You gripped the blanket beneath you, trying to control yourself and the mounting chemical in your brain trying push your fight or flight response into action. You didn't want to fight him, or run, afraid that if you did, he'd take it out on Kate. He yanked off your wet UGG boots, then peeled off your jeans and laughed, seeing the matching black lace panties you wore. You felt impossibly dizzy feeling his fingers trace the edge of your panties and touching you through them. It was too much, and your fight or flight had won out, you sat up, kicking him in the chest and got up to run for the door. But, Simon caught himself and managed to grab you by the hair again, whipping you around and slamming you against the door. There was an intense tingle, like a severe electrical shock, that shot through your abdomen, close to your hip, followed by a immense heat. You looked down and saw he'd stabbed you with the knife, and looked back at him, shock setting in.
“You do that shit again, and I'll kill both of you.” he spat in your face, like venom. “Got it, bitch?” he barked, pressing the blade to your chest to get the point across.
All you could do was nod, shock had set in and you felt like you were on another plane altogether. He grabbed you by the shoulder and pushed you back onto the bed, using the knife one last time to cut the lace panties off of you before tossing it to the floor. He popped the button of his baggy jeans and let them pull around his ankles, pushing his boxer briefs down his thighs enough to pull his hard prick out, and used on of his knees to push your limp legs open. You gasped more from the pain of him putting pressure on your stab wound them him shoving himself inside of you.
But, that pressure would end up saving you from bleeding out.
                                                         – –
Marshall went into the other Simon's cell, causing him to slide off the metal bench and huddle into corner of the cell, slowly becoming hysterical over Marshall's presence. Marshall pulled his service weapon out of his holster, removed the clip, showing Simon that it was full and slid it back in, before pulling back the slide to put a bullet in the chamber, and set it on the metal table. He crossed his arms over his chest, towering above him and looking at him with serious amount of disgust.
“Where are y/n and Kate, you stupid fuck?” he demanded.
“No, No!” Simon cried, huddling up even more.
“Where--” Marshall was cut off by his cell ringing. He ripped it out of his pocket, seeing there was no caller ID, but answered it anyway. “Who the fuck is this?” he barked.
“Hello, Marshall.” A familiar voice answered.
Marshall's eyes grew wide, staring at Simon in the corner, the dots to his theory that there was more than one person helping him, connected. “Who is this?”
“This is Simon.” the voice answered, laughing. “I hear you arrested my identical twin brother again.”
“Twins...” Marshall repeated, shocked.
“That's right, silly bean.” Simon laughed. “I have your dear daughter and beautiful wife, not the me in the cell with you.”
“How did--” Marshall shook his head, he knew he was in the cell with his brother because he was still crying. “I'll make you a trade.” he said, steeling himself. “Your brother for my wife and daughter.”
“Hmm.” Simon hummed. “Tempting, very tempting, Detective.” he said, sounding like he was thinking it over. “I think I'll play with your little family first. Then, I'll call you back.” he told Marshall, then hung up.
“FUCK!” Marshall screamed, startling the Simon in the cell with him. He threw his phone on the metal table and grabbed Simon by the shirt, pulling him up and slamming him against the wall, leaving his feet dangling. “Tell me where your brother is!” he yelled at him. “Tell me, now, or I'll take that fucking bear and destroy it!”
“No, my bear!” Simon sobbed, reaching for the bear on the table, next to Marshall's phone. “I want my bear!”
“Tell me!!” Marshall barked, shoving him against the wall again. “Now!!”
“Da-Daddy's house.” Simon cried, slobbering all over his shirt. “He's at Daddy's house.”  he repeated, reaching for his bear. “My bear.” he mewled.
Marshall dropped him, swiping his phone off the table and stormed out of the cell, back up to the tech room where Rachel and Cooper were, trying to find anything of use. “Does David McGovern have any houses, besides the apartment on the school campus?” he asked, tearing into room like a tornado.
“I don't know, we can look.” Rachel said, sheepishly. “Look up any other properties owned or previously owned by David McGovern.” She told the tech woman.
After a few minutes of typing and narrowing the search down, the group found out that McGovern did, in fact, own a house thirty minutes away from the station. Not waiting, or even suiting up, Marshall charged down to his truck and tore out of the station like a man on a warpath. He was, indeed, on a warpath. The ordinarily thirty minute drive to the McGovern house, only took Marshall twenty minutes. He saw the van outside the large house, and got out of his truck, checking his service gun once more, he approached the house, carefully. It seemed all dark inside, but Marshall wasn't leaving until he was sure you and Kate weren't inside. Checking the front door and finding it locked, he started checking windows and any other door. He found that the back door leading into the kitchen was open, and carefully crept inside, checking every nook and corner, until he found the door to the basement, he remembered the other house, the one they'd found the impaired Simon, Lara and Julie. Opening the door, Marshall went down the stairs and looked around, finding the same set of identical stalls in this house that he'd found in the last one.
“Y/n?” He called, softly. “Kate?”
He heard a rustling from one of the stalls, and his heart gave out.
“Daddy?” Kate called, appearing at the narrow window in the door.
“Hey, baby girl.” He grinned, over relieved.
“Oh, god, Daddy.” She cried, seeing him.
Holstering his gun, Marshall looked around the basement for something to force the lock and found a crowbar under a bunch of junk, and used it to break open the door. Kate rushed into Marshall's arms, wrapping her arms around his waist and burying her face into his chest, sobbing freely. Marshall held onto her for dear life, resting his cheek on her head and rocking her side to side.
“Where's your mother?” he asked, looking into the stall she'd been in and seeing it empty. He didn't hear anything from the other stalls, and he knew if you were in one of them, you'd have said something by now, it made his stomach twist up again.
“He took her.” Kate sniffled, looking up at him. “He took her somewhere. He tried taking me, but Mommy convinced him to take her instead, and she made me promise that no matter what happened to her, that I'd stay strong until you found us. And you found us, Dad.” she cried, burying her face in his jacket again.
“Alright.” Marshall nodded, kissing the top of her head. “You did an amazing job, sweetheart. I'm proud of you, and glad you listened to your mum. She'll be proud of you as well.” he reassured her. “Look, we're going to go upstairs, alright. I want you to take my keys.” he pulled his keys out of his jacket pocket and pressed them into her hand. “I want you to go out the front door, back up should be here soon, and I want you to get in my truck, lock all the doors, in lay low in the back seat and not unlock it, or come out unless you see me, or Rachel.” he explained to her. “Understood?”
“Yeah, dad.” she nodded, wiping her face.
“Good, girl.” he smiled at her, softly, taking off his jacket and wrapping it around her.
Marshall led them both upstairs, Kate behind him and holding on to the back of his shirt. They got upstairs and to the front door, Kate opened it and looked back at Marshall, who gave her a stern, go look, before pulling his gun back out and starting up the stairs. He was halfway down the hall of the second floor when he heard bumps coming from the third. Taking that cue, he made it to the stairs leading up to the top floor and went up. All the doors on the top floor were open, minus the last door at the end of the hall, which was closed. He eased himself down to the door, resting his free hand on the handle, and carefully turning it and cracking open the door. From the crack Marshall could see your head and shoulders on a bed, so he pushed it open a bit more, seeing the rest of you, seeing you half naked, and the blood staining the quilt on the bed beneath you. He didn't see Simon for a moment, before he came into view as he leaned on his arms at either side of your head. You were clearly on the last edge of losing consciousness from the blood loss by the look of your face and how lethargically you moved. Marshall's blood pressure spiked, he put his gun away and kicked open the door, deciding shooting Simon wasn't going to cut it. Simon backed away from you, startled by Marshall's sudden entrance.
“Looks like the Silly Bean found us.” he chuckled, eyeing Marshall.
Marshall panted with flowing adrenaline and rage, he took a big step forward, arms shooting out to grab Simon by the shirt and tossing him against the wall behind him, sending him crashing into the dresser and to the floor. Marshall advanced on him again, and repeatedly kicked Simon in the stomach and chest, stomping on his side and legs.
“I fucking told you!” Marshall raged. “I'd fucking kill you and it wouldn't be pretty.” he seethed, almost foaming at the mouth, and kicked Simon in the face.
Simon laughed as blood poured from his nose, which only enraged Marshall more. He picked him up off the ground like he weighted nothing at all, slammed him against the wall and wrapped his hands around his throat. Simon struggled, kicking his feet and gripping at Marshall's hands, desperately.
“Marsh-all.” You moaned, lulling your head to the side, seeing Marshall through you fuzzy vision, strangling Simon, who's face was turning from red to purple, quickly. “Marshall.” you said, louder and clearer, finally getting his attention. “Don't.” you whimpered, licking your dry lips.
“Why not!” He barked, every inch of his body shaking as the adrenaline started to wear off and he was fueled by pure emotion. “Look what he's done! The women and young girls he's hurt, the family's that have lost everything.” he rationalized. “Look what the fuck he's done to you, what he wanted to do to our daughter! He doesn't deserve to breathe!”
“You...” you gulped, almost passing out again, but shook your head to clear it. “You are...better than that.” you mewled, the agony from your wound starting to really kick in. “You kill him, you are lowering yourself to his level, Marshall.” you looked over at him, seeing the tears streaming down his face. “That is not the man, I love.” you told him, sincerely.
Marshall's hands squeezed even tighter around Simon's throat as he screamed with frustration, knowing you were right and not wanting to disappoint you, he just wanted you, period. Jerking Simon and punching him in the face with all the strength he had in those muscular arms, Marshall knocked Simon unconscious. He dropped Simon on the floor and crossed the room to you, dropping to his knees and carefully pressing a hand to your wound, making you scream in agony.
“It's alright, baby. I've got you now, y/n. I got you.” Marshall panted, slipping his arm under your back and an arm under your knees, scooping you up into his arms, stepped over Simon's unconscious body and carried you out of the room.
He'd come downstairs with you as the team entered the house. “He's on the top floor, last room on the left.” he told them, not stopping as he did. He carried you to the waiting ambulance, so they could take you to the hospital.
“Mom!” Kate screamed, letting go of Rachel to run to you, but Marshall caught her in his arms.
“She's alright, Kate.” Marshall told her, hugging her. “She'll be alright, I promise.” he said, kissing the top of her head and looking at Rachel, who got the hint and came over. “Rachel's going to take you home in my truck, alright. I'm going to go in the ambulance with your mum. I'll call, if anything happens.” he explained, letting her go and directing her in Rachel's direction.
“But, dad...” Kate started to protest, but Marshall gave her another stern look and she gave up. “Fine.” she huffed.
“Good, I love you.” Marshall told her, kissing her head one more time, before climbing into ambulance with you, taking your hand between both of his.
“Kat...” you whispered, turning your head to look at him.
“She's safe, y/n.” He smiled, reaching out to brush your hair out of your pale face. “She's with Rachel.”
“And...the twins?” you asked, frowning at him.
“You know they're twins?” Marshall frowned back.
“Yeah, he told me, before...you know.” you explained, the agony of your wound making you exhausted.
“They're being taken care of, the impaired Simon is locked up at the station and this one is being handled by the team.”
“Good.” You said, and went quiet for the rest of the ride to the hospital.
                                                        – –
Marshall helped you into the house, you'd just been discharged from the hospital after a week in the care unit for your stab wound, that thankfully hadn't damaged anything important. You stood in the hallway and saw the white spots on the mocha brown walls, where Marshall obviously patched the bullet holes, but hadn't gotten around to painting them. Marshall rested his hands on your shoulders, coming up behind you and kissed your neck, seeing your eyes on them. He wrapped a gentle arm around your waist, pulling you to lean against him.
“You alright?” he whispered into your ear, his breath warm on your skin.
“I'll be fine, Marshall.” you whispered back, resting your head back against his shoulder.
“Mom!” Kate's voice yelled as she charged down the stairs to you.
“Whoa, easy tiger.” Marshall warned her, seeing the excitement in your daughter's eyes. “She's still hurt, remember.”
“I know, dad.” she said, slowing herself down and gently hugged you. “I missed you.” she whispered into your neck.
“I missed you too, sweetie.” you whispered, hugging her back.
Marshall smiled and carefully enveloped the both of you in his arms, a profound feeling filling him as he held you both in his arms, knowing you were finally safe and sound.
255 notes · View notes
kabargames · 4 years
Photo
Tumblr media
Memalukan! Terbukti Bermain Curang 37 Pelatih CS:GO Dibanned
(function(d,a,b,l,e,_) if(d[b]&&d[b].q)return;d[b]=function()(d[b].q=d[b].q;e=a.createElement(l); e.async=1;e.charset='utf-8';e.src='//static.dable.io/dist/plugin.min.js'; _=a.getElementsByTagName(l)[0];_.parentNode.insertBefore(e,_); )(window,document,'dable','script'); dable('setService', 'kabargames.id'); dable('sendLogOnce'); dable('renderWidget', 'dablewidget_1oV9EjXP'); Setelah sebelumnya Kabar Games membahas cara download dan Install Line for PC, kali ini kita akan menjelaskan cara download, install dan setting menggunakan aplikasi SHAREit  di komputer atau laptop. Tak dipungkiri, mengirim data baik dari Smartphone, PC maupun laptop biasanya akan memakan waktu yang cukup lama. Terlebih jika data yang dikirim berupa video yang berukuran cukup besar. Beberapa tahun terakhir, hadir sebuah aplikasi yang menjadi favorit banyak orang karena kelebihannya yang dapat mengirim data dengan waktu yang terbilang cepat, aplikasi itu adalah SHAREit . Aplikasi buatan Lenovo ini, memungkinkan Kamu untuk mengirim semua jenis file media berupa dokumen, foto, video, audio, aplikasi dan game ke berbagai perangkat. Baca Juga : Cara Mudah Menggunakan Filter Monyet Instagram, Bikin Ngakak 15 Aplikasi Kamera Tembus Pandang Terbaik, Asli Transparan! 12 Situs Download Software Gratis dan Terlengkap 2020 17 Aplikasi Edit Foto PC Gratis Terbaik 2020 10 Aplikasi Kompres PDF Android dan PC Terbaik 2020, Gratis! googletag.cmd.push(function() googletag.display('div-gpt-ad-9949385-2'); ); Itulah kenapa banyak orang yang tertarik untuk mengunduh aplikasi yang sudah mencapai 1,3 miliar pengguna pada tahun 2018 itu. Cara mengunduh aplikasi ini terbilang sangat simpel. Di postingan kali ini Kabar Games akan membahas mengenai cara download, install dan setting aplikasi SHAREit for PC. Tak ketinggalan pula dengan berbagai macam tips dan trick bagaimana menggunakan Share it di komputer atau laptop yang pastinya Kamu belum tahu. SHAREit for PC Untuk bisa menggunakan aplikasi SHAREit di PC, terlebih dulu Kamu harus menginstall aplikasi SHAREit tersebut. Kamu dapat mengunduh aplikasi berbagi file tersebut secara gratis melalui situs resmi Share it, dan berikut ini adalah cara download dan install aplikasi SHAREit for PC: NATIVE CONTENT Kimi Hime: Biodata, Fakta, Meme, Foto & Thumbnail Seksi di YT KameAam: Biodata, Fakta & Foto Cosplay Seksi Mobile Legend Lola Zieta: Biodata, Fakta & Kumpulan Foto Cosplay Seksi Sarah Viloid: Biodata, Fakta & Kumpulan Foto Seksi Cara Download dan Install Buka situs resmi Shareit melalui aplikasi browsing di laptop kamu, atau langsung klik link berikut: www.ushareit.com Download aplikasi tersebut sesuai dengan sistem operasi laptop kamu (Windows, MacOS, dll) Buka file installer SHAREit yang sudah diunduh, disana akan muncul kotak dialog Security Warning. Tekan “yes” lalu pilih tombol “accept” di kolom license agreement. Ikuti petunjuk dari proses instal dengan mengklik “next” pada opsi lokasi file dan shortcut. Yang terakhir, klik “finish”. Secara otomatis Shareit akan terbuka dan siap digunakan untuk berbagi file apapun. Sekarang Kamu dapat menggunakan aplikasi ini! Cara Menggunakan Aplikasi SHAREit Meski terbilang mudah, nyatanya banyak pengguna ayang masih kesulitan saat menggunakan aplikasi SHAREit saat akan mengirim maupun menerima file. Oleh karena nya, kami akan menjelaskan bagaimana cara menggunakan SHAREit di PC. Berikut langkah-langkah mudahnya. Loading… (function()var D=new Date(),d=document,b='body',ce='createElement',ac='appendChild',st='style',ds='display',n='none',gi='getElementById',lp=d.location.protocol,wp=lp.indexOf('http')==0?lp:'https:';var i=d[ce]('iframe');i[st][ds]=n;d[gi]("M450849ScriptRootC398142")[ac](i);tryvar iw=i.contentWindow.document;iw.open();iw.writeln("");iw.close();var c=iw[b];catch(e)var iw=d;var c=d[gi]("M450849ScriptRootC398142");var dv=iw[ce]('div');dv.id="MG_ID";dv[st][ds]=n;dv.innerHTML=398142;c[ac](dv);var s=iw[ce]('script');s.async='async';s.defer='defer';s.charset='utf-8';s.src=wp+"//jsc.mgid.com/k/a/kabargames.id.398142.js?t="+D.getYear()+D.getMonth()+D.getUTCDate()+D.getUTCHours();c[ac](s);)(); Buka aplikasi SHAREit for PC yang sudah berhasil Kamu unduh Jika Kamu ingin mengirim file, maka pilihlah tombol send. Jika Kamu bertindak sebagai penerima, maka tinggal pilih Receive. Selanjutnya pilih file apa saja yang ingin dikirim. Jika semua sudah masuk ke dalam daftar dipilihan, tekan tombol send. Temukan avatar SHAREit perangkat lain Lalu masukkan password Tekan avatar tersebut maka proses pengiriman akan berjalan otomatis. Selain dengan password, Kamu juga bisa menghubungkan aplikasi SHAREit yang ada di laptop dan smartphone dengan menggunakan QR Code. SHAREit for Mac Pertama kalian harus mengunduh file berekstensi DMG terlebih dahulu. Setelah berhasil, silakan double klik pada file tersebut. Klik Next untuk melewati langkah Setup. Klik next lagi dan tunggu hingga proses instalasi selesai. Tunggu, karena permintaan pemasangan di macOS kalian sedang di proses Jika sudah selesai, Klik finish. Selamat, aplikasi sudah terpasang. Kalian sudah bisa menggunakannya untuk mengirim data ke sesama pengguna SHAREit PC. Fitur SHAREit Baca Juga : Cara Mudah Menggunakan Filter Monyet Instagram, Bikin Ngakak Boleh Dicoba! 4 APK Penghasil Kode Redeem FF, Auto Sultan 15 Aplikasi Kamera Tembus Pandang Terbaik, Asli Transparan! 10 MOD Minecraft Paling Banyak Diunduh, Mana Favorit Kamu? Freefirc.xyz Bisa Hasilkan Diamond FF Gratis? Ini Faktanya! Layaknya aplikasi berbagi file lain nya, Shareit juga mempunyai kelebihan dan kekurangan. Berikut plus minus aplikasi SHAREit. Kelebihan Aplikasi SHAREit Kecepatan transfer datanya mencapai 20 MB per detik Dapat mengirimkan berbagai macam file seperti dokumen, foto, video, audio, aplikasi dan game Tidak ada batasan jumlah file yang dikirim (Semau Kamu) Bisa digunakan tanpa kuota internet Support dengan semua sistem operasi (OS) Bisa mengirim file ke berbagai platform. Bisa mengirimkan file ke 5 perangkat sekaligus secara bersamaan. Kekurangan Aplikasi SHAREit Shareit tidak bisa digunakan untuk mengirimkan SMS maupun data ke E-mail. Shareit hanya bisa digunakan dengan perangkat yang sama-sama menggunakan aplikasi Shareit. Shareit tidak bisa digunakan untuk mengirimkan data dalam jarak lebih dari 10 meter. Sama seperti aplikasi edit foto atau aplikasi yang lainnya, SHAREit juga rawan terinfeksi virus. Demikianlah cara download, install, setting dan menggunakan aplikasi SHAREit for PC? Cara ini bisa Kalian gunakan Kapan pun meski Kalian tidak punya kuota internet. Nantikan terus berita terbaru dan terupdate seputar game, anime dan gadget hanya di Kabar Games. (function(d,a,b,l,e,_) if(d[b]&&d[b].q)return;d[b]=function()(d[b].q=d[b].q;e=a.createElement(l); e.async=1;e.charset='utf-8';e.src='//static.dable.io/dist/plugin.min.js'; _=a.getElementsByTagName(l)[0];_.parentNode.insertBefore(e,_); )(window,document,'dable','script'); dable('setService', 'kabargames.id'); dable('sendLogOnce'); dable('renderWidget', 'dablewidget_KoEP9KXB');
https://www.kabargames.id/memalukan-terbukti-bermain-curang-37-pelatih-csgo-dibanned/
#CSGO
0 notes
0-9 · 6 years
Text
TypeError: Cannot read property '$options' of undefined + on vue-test-utils + el-autocomplete
[Vue warn]: Error in config.errorHandler: "TypeError: Cannot read property '$options' of undefined" TypeError: Cannot read property '$options' of undefined at updateChildComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2825:6) at prepatch (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:4142:5) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5923:7) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at VueComponent.patch [as __patch__] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:6094:9) at VueComponent.Vue._update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2668:19) at VueComponent.updateComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2786:10) at Watcher.get (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3140:25) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3217:22) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as currentValue] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at VueComponent.proxySetter [as currentValue] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3298:26) at VueComponent.setCurrentValue (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/element-ui/lib/input.js:536:25) at VueComponent.value (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/element-ui/lib/input.js:468:12) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3231:19) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as value] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at updateChildComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2847:18) at prepatch (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:4142:5) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5923:7) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at VueComponent.patch [as __patch__] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:6094:9) at VueComponent.Vue._update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2668:19) at VueComponent.updateComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2786:10) at Watcher.get (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3140:25) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3217:22) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as value] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at updateChildComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2847:18) at prepatch (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:4142:5) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5923:7) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at VueComponent.patch [as __patch__] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:6094:9) at VueComponent.Vue._update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2668:19) at VueComponent.updateComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2786:10) at Watcher.get (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3140:25) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3217:22) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as currentHeader] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at VueComponent.proxySetter [as currentHeader] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3298:26) at Context.it.only (/Users/kyo/projects/lifter/packages/lifter-app/.tmp/mocha-webpack/1522803465770/webpack:/src/renderer/components/app.spec.ts:41:1) at <anonymous> [Vue warn]: Error in callback for watcher "value": "TypeError: Cannot read property '$options' of undefined" found in ---> <ElInput> <ElAutocomplete> <DeleteModifiersTable> at src/renderer/components/li-dialog/rewrite-rule-modifiers-dialog/delete-modifiers-table.vue <ElDialog> <RewriteRuleModifiersDialog> at src/renderer/components/li-dialog/rewrite-rule-modifiers-dialog/rewrite-rule-modifiers-dialog.vue <LiDialog> at src/renderer/components/li-dialog/li-dialog.vue <ElMain> <ElContainer> <Root> TypeError: Cannot read property '$options' of undefined at updateChildComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2825:6) at prepatch (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:4142:5) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5923:7) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at VueComponent.patch [as __patch__] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:6094:9) at VueComponent.Vue._update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2668:19) at VueComponent.updateComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2786:10) at Watcher.get (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3140:25) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3217:22) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as currentValue] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at VueComponent.proxySetter [as currentValue] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3298:26) at VueComponent.setCurrentValue (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/element-ui/lib/input.js:536:25) at VueComponent.value (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/element-ui/lib/input.js:468:12) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3231:19) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as value] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at updateChildComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2847:18) at prepatch (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:4142:5) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5923:7) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at VueComponent.patch [as __patch__] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:6094:9) at VueComponent.Vue._update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2668:19) at VueComponent.updateComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2786:10) at Watcher.get (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3140:25) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3217:22) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as value] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at updateChildComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2847:18) at prepatch (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:4142:5) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5923:7) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at updateChildren (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5820:9) at patchVnode (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:5934:29) at VueComponent.patch [as __patch__] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:6094:9) at VueComponent.Vue._update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2668:19) at VueComponent.updateComponent (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:2786:10) at Watcher.get (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3140:25) at Watcher.run (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3217:22) at Watcher.update (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3205:10) at Dep.notify (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:695:13) at Object.reactiveSetter [as currentHeader] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:1012:11) at VueComponent.proxySetter [as currentHeader] (/Users/kyo/projects/lifter/packages/lifter-app/node_modules/vue/dist/vue.runtime.common.js:3298:26) at Context.it.only (/Users/kyo/projects/lifter/packages/lifter-app/.tmp/mocha-webpack/1522803465770/webpack:/src/renderer/components/app.spec.ts:41:1) at <anonymous>
<template> <el-autocomplete v-model="currentHeader" :fetch-suggestions="getList" /> </template> <script lang="ts"> export default { name: "hoge", components: process.env.NODE_ENV === "test" ? { "el-autocomplete": { name: "el-autocomplete", render: () => "", } } : undefined, data() { return { currentHeader: "", }; }, methods: { getList: (_, cb) => { cb(["hoge", "huga", ]) } }, }; </script>
1 note · View note
hoergen · 5 years
Text
♲ Friendica News ([email protected]) 2019-09-29 08:23:08:
Friendica 2019.09 released
We are proud to release the new version of Friendica ‘Dalmatian Bellflower‘ 2019.09. As usual this release contains many bug fixes (we closed some 60 issues from the list) and code enhancements alongside of some new features. Some highlights are:
A Japanese translation was added to the Friendica core and some addons.
The two factor authorisation got improved. If you are using client apps, those now need a separate password set in the user configuration.
One can now search for the URL of any public ActivityPub posting to interact with the posting. You need to copy the postings address and paste it into the search field.
Users of the frio theme can now choose to use a separate compose page instead of the modal dialog.
Admins can now block servers based on URL patterns and enable a trending tags widget for the community page.
for a complete overview please see the CANGELOG file. Many thanks to everyone who made this release possible. ❤
Tumblr media
A wordcloud generated from the titles of pull requests of Friendica 2019.09. In the background a Dalmatian Bellflower.
Known Issues
One of the bug fixes that was applied in this release will cause old contact requests that were discarded initially to reappear. Users will have to reevaluate the request. We are sorry for the inconvenience this may cause to you and your users.
How to Update
Updating from old Friendica versions
If you are updating from an older version than the 2018.09 release, please first update your Friendica instance to that version as there were several important changes in that version. Please note, that we moved the shipped .htaccess file to .htaccess-dist in the 2019.01 version. Make sure that you have saved a copy of the file if you made any changes to it, so that you can copy the file from the backup after the upgrade. Please further note, that since Friendica 3.6 we use Composer for dependency management. If you are updating via git, you have to remember to update the dependencies as well. Furthermore we raised the minimal requirements with the 2019.06 version to PHP 7. Before updating please ensure that you are using a supported PHP version on your server. We suggest PHP 7.2 or later.
Pre-Update Procedures
Ensure that the last backup of your Friendica installation was done recently. While testing, we did not encounter problems, but better safe than sorry.
Using Git
Updating from the git repositories should only involve a pull from the Friendica core repository and addons repository. Remember to also update the dependencies with composer. cd friendica git pull bin/composer.phar install cd addon git pull If you want to switch the branch (e.g. if you helped testing the RC code) please do so after the pull using git checkout master (or develop). Be aware that the .htaccess file was removed from the git repository in the 2019.01 version. You might have to restore yours from a backup (if you have done local changes) or from the .htaccess-dist if you had not done it before.
Using the Archive Files
If you had downloaded the source files in an archive file (tar.gz) please download the current version of the archive (friendica-full-2019.09.tar.gz and friendica-addons-2019.09.tar.gz) and unpack it on your local computer. As many files got deleted or moved around, please upload the unpacked files to a new directory on your server (say friendica_new) and copy over your existing configuration (config/local.config.php and config/addon.config.php) and .htaccess files. Afterwards rename your current Friendica directory (e.g. friendica) to friendica_old and friendica_new to friendica. The files of the dependencies are included in the archive (make sure you are using the friendica-full-2019.09 archive), so you don’t have to worry about them. Please be aware of the changes in the configuration format in the 2019.03 version. You should follow the instructions linked from your admin panel as soon as possible to move your configuration to the new location.
Post Update Tasks
The database update should be applied automatically, but maybe it gets stuck. If you encounter this, please initiate the DB update manually from the command line by running the script bin/console dbstructure update from the base of your Friendica installation. If the output contains any error message, please let us know using the channels mentioned below.
How to Contribute
If you want to contribute to the project, you don’t need to have coding experience. There are a number of tasks listed in the issue tracker with the label “Junior Jobs” we think are good for new contributors. But you are by no means limited to these – if you find a solution to a problem (even a new one) please make a pull request at github or let us know in the development forum. Contribution to Friendica is also not limited to coding. Any contribution to the documentation, the translation or advertisement materials is welcome or reporting a problem. You don’t need to deal with Git(Hub) or Transifex if you don’t like to. Just get in touch with us and we will get the materials to the appropriate places. Thanks everyone who helped making this release possible and have fun!
https://friendi.ca/2019/09/29/friendica-2019-09-released/
0 notes
lindahoanglinh · 5 years
Text
Modal
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="assets/bower_components/bootstrap4/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="assets/bower_components/fontawesome/css/all.min.css"> <link rel="stylesheet" href="assets/css/style.css">
</head> <body> <div class="container mt-5"> <button class="btn btn-primary" data-toggle="modal" data-target="#nam">Nhấn để đăng nhập</button>
<div class="modal" id="nam"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Vui lòng đăng nhập</h4> <button class="btn btn-disable close" data-dismiss="modal">×</button> </div> <div class="modal-body"> Khung đăng nhập </div> <div class="modal-footer"> <button class="btn btn-danger" data-dismiss="modal">Close</button> </div> </div>
</div> </div> </div>
<script type="text/javascript" src="assets/bower_components/jquery/dist/jquery.min.js"></script> <script type="text/javascript" src="assets/bower_components/bootstrap4/dist/js/bootstrap.min.js"></script> <script type="text/javascript" src="assets/js/script.js"></script>
</body> </html>
Tumblr media Tumblr media
0 notes
jigneshthanki-blog · 5 years
Text
Android Instant Apps: An Easy Way To Boost The Business For Startups
Instant apps are apps which you can open and explore before installing them to your device. Almost every day, thousands of new applications and games are being developed by Android developers. It’s very tough to identify the right mobile apps which are useful and interesting.
Android Instant App is the solution for it. According to a survey, all across the world, over 500 million Android users have access to instant apps. “Great news for the startups! Yeah?” Let’s throw some lights on the Google Play Instant introduction, benefits, usage and development in this article.
Introduction to Instant Apps:
An Android Instant App is a Native Android app which can be tried by any user without installing it into the device. An easy way to keep user engagement activities with your Android App. The Android Studio 3.3 (beta release) has introduced this feature for the developer to build and publish an app to the play store which contains both Instant and dynamic features.
Advantages of Android Instant Apps:
Following are the benefits why Startups and Medium scale business entities should opt for having Instant Apps, even if they are having any existing mobile application:
More Exposure by letting users try before downloading the App
Instantaneous feedback
Get a wider user base by providing a good experience to those using low-end devices too
Let users share any App page on Social Media providing free buzz and traction
Make it easy for users of competitors app to see your app to try and convert them
Below are the steps to develop an Android instant App:
Step 1: Development environment set up
Below are the basic requirements to make ready a basic development environment for developing instant-enabled app bundles:
Android Studio version 3.3 or higher.
Google Play Instant Development SDK: You can get the latest SDK version from the SDK Tools tab within the Android SDK Manager.
Target device list: Google Instant can be tested using a physical or virtual device.
Step 2: Project configuration for android instant experiences
Instant-enabled app bundle needs a proper configuration to be compatible with Google Play Instant. Detailed explanation is given below.
Instant-enabled app modules
Following are the methods by which android developers can declare that your app bundle supports instant experiences:
While creating a new project in Android Studio, configure the project step, select the check box “This project will support instant apps”
For an existing application with only a base module, you only need to add the following declaration to the manifest of the module within the app bundle for the instant-enable application
<manifest … xmlns:dist=”http://schemas.android.com/apk/res/android“>
<dist:module dist:instant=”true” />
</manifest>
Note: The default name for the base module of an app bundle is app. Any app which has multiple modules can be converted to instant-enabled dynamic feature module. By this method, you can have multiple instant entry points in your application.
Note: Maximum size for an instant-enabled app bundle is 10 MB which is the combination of the code and resource within the instant-enabled modules.
Permissions supported by Google Instant
Below is the list of eleven permissions which are supported by any android instant-enabled app bundles:
ACCESS_COARSE_LOCATION
ACCESS_FINE_LOCATION
ACCESS_NETWORK_STATE
BILLING – (deprecated in Play Billing Library V 1.0).
CAMERA
INSTANT_APP_FOREGROUND_SERVICE – (this is available in Android 8.0 API level 26 and higher only).
INTERNET
READ_PHONE_NUMBERS – (this is available in Android 8.0 API level 26 and higher only).
RECORD_AUDIO
VIBRATE
WAKE_LOCK
Finally, environment setup for execution
To provide additional security, instant-enabled app bundles can be executed by Google Instant within SELinux Sandbox. Your instant-enabled app bundle required following configuration to have compatibility with this specific environment:
usesCleartextTraffic needs to be set false within your configuration of Network Security. The value of myUid() is confidential (kernel-assigned UID of your app process).
Step 3: Build the instant app bundle
Very easy step to build an app bundle within the Android studio:
Tumblr media
Selecting Build > Build Bundle(s) / APK(s) > Build Bundle(s).
Step 4: Google Instant app testing
Functionality verification of app’s instant experience is much needed before publishing it. The instant experience can be tested by publishing to the internal testing environment and on a local machine.
Before going live, let’s test on a local machine
Following are the steps to test the android app’s instant experience on a local machine:
Uninstall any occurrence of your app on your test device.
You need to enable the checkbox for “Deploy as instant app” under Run/Debug Configurations dialog -> General tab -> Installation options in your Android Studio 3.x.
You can either Select Run > Run in the menu bar, or click Run in the toolbar. After that, you need to choose the device from the list for testing your app’s instant experience. Check your test device to see the app’s instant experience.
Note: Minimum requirement, to run Instant experiences, is Android 5.0 (API level 21).
Tumblr media
Publish and run on the internal testing environment
Publish your app on the Play console to test your instant app’s experience. Following are the steps to do so:
Check out this guide to upload your application bundle: Upload your app bundle to the Play Console guide.
How to prepare & roll out releases will help you to release your uploaded bundle to the internal test track.
You need to sign in using a tester account on the testing device to launch your instant experience from one of the following surfaces:
 Play Store app listing will have the Try Now button.
  App’s Website will have a banner with a link.
Note: The maximum file size limit of 10 MB is not applicable when you are using Google Play’s internal test track as the size limit doesn’t apply on it.
Step 5: Publish your app bundle to the production track
Tumblr media
Following are the steps to publish your instant-enabled app bundle:
If you haven’t already, sign your app bundle with a release key and upload the app bundle to the Play Console.
In the Play Console, open Release management > Android Instant Apps then navigates to the instant app production track.
Select Update from Library, then select the instant-enabled app bundle that you’ve uploaded.
How Let’s Nurture can help?
We are an ISO 9001:2015 certified custom mobile app development company that is recognized by Clutch as the top IT company in Australia and Canada for providing the best Android App development services. Being pioneers in Android app development and now with Kotlin development, Hire Android app developers who are proficient in cutting-edge technologies like Android Studio, programming languages such as Java and Kotlin, Maps SDKs, ARCore, Socket.io, AES encryption to create secure, robust and feature-packed Android apps.
We also specialize in developing Android instant apps for businesses to gain momentum and exposure as it lets users try the app before downloading. We help businesses to gain the benefits of instant apps by converting their pre-existing Android apps to instant apps too.
If you want to know more about what can be done for your business by going for Android Instant app development, why not get in touch with our App Gurus for a free consultation.
0 notes
Text
Dramă ”regală”: Gabriel Vizitiu, „Regele reciclabilelor” înjunghiat cu un cuţit de bucătărie de Armand Buzan, „Regele ruletei”!
Tumblr media
Clipe de autentic mister, miercuri 7 iunie, la I.M.L. Cluj după apariţia în sala de aşteptare a instituţiei, a lui Gabriel Vizitiu – cunoscut drept cel mai important reciclator de materiale refolosibile şi pet-uri din zona Clujului. Însoţit de doi din „locotenenţii” săi şi de soţie, acesta are braţul stâng legat într-o atelă şi de asemenea, o grimasă de durere îi domină expresia feţei. Are gura ferecată referitoare la eveniment, dublată de o privire impenetrabilă de leu sau sfinx rănit, însă  colaboratorii săi mi-au declarat că a fost înjunghiat, pe 5 iunie, ziua-n amiaza mare şi-n plină stradă de către Armand Adrian Buzan, autointitulat „Regele ruletei”.
După minute lungi de tăcere apăsătoare, reuşesc să încheg un dialog cu Gabriel Vizitiu, însă omul este eliptic, fără chef – probabil datorită stării fizice proaste în care se află, omul fiind proaspăt ieşit din spital, după câteva zile de internare. Aflu totuşi – mai mult de la însoţitorii săi – că Vizitiu a fost înjunghiat luni, 5 iunie, la ora 12.30, pe strada Teodor Mihali din cartierul Gheorgheni, cu un cuţit de bucătărie, de către Armand Adrian Buzan, „Regele ruletei”. Povesteşte unul dintre „locotenenţi”, în timp ce Vizitiu se afla în cabinetul de consultaţii: „Şi-a dat întâlnire cu Armand, în faţă la fostul club „Billionaire”, pentru nişte bani pe care acesta trebuia să îi returneze prietenului meu. Armand îi vânduse un soft pentru ruletă care n-a funcţionat şi pe care Gabriel îl cumpărase de la el în urmă cu vreo şase luni. Armand locuieşte chiar acolo, în blocul respectiv şi a ieşit din apartament cu cuţitul asupra sa şi, nici una, nici alta s-a repezit cu el să i-l înfigă lui Gabriel în gât. Acesta s-a ferit astfel încât cuţitul i-a străpuns umărul. Iar a doua lovitură a venit în zona laterală dintre splină şi rinichi, rănindu-l şi aceea. Gabriel a scăpat prin fugă, prin grija unui prieten care l-a dus de urgenţă cu maşina la spital, altminteri Armand îl omora chiar acolo, în plină stradă”! Apoi, pentru că Vizitiu îi lăsase telefonul mobil în grijă, îmi arată câteva din mesajele lui Armand trimise pe când victima se afla în spital, în care-l ameninţa că vine şi-i dă foc în spital, iar în cazul în care va merge la „Gardă” (n.n. – în limbaj argotic, Poliţia) îi va da, iarăşi, foc.
După un timp apare şi Vizitiu, la fel de impenetrabil, cu aceeaşi grimasă de durere întipărită pe faţă. Apoi, acelaşi „locotenent” al său îmi transmite, amabil, că medicii i-au eliberat lui Gabriel un certificat în care îi recomandă 18 zile de îngrijiri, iar plângerea penală împotriva agresorului a fost depusă deja, în seara precedentă, la Secţia 4 de Poliţie. După aceea, asemeni unui luptător de K1 sau gladiator din Roma antică, Vizitiu părăseşte cu paşi rari incinta instituţiei, urmat de cortegiul de însoţitori, alcătuit din soţie şi prieteni, dar nu înainte de a-mi indica „bibliografia” pe care – incult, recunosc, în domeniu – trebuie s-o urmăresc pentru a afla cu cine am de-a face: emisiunea „Românie, te iubesc”, de la Pro Tv. Aşa că, ajuns într-un loc liniştit, caut cu nerăbdare şi aflu din emisiune următoarele: „Gabriel Vizitiu este unul dintre clienţii „Greentech” şi vine cu Mercedesul la groapa de gunoi de la Pata-Rât, la lucrătorii săi. Când a început afacerea a înţeles rapid că gunoiul înseamnă bani. Astfel, cu o investiţie minimă – o maşină de presat şi câteva utilaje – cu groapa saturată de pet-uri şi mână de lucru ieftină, Vizitiu şi-a eliminat concurenţa şi şi-a consolidat afacerea. La 600 euro tona, câştigul e pe măsură. Muncitorii de pe groapă depind de Vizitiu”.
Găsesc şi câteva postări pe Youtube ale acestuia. Realmente savuroasă mi-a părut nunta acestuia din anul 2014, în care se disting, Sandu Ciorba, cu un recital de muzică ţigănească şi Nelson Mondialu`, cu un “regal” de cvasi-pantomimă, în renumitul său stil. Cât despre Armand Buzan, „Regele ruletei” şi acesta este omniprezent pe Youtube. Sub motto-ul „Afli ADEVĂRUL despre Ruletă de la un Maestru, ADRIAN BUZAN”, respectivul apare cu poze care-i afişează opulenţa, modul cu adevărat princiar de viaţă şi, de asemenea, cu numeroase sfaturi pe care le acordă, concret, iubitorilor de ruletă – conţinând calcule de câştig sigur şi imagini edificatoare cu mormane de „euroi”.
“La data de 5  iunie a.c., personalul medical de la UPU 1  Cluj-Napoca a sesizat faptul că la unitatea medicală s-a prezentat un bărbat, de 44 de ani, din Cluj-Napoca, victimă a unei agresiuni. La nivelul Poliţiei municipiului Cluj-Napoca este înregistrat un dosar penal sub aspectul săvârşirii infracţiunilor de loviri sau alte violenţe şi ameninţare, fapte prevăzute de Codul penal. Poliţiştii continuă cercetările sub coordonarea unităţii de parchet”, a declarat, pentru Gazeta de Cluj, Carmen Jucan, purtător de cuvânt al I.P.J. Cluj.
Tumblr media
Gabriel Vizitiu, „Regele reciclabilelor”, cu răni la braţ şi torace, în curtea I.M.L. Cluj
1 note · View note
cssscriptcom · 6 years
Text
Minimal Customizable Alert/Confirm Dialog Plugin - roar.js
Minimal Customizable Alert/Confirm Dialog Plugin – roar.js
roar.js is a lightweight, responsive, accessible JavaScript dialog plugin to create custom alert and confirmation popup boxes on the webapp.
How to use it:
Import the stylesheet ‘roar.min.css’ and JavaScript ‘roar.min.js’ into the document.
<link rel="stylesheet" href="dist/roar.min.css"> http://dist/roar.min.js
Create a default alert dialog.
roar('Alert Title', 'Alert Message Here');
Create a…
View On WordPress
0 notes
derlift · 4 years
Photo
Tumblr media Tumblr media Tumblr media
Videopostkarte 2 von Hans Peter Litscher
Gruss von Künstler/Kurator Hans Peter Litscher aus seinem Disteli-Dialog «Und Hasen, Hasen schneit es fort, Millionen jede Stund‘» – Eine Austellung über jagende Hasen und gejagte Jäger mit Werken von Joseph Beuys, Douglas Gordon, Pierre Klossowski, Annette Messager, Meret Oppenheim, Sigmar Polke, Jason Rhoades, Dieter Roth, Shao Fan, Paul Thek u. v. m. (26.1.–16.8.2020) 🐇🐇🐇
Performance: Hans Peter Litscher Film: Aufdi Aufdermauer Ton: Karin Wegmüller Danke: @videocompany Zofingen 🐇🐇🐇
vimeo
Legenden zu den Filmstills
Abb. 1 Martin Disteli (1802–1844) Der Tolle Jäger Zeichnung, 1838 Sammlung Kunstmuseum Olten
Abb. 2 Shao Fan (*1964) Rabbit Portrait-Wuxu 2, 2018 Courtesy The Artist and Galerie Urs Meile Beijing-Lucerne
0 notes
Text
Six smart steps to configure Mapbox with ReactJS
Mapbox provides custom maps, search and navigation. It supports many platforms. The tool is powered by programmers as well as millions of devices providing Location Data. It provides developers a platform and a toolset to build customized applications where location-based data can be used to meet a variety of business requirements.
 A typical scenario where Mapbox is used:
A service provider uses Mapbox to track locations of their assets or employees in order to provide real-time information to customers or for operational monitoring. This could be a restaurant delivery service, an international transport company or even a fleet operator in a city.
 Customizing Mapbox
One of our clients provides data services to monitor the health of agricultural farms. They wished to offer compelling data visualization of agricultural farm images along with other details. We customized mapbox to render this information on the web and mobile devices. There are SDKs available for the Web, iOS and Android.
 In this article, we share how we configured mapbox in React JS using custom style to add new fonts, custom icons and publish these styles.
  Following are the steps to configure mapbox in React JS using custom style to add new fonts, custom icons and publish these styles –
 1. Steps to generate the token number and style in Mapbox
a. Create an account on https://account.mapbox.com
b. Log in to your account
c. On the Dashboard look for the Default public token. This Token number can be used for configuration in the Web App. You need to remember that this token number is public and easily accessible from the developer tab.
d. To get the private Token click on the button 'Create a Token' you will get a form. Enter the 'Token name' and select the desired 'Public Scope' and the 'Secret Scopes’.
Tumblr media
e. Note: - This token will only be accessible from the specific URLs that we add while generating the Token.
Tumblr media Tumblr media
f.  Now add the list of comma-separated URLs into the URL field and click on the 'Create Token’. Next you will be asked to confirm with your account password.
g. You will find the private token at the bottom of the Token list.
Tumblr media
2.  Steps to configure React JS app with Mapbox
a. There are two different methods available for using the Mapbox on the web App.We describe the steps using the  'npm' module bundler for installing Mapbox GL JS.
Tumblr media
b. Install the 'npm' package --> 'npm install mapbox-gl --save'
c. Include the GL JS CSS file
d. Include the CSS file in the <head> of your HTML file
          i.  <link href='https://api.mapbox.com/mapbox-gl-js/v1.3.1/mapbox-gl.css' rel='stylesheet' />
e. Add the map to your Web App.
           i.      var mapboxgl = require(‘mapbox-gl/dist/mapbox-gl.js');
           ii.      mapboxgl.accessToken = 'Your Token number’;
           iii.      var map = new mapboxgl.Map({
           iv.      container: 'YOUR_CONTAINER_ELEMENT_ID',
           v.      style: 'mapbox://styles/mapbox/streets-v11' // Default style link
           vi.      });
f. Now you are done with the configuration.
3. Steps to create the custom style of Mapbox
a. To create our custom style for the map, we need to open the Mapbox Studio,
b. To open the Mapbox studio, you can to go to the Dashboard and then click on the  'Design in Mapbox Studio' on the right side of the Dashboard or Just click on the link here https://studio.mapbox.com/
c. After opening the Mapbox studio, you can see the predefined styles you can use directly or you may choose to create a new style.
Tumblr media
d. To create a new style, click on the 'New style' button on top of the page.
e. Select the desired template from the list and can change the style of the map from bottom of the dialog and then click on the customize button.
Tumblr media
f. You can see a dashboard with different settings.
g. You can update the style of the country label, background, road, buildings and many more
Tumblr media Tumblr media
4. Steps to add a new font to the map and then publish for production
a. Click on the Fonts tab on the top-right corner then you can find a dialog to upload the new fonts.
Tumblr media
b. Clicking on the Upload new font, you can see a new dialog with the title 'Upload fonts' here you can drag new fonts with extension '.TTF' and ‘.OTF’.
Tumblr media
c. Once Font family is added, it can be then used in the map.
Tumblr media
5. Steps to add a custom icon or an image and publish
a. The image we upload here will be available as an icon on the map for example Image as a custom marker.
b. Click on the 'Images' tab in the header you can see a dialog to upload the SVG image.
Tumblr media Tumblr media
c. To upload the SVG image, click on the 'Upload SVG Icon' button, now you can see a new dialog where you can drag your SVG image.
d. Once you update any style, you have to publish the style to see the changes on the map.
e. Note: - It may take some time to get published and to reflect on the map.
f. It is very easy to publish the changes; you just have to click on the 'Publish' button on the top-right corner of the map box studio.
Tumblr media
g. Now you can see a dialog with a slider where you can see the styles you added.
h. Here you can either ‘Publish as new’ which will replace all the styles, or, use the ‘Publish’ button to add the styles you added in your draft.
Tumblr media
6. Steps to add the updated style to our map
 a. Once the style is published,click on the 'Share' tab on the top-right corner of the Mapbox Studio. Here you can see a dialog where you can find your 'Your style Url' and 'Your access token’.
Tumblr media
b. Now  update your style URL of the map.
        i.      var map = new mapboxgl.Map({
        ii.      style: 'Add your style URL Here'
        iii.      });
c.       Example:
         i.      const feature: feature<FeatureGeometry> = {
         ii.      id: 123,
         iii.      type: 'Feature',
         iv.      geometry: feature.geometry,
         v.      properties: {
                  1.    meta: feature.meta,
                  2.    icon: 'square-stroke'
                  3.    // Custom Icon name which is added to the style in Mapbox Studio
           vi.      }
           vii.      }
 For more information on our React projects please visit https://www.metasyssoftware.com/case-study-react
0 notes
trial-and-spiral · 5 years
Text
ブックマークレットをテスト駆動開発する
前回、TypeScriptとGulpで無駄にモダンなブックマークレット開発環境を作ってみました。せっかくそこまで環境を作ったので、今回はテスト駆動開発できるようにしてみました。
(前回の記事はこちら) GulpとTypeScriptでブックマークレット開発環境を作ってみた - Trial and Spiral
テスト環境構築
テストフレームワークとして、Jestを使います。また、ブックマークレットである以上
動かすためのページに行く
ブックマークレットのJavaScript(即時関数)を実行
という手順が必要になります。通常のユニットテストだけでは不十分なので今回はPuppeteerというヘッドレスブラウザも合わせて使います。要はコードからブラウザ操作を自動でやらせると思っていただければ。
関連ライブラリのインストール
ちょうど良く、jest-puppeteerというライブラリがあるのでそれを入れます。 jest-puppeteer puppeteer jest
READMEにあるように関連ライブラリも一緒に入れます。
$ yarn add -D jest-puppeteer puppeteer jest
さらにTSとGulpでやっているので必要なものを入れます。
$ yarn add -D gulp-jest ts-jest
そして関係する型も入れます
$ @types/expect-puppeteer @types/jest @types/jest-environment-puppeteer @types/puppeteer
設定ファイル
jestの設定はpackage.jsonに書いてもいいんですが、見通しを良くするため、今回はファイルを別に分けてみます。ファイルはルートディレクトリにjest.config.jsを作って以下を書きます。
また、jsonではなくjsファイルなのでコメントアウトやJS式が使える利点もありますね。
jest.config.js
module.exports = { preset: `jest-puppeteer`, moduleNameMapper: { '^#/(.+)': `<rootDir>/dist/$1`, }, moduleFileExtensions: [`ts`, `tsx`, `js`], transform: { '^.+\\.(ts|tsx)$': `ts-jest`, }, globals: { 'ts-jest': { tsConfig: `tsconfig.json`, }, }, testMatch: [`**/__tests__/*.+(ts|tsx|js)`], }
一番重要なのは最初のpreset: 'jest-puppeteer'とglobalsの指定ですね。それ以外はお好みです。
あとはオプショナルとして、puppeteerの設定も可能です。設定なしのデフォルトでも問題なく動いてくれますのでなくても大丈夫ですが、言及しておくと同じくルートディレクトリにjest-puppeteer.config.jsを作って設定できます、たとえば
jest-puppeteer.config.js
module.exports = { launch: { dumpio: true, headless: true, }, browserContext: `default`, }
みたいな感じです。特筆すべきはheadless: falseにするとヘッドレスモードをオフにできるので実際にGoogleChromeが動く様子がみれます。デバッグで使うこともありますね。
テストを書いてみる
設定ファイルに指定したようにテスト用のファイルは__tests__というディレクトリの中に作っていきます。前回にサンプルとして「見てるページのタイトルをプロンプトに表示する」というブックマークレットを作りました。まずはそのテストを書いてみます。
__tests__の中にsample.test.tsというファイルを作って以下のようにテストを書いてみます。
sample.test.ts
describe(`Google`, () => { beforeAll(async () => { await page.goto(`https://google.com`) }) it(`should be titled "Google"`, async () => { await expect(page.title()).resolves.toMatch(`Google`) }) it(`should be title in prompt`, async () => { let value await page.on(`dialog`, async dialog => { value = await dialog.defaultValue() await dialog.accept() }) await page.addScriptTag({ path: './dist/sample.js' }) expect(value).toMatch(`Google`) }) })
少し解説すると、beforeAllでサンプルとしてGoogleのトップに飛ぶようにしています。
最初のテストはブックマークレット関係なしでGoogleのサイトに飛べてるか、タイトルの値が取得できるかを見ています。このテストがパスしないのであれば、ブックマークレット以外の部分で問題があると考えたほうが良いですね。
2つめのテストが今回のテストです。ポイントはいくつかあります。
まず先にダイアログ(プロンプト)の表示を取得するように設定しておきます。具体的にはpage.on('dialog',でダイアログを待って、dialog.defaultValue()はダイアログが開いたときの入力欄の文字列を取得できます。取得したらその一応念のためにaccept()でダイアログを閉じておきます(OKを押したときの動作)。
その後でpage.addScriptTag({ path: './dist/sample.js' })でブックマークレットを動作させます。ちょっと強引ですがこの方法に落ちつきました。もしもっと良い方法があれば教わりたいです。 なお注意点としてはこのパスはテストを走らせるコマンドを叩くところからの相対パス(=ルートディレクトリから)で書く必要があります。
pathで指定したjsファイルをページに対してスクリプトとして挿入します。このJSはブックマークレット、すなわち即時関数であるためaddしたらすぐに実行される流れです。
そうしてあらかじめ待ち受けていたダイアログの文字列取得が動いて、valueに入るので、それをexpectでアサーションにかける、という流れですね。
さあ、ここまでできたら
$ jest
とテストを走らせてみましょう。2つのテストがパスすればOKです。
テストをGulpで扱う
せっかくビルド作業をGulpで扱っているのだからテストもGulpで扱うようにしてみます。というのもテストする対象がJSのなのでテスト前に都度都度ビルドする必要がある事情もありますので。
先にファイルから載せてしまうと
gulpfile.ts
import gulp from 'gulp' import eslint from 'gulp-eslint' import ts from 'gulp-typescript' import uglify from 'gulp-uglify' import replace from 'gulp-replace' import jest from 'gulp-jest' const tsProject = ts.createProject(`tsconfig.json`) const srcDir = `src` const destDir = `dist` const testDir = `__tests__` export const build = done => { gulp .src(`${srcDir}/*.ts`) .pipe(eslint({ useEslintrc: true })) .pipe(eslint.format()) .pipe(eslint.failAfterError()) .pipe(tsProject()) .pipe( uglify({ mangle: true, compress: true, }) ) .pipe(replace(/^(.*)$/, `javascript:$1`)) .pipe(gulp.dest(destDir)) done() } export const test = done => { gulp.src(`${testDir}/*.ts`).pipe(jest({})) done() } export const dev = done => { gulp.series(`build`, `test`)(done()) } export default build
とこうなりました。前回から追加したものを順に説明します。
まずGulp内でJestを実行できるように読み込みます。
import jest from 'gulp-jest'
テスト用のディレクトリを定義しておきます。
const testDir = `__tests__`
testというタスクにjestのテストを割り合てます。
export const test = done => { gulp.src(`${testDir}/*.ts`).pipe(jest({})) done() }
ビルドして続けてテストする一連を1つのタスクにします。
export const dev = done => { gulp.series(`build`, `test`)(done()) }
ちょいちょいdone()と出てきてますが、コールバックで終わりを明示しないとgulp.seriesで上手く扱えないようです。このへんJSらしくasync functionで扱えると良いんですが、v3からのやりかたもあり、最適解が良くわかりません。むむむ。
あとは、一応yarnやNPM経由でも実行しすいようにしておきましょうか。 package.jsonに
package.json
{ "scripts": { "build": "gulp build", "test": "gulp test", "dev": "gulp dev" }, }
を追記しておきましょう。
感想
やはり前回も言いましたが、たかだかブックマークレットでここまでやるのはオーバーキル気味ですね。個人的にはPuppeteer初めて触ってりしていろいろ楽しめた反面、ブックマークレットの動かし方がちょっとスマートじゃないのでモニョモニョしています。
またテスト環境的には本当は実際のページではなく用意したフィクスチャでやりたいところです。ネット環境が必須になってローカルだけで完結できないですし、テストに使ってる先に変更があったらテストが落ちてしまうので。
さらに、ブックマークレット内でCDNのjQueryを使う方法があって、そうするとちょっと楽にブックマークレット書けるんですが、その場合読み込み待ちをテスト内で実現できず上手くテストを書くことができませんでした。それでネイティブJSで実装しなおしたんですが、jQueryの読み込み待ちがなくなったことで高速化したので結果的にや良かったです。
まあ強引なテスト方法であることは否めないですが、やっぱりエンジニアたるものポチポチテストするよりはテストコードで動作を担保したいので、なかなか良いエクササイズでした。
最後にこの作成を環境をGitHubに上げたので気が向いたら参考にしてみてください。
AquiTCD/ts-bookmarklet-workbench: a workbench to build bookmarklets by typescript with jest
from Trial and Spiral https://blog.solunita.net/test-driven-develop-bookmarklet/
0 notes
mjcolleges · 5 years
Link
Mahalaxmijagdamba college is one of the best college of the region, was estabilished in Mahadul,  Koradi Dist. Nagpur which is recognized by Gov. of Maharashtra and Affiliated by R.T.M Nagpur University, which is dedicated to provide educational facilities of science and arts. It includes B.sc., B.com, B.A. and M.A. The course of B.sc., B.com. and  B.A. of M.J.Science  college in Nagpur  is an undergraduate degree and  M.A. is a postgraduate degree that circulates around the curriculum of science and arts.The students were selected for the course of  B.sc., B.com, B.A. and  M.A  on the basis of their overall performance in HSC. The course of B.sc., B.com, B.A. and  M.A of M.J.Science  college in Nagpur  is one of the major courses in India. Aspirants can choose B.sc., B.com, B.A., after completion of HSC,  whereas  M.A. after completion of degree course B.A.  The duration of B.sc., B.com, B.A. is three years and the duration of M.A. is two years. The M.J. Science college is popular in Nagpur for the courses of B.sc., B.com, B.A. and M.A. and is one of the best place to study in Nagpur. The faculty of B.sc., B.com, B.A.  and M.A. of M.J.Science  college in Nagpur  is awesome. All the teaching staff members of B.sc., B.com, B.A. and  M.A  of M.J.Science  college in Nagpur is very experienced and accessible.  They always cooperate with the cooperating students. The placements of M.J.Science  college in Nagpur  for the streams of B.sc., B.com, B.A. and  M.A are good. B.sc., B.com, B.A., is one of the trending courses after 12th. The commerce stream (B.com.) , the science stream (B.sc.) and the arts stream(B.A., M.A.) of M.J. science College are the  most popular streams  in Nagpur. The labs of this college are fully equipped with  apparatus  and machinery for the students of B.sc. Also for the streams of B.com., B.A., and M.A. students the required apparatus are available. It is an excellent institution  for the course of  B.A. and M.A. It is the famous institution for the dergree course of B.sc. and B.com. in  M.J.Science college in Nagpur. The B.sc., B.A. and B.com. college in Nagpur  is one one of the most popular academic degree courses among the science and arts students after class 12th. After the completion of the B.A. degree, there are various options available for the arts students, they can go for master degree in arts i.e  M.A. The B.sc., B.com, B.A. and M.A. course of M.J.Science  college in Nagpur provides opportunities for the development of skills, capabilities and talents. The infrastructure of B.sc., B.com, B.A. and M.A. of  these college are with the well equipped workshop, lecture halls, conference hall, seminar hall etc. The admissions  of students in the stream of B.sc., B.com, B.A. and M.A of M.J.Science college in nagpur are increasing  at higher level for their bright future. The course curriculum of B.sc., B.com, B.A.  and M.A of M.J.Science college in Nagpur is very good and extensive. Apart from this, various other internal activities in the B.sc., B.com, B.A. and M.A. stream  of M.J.Science college in nagpur are held during an year. Overall, the M.J.Science college of Nagpur is very good with excellent faculty and academics. The M.J.Science college is situated near Jhansi Rani Square at Nagpur. It is the best institution for the students career.
0 notes
t-baba · 6 years
Photo
Tumblr media
Deploy a Laravel App to Alibaba Cloud Using Docker
In this tutorial, we will deploy a Laravel application using Docker and Alibaba Cloud Container Service.
Prerequisites
Before you begin this guide you’ll need the following:
Docker installed on your local machine (if you can’t install the latest version you can use Docker Toolbox)
Composer installed on your computer
Preparing the Application for Deployment
First of all, you need a Laravel application that you can Dockerize. You can just copy my example from GitHub and push to your own git repository or you can create a new Laravel app using Composer with this command: composer create-project --prefer-dist laravel/laravel appname
We need to add some files to the root of the Laravel app.
You have to create an environment configuration file for the production environment, let’s call it .env.prod. You can copy your existing .env file, but don’t forget to modify the values(for example, set APP_ENV to production).
We will need a configuration file for the web server as well(we will use Apache), create a vhost.conf file for our virtual host.
<VirtualHost *:80> DocumentRoot /app/public <Directory "/app/public"> AllowOverride all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
To build our container we need a Dockerfile, we will use multi-stage build:
#Install the dependencies using composer FROM composer:1.7 as build WORKDIR /app COPY . /app RUN composer install COPY .env.prod .env #Application FROM php:7.2-apache RUN docker-php-ext-install mysqli pdo pdo_mysql EXPOSE 80 COPY --from=build /app /app COPY vhost.conf /etc/apache2/sites-available/000-default.conf RUN chown -R www-data:www-data /app \ && a2enmod rewrite
We also need to exclude some files and folders from the container, so you should create a .dockerignore file (you can extend this list if you want):
.git/ vendor/ node_modules/ yarn-error.log
Creating a Repository in Alibaba Cloud Container Registry
On the Alibaba Cloud Console, go to Products > Elastic Computing > Container Registry.
Tumblr media
First, you need to set the registry login password.
Tumblr media
We have to create a namespace, then we can create a repository for the application.
Tumblr media
Make sure that you set the repository type to Private, otherwise the repository will be accessible without the password. You can select the region of your repository as well.
Tumblr media
The Container Registry supports GitHub, GitLab and Bitbucket as a code source which is really useful. If you use one of them you can choose that, but for the simplicity, we will use the Local repository option in this tutorial.
You need to build the container on your local computer and push it to the registry (if you choose a Git hosting service Container Registry will build the containers automatically, so you can skip these steps.)
Run the following command in the root of your Laravel app to build the container (you can replace test/laravel:1.0 tag with your own).
docker build -t test/laravel:1.0 .
If you click on manage at the right of your repository in the Container Registry, you can find the address of your repository and a guide about how to log in to the registry and push an image to the repository.
Tumblr media
So you have to run the following commands, but with your own region, namespace and repository:
docker login [email protected] registry-intl.eu-central-1.aliyuncs.com docker tag test/laravel:1.0 registry-intl.eu-central-1.aliyuncs.com/ma_test/laravel1:1.0 docker push registry-intl.eu-central-1.aliyuncs.com/ma_test/laravel1:1.0
When you successfully pushed the image, you will see it under the Tags tab.
Tumblr media
Creating a VPC
On the Alibaba Cloud Console go to Products > Networking > Virtual Private Cloud and activate VPC.
Choose your region from the top menu and create a VPC and a VSwitch.
Tumblr media Tumblr media
Creating a Cluster
First you need to enable RAM (Products > Monitor and Management > Resource Access Management), then you can go to Products > Elastic Computing > Container Service.
Container Service supports both Swarm and Kubernetes. Now we will use Swarm, so you should select Swarm from the left menu.
Tumblr media
Click on the Create Cluster button and configure your cluster (don’t forget to select the same region that you selected for your VPC).
Tumblr media Tumblr media
I chose 2x (2 nodes) 1 Core 1GB ECS instances for the demo, but you can choose a different configuration if you want.
In the Login section, you need to create SSH keys or set a password. I highly recommend SSH keys, but for the simplicity, you can use passwords for now.
When you have finished with the configuration you can click on the Create button (a confirm dialog will show up with pricing information).
When the cluster creation is finished and you can see your cluster in the cluster list, click on Manage.
You need to log in to your private repository to access the images, so click on the Log on to Hub button. If you don’t know what the repository’s domain name is, you should go to the Container Registry control panel and click on Manage at the right of your repository. Copy the VPC address (for example: registry-intl-vpc.eu-central-1.aliyuncs.com/ma_test/laravel1) — that is your Repository Domain Name. Your username and password is the username and password of your registry.
Tumblr media
Now the cluster nodes can pull your image from the private repository.
Deploying the Application
On the Container Service control panel click on Applications from the left menu, then click on Create Application.
Tumblr media
Set the name and the version, check Pull Docker Image (this will ensure that you definitely end up with the latest version), then click on Create with Image button.
The post Deploy a Laravel App to Alibaba Cloud Using Docker appeared first on SitePoint.
by Magyar András via SitePoint https://ift.tt/2OcEBAP
0 notes
mbaljeetsingh · 6 years
Text
Build a Music Player With Vuetify
What You'll Be Creating
Building apps with Vue.js is easy, fun, and enjoyable. You can build a working app with minimum effort. To prove that, today I'll show you how easy it is to build your own full-featured music player. To make things even easier, we'll use Vuetify.js, a Vue.js powered UI library, which will speed up the UI construction. I can almost feel your impatience, so let's get started. 
You can find the full source code in the GitHub repo. And here is the working demo. To follow this tutorial, you should be familiar with Vue components, Vue single file components, and ES2015 syntax.
Planning the App
Every creation starts with an idea and at least some basic planning. So first we need to decide what we want to build and what functionality we want to implement. It's said that a picture is worth a thousand words, so let's start with a simple sketch of the music player.
I made this wireframe so you can get a general notion of the UI we want to build. The next step is to describe the functionality we intend to implement.
As John Johnson says: 
First, solve the problem. Then, write the code.
We'll use that as a source of wisdom, and we'll plan the app out before we start coding it.
App Components
Vue.js is a component-based framework. So we need first to split the app into individual components (five in our case, as shown in the sketch above), and to outline the features and functionality for each of them. 
Title Bar
This component will contain the following parts:
a menu on the left side
the name of the app in the center
three static icons on the right side
Info Panel
This component will show basic information about the currently played track:
the track's artist and title on the left side
the current track's position and duration on the right side
Control Bars
This component will contain two bars, which will include all the controls necessary to manipulate the audio tracks in the player's playlist.
a volume slider with an icon on the left (its appearance will change according to the volume level and when the sound is muted), and volume percentage on the right
buttons for playing, pausing, stopping, and skipping the tracks.
two buttons on the far right: one for repeating the current track, and one for shuffling the tracks' order of playing
a seek bar showing the currently played track's position, with the ability to change it with a mouse click on the bar
Playlist Panel
This component will contain the tracks' playlist with the following functionality:
display a track with the proper number, artist, title, and duration properties
select a track on single click
play a track on double click
Search Bar
This component will offer search functionality in the cases when we want to find and play particular track(s).
Of course, the above outline cannot cover all the details and nuances, and this is perfectly fine. For now, it's enough for us to get an overall picture of the final product. We'll handle all the details and eventual challenges during the building process.
So let's get into the fun part and write some code!
Getting Started
Vuetify's quick start page offers plenty of options to get you started. We'll use one of the pre-made Vue CLI templates called Webpack Simple. Run the following commands in the directory you want to use for this project:
First, install Vue CLI:
$ npm install -g vue-cli
Then, create the app: 
$ vue init vuetifyjs/webpack-simple vue-music-player
Next, go to the app's directory and install all dependencies: 
$ cd vue-music player $ npm install
We'll use Howler.js (a JavaScript audio library) to handle the audio parts of the music player. So we need to include it in the project too. Run the following command:
$ npm install --save howler
And finally, run the app:
$ npm run dev
The app will open on localhost:8080 in your default browser. You should see a simple Vuetify app skeleton. 
Tweaking the Template
To adjust it to our needs, we need to clean up the template and tweak it a bit. Rename the App.vue file to Player.vue, open it, delete everything inside, and add the following instead:
<template> <v-app dark> <v-content> <v-container> <!-- The player components go here --> </v-container> </v-content> </v-app> </template> <script> export default { data () { return { } } } </script>
We wrap our music player app in the v-app component, which is required for the app to work properly. We also pass the dark prop, to apply the Vuetify dark theme.
Now, open the main.js file, delete the original content, and add the following:
import Vue from 'vue' import Vuetify from 'vuetify' import 'vuetify/dist/vuetify.css' import Player from './Player.vue' import {Howl, Howler} from 'howler' Vue.use(Vuetify) new Vue({ el: '#app', render: h => h(Player) })
Also, open the index.html file and change the content of the <title> tag to Vue Music Player.
Now, in your browser, you should see an empty dark page. And voila. You are ready to start creating.
Before you start coding, it's good to know that Vuetify offers code snippets and autocompletion for the major code editors: VS Code, Atom, and Sublime. To get the snippets, search for the extension in your favorite editor (vuetify-vscode, or vuetify-atom, or vuetify-sublime).
Build the Title Bar Component
In the src directory, create a new components folder. Then, in that folder, create the PlayerTitleBar.vue file with the following content: 
<template> <v-system-bar window> <v-menu offset-y transition="slide-y-transition"> <v-btn flat small right slot="activator"> <v-icon>headset</v-icon> MENU </v-btn> <v-list> <v-list-tile @click="dialog = true"> <v-list-tile-title>About</v-list-tile-title> </v-list-tile> <v-dialog v-model="dialog" max-width="300"> <v-card> <v-card-title><h2>Vue Music Player</h2></v-card-title> <v-card-text>Version 1.0.0</v-card-text> <v-card-actions> <v-spacer></v-spacer> <v-btn flat @click="dialog = false">OK</v-btn> </v-card-actions> </v-card> </v-dialog> </v-list> </v-menu> <v-spacer></v-spacer> VUE MUSIC PLAYER <v-spacer></v-spacer> <v-icon>remove</v-icon> <v-icon>check_box_outline_blank</v-icon> <v-icon>close</v-icon> </v-system-bar> </template> <script> export default { data () { return { dialog: false } }, } </script>
Here, we use the following Vuetify components: toolbar, menu, button, icon, list, dialog, and card. 
We separate the menu, the name, and the icons with the <v-spacer> component. To show or hide the dialog, we create the dialog: false data property. Its value will toggle when we click on the About menu item.
Now, in the Player.vue file, import the title bar component, register it in the components object, and add it in the template.
<template> <v-app dark> <v-content> <v-container> <player-title-bar></player-title-bar> // ADD the component in the template </v-container> </v-content> </v-app> </template> <script> import PlayerTitleBar from './components/PlayerTitleBar.vue' // IMPORT the component export default { components: { PlayerTitleBar // REGISTER the component }, data () { return { } } } </script>
Now, check the result in your browser. You should see the following:
We'll repeat these three steps for the other four components. So when in the next sections I tell you to import, register and add a component in the template, you should follow the same procedure described here.
Build the Playlist Component
In the root directory, create a new playlist folder and add the audio files you want to play. The file names must be written with underscores between the words and a .mp3 extension at the end—for example, Remember_the_Way.mp3. Now, create an audio tracks array inside Player.vue's data object: 
playlist: [ {title: "Streets of Sant'Ivo", artist: "Ask Again", howl: null, display: true}, {title: "Remember the Way", artist: "Ask Again", howl: null, display: true}, ... ]
Each track has title and artist properties, a howl object set to null, and a display property set to true. 
The display property will be used when we implement the search functionality. Now it is set to true for all tracks, so all of them are visible.
Howler wraps an audio file in a howl object. We set howl to null because we'll populate it dynamically at the creation of the Vue instance. To do that, we use the Vue's created lifecycle hook. 
created: function () { this.playlist.forEach( (track) => { let file = track.title.replace(/\s/g, "_") track.howl = new Howl({ src: [`./playlist/${file}.mp3`] }) }) }
This will set a new Howl object for each track in the playlist.
Now, create the PlayerPlaylistPanel.vue component and add this inside: 
<template> <v-card height="330"> <v-list> <v-list-tile v-for="(track, index) in playlist" :key="track.title" v-show="track.display"> <v-list-tile-content> <v-list-tile-title> - </v-list-tile-title> </v-list-tile-content> <v-spacer></v-spacer> </v-list-tile> </v-list> </v-card> </template> <script> export default { props: { playlist: Array } } </script>
First, we pass the prop playlist from the Player.vue file. Next, in the template, we go through each track with the v-for directive and display the track's index, followed by the track's artist and title, and the duration of the track on the far right. We also use v-show bound to the display property. A track will be visible only if display is true.
Now, in the Player.vue file, we import, register, and add the playlist component in the template. Then, we bind the playlist prop to the playlist data property like this: <player-playlist-panel :playlist="playlist"></player-playlist-panel>.
Let's check the result in the browser:
There are two problems here. First, the numbers of the tracks are not correct, and second, the track's duration is shown in milliseconds, but we want it to be in minutes. We'll fix each of these issues by creating a formatting filter. 
In the main.js file, create a numbers filter and a minutes filter, which will be globally accessible. Next, in PlayerPlaylistPanel.vue, we use them like this:  and .
Now, if you check the app, everything should display correctly. 
Make Tracks Selectable
In the Player.vue file, add the selectedTrack: null data property and bind it to the playlist component (:selectedTrack="selectedTrack"). Then, we pass the prop in the PlayerPlaylistPanel.vue file (selectedTrack: Object).  
We also add a click event listener to <v-list-tile-content @click="selectTrack(track)"> and then create the selectTrack() method:
methods: { selectTrack (track) { this.$emit('selecttrack', track) } }
Now, back in Player.vue, add the selecttrack event to the playlist component (@selecttrack="selectTrack") and create the selectTrack() method:
selectTrack (track) { this.selectedTrack = track }
Now, if you go to the playlist and click on a track, it will be selected. We can't see it, but we can prove it in the Vue DevTools. In the following screenshot, the second track is selected:
Row and Selection Styling
The next step is to make the selection visible. To do it, we'll bind a class which will color the selected track in orange and another class which will make even rows darker to make the tracks more distinguishable. Put the following after the v-show directive:
:class="[{selected: track === selectedTrack}, {even: index % 2 == 0}]"
We'll also add another class, which will show a scrollbar when the list gets too big.
<v-card height="330" :class="{playlist}">
We add the necessary classes at the end of the file. 
<style scoped> .selected { background-color: orange !important; } .even { background-color: #505050 } .playlist { overflow: auto } </style>
And that's it. Now, the selected track is highlighted in orange.
We'll add the double click play functionality at the end of the next section.
Build the Player Controls Component
Let's create the player controls now. We'll start with the play, pause, and stop buttons. 
Add the Play, Pause, and Stop Buttons
Create the PlayerControlsBars.vue component and add this inside: 
<template> <div> <v-toolbar flat height=90> <v-spacer></v-spacer> <v-btn outline fab small color="light-blue" @click="stopTrack"> <v-icon>stop</v-icon> </v-btn> <v-btn outline fab color="light-blue" @click="playTrack()"> <v-icon large>play_arrow</v-icon> </v-btn> <v-btn outline fab small color="light-blue" @click="pauseTrack"> <v-icon>pause</v-icon> </v-btn> <v-spacer></v-spacer> </v-toolbar> </div> </template>
Here, we use the Vuetify toolbar component.
There are three buttons with registered click event listeners. Let's create the methods for them: 
methods: { playTrack(index) { this.$emit('playtrack', index) }, pauseTrack() { this.$emit('pausetrack') }, stopTrack() { this.$emit('stoptrack') } }
Now, in the Player.vue file, import, register, and add the component in the template. Then, register the event listeners (@playtrack="play", @pausetrack="pause", @stoptrack="stop").
Next, create the index: 0 data property, which will hold the index of the current track. Then, create a computed currentTrack(): 
computed: { currentTrack () { return this.playlist[this.index] } }
And now we can start to create the play, pause, and stop methods. We'll start with the play() method, but before that we need to create the playing: false data property, which will indicate whether the track is playing or not. Add the following code for the play() method:
play (index) { let selectedTrackIndex = this.playlist.findIndex(track => track === this.selectedTrack) if (typeof index === 'number') { index = index } else if (this.selectedTrack) { if (this.selectedTrack != this.currentTrack) { this.stop() } index = selectedTrackIndex } else { index = this.index } let track = this.playlist[index].howl if (track.playing()) { return } else { track.play() } this.selectedTrack = this.playlist[index] this.playing = true this.index = index }
The method takes an index as the parameter, which specifies the track to be played. First, we get the index of the selected track. Then, we make some checks to determine the value of the index. If an index is provided as an argument and it's a number, then we use it. If a track is selected, we use the index of the selected track. If the selected track is different from the current one, we use the stop() method to stop the current one. Finally, if neither an index argument is passed nor a track is selected, we use the value of the index data property.
Next, we get the howl (based on the index value) for the track and check whether it is playing. If it is, we return nothing; if it's not, we play it. 
Finally, we update the selectedTrack, playing and index data properties.
Let's now create the pause() and stop() methods. 
pause () { this.currentTrack.howl.pause() this.playing = false }, stop () { this.currentTrack.howl.stop() this.playing = false }
Here, we just pause or stop the current track and update the playing data property.
Let's also make a track start playing on double click.
Add @dblclick="playTrack()" to <v-list-tile-content> in the PlayerPlaylistPanel.vue and create the playTrack() method:
playTrack(index) { this.$emit('playtrack', index) }
Register the listener @playtrack="play" in the Player.vue file and voila.
Add the Previous and Next Buttons
Let's now add the previous and next buttons.
<v-btn outline fab small color="light-blue" @click="skipTrack('prev')"> <v-icon>skip_previous</v-icon> </v-btn> <!-- stop, play, and pause buttons are here --> <v-btn outline fab small color="light-blue" @click="skipTrack('next')"> <v-icon>skip_next</v-icon> </v-btn>
Create the skipTrack() method:
skipTrack (direction) { this.$emit('skiptrack', direction) }
Register the event listener (@skiptrack="skip") in Player.vue.
And create the skip() method:
skip (direction) { let index = 0 if (direction === "next") { index = this.index + 1 if (index >= this.playlist.length) { index = 0 } } else { index = this.index - 1 if (index < 0) { index = this.playlist.length - 1 } } this.skipTo(index) }, skipTo (index) { if (this.currentTrack) { this.currentTrack.howl.stop() } this.play(index) }
We first check if the direction is next. If so, we increment the index by 1. And if the index gets bigger than the last index in the array, then we start again from zero. When the direction is prev, we decrement the index by 1. And if the index is less than zero, then we use the last index. At the end, we use the index as an argument for the skipTo() method. It stops the current track and plays the next or previous.
Here is how the player looks with the buttons:
Add the Volume Slider
Add the following before all the buttons:
<v-slider v-model="volume" @input="updateVolume(volume)" max="1" step="0.1"></v-slider>
Here, we use the Vuetify slider component.
Add the volume: 0.5 data property, and then create the updateVolume() method:
updateVolume (volume) { Howler.volume(volume) }
Here, we use the global Howler object to set the volume globally for all howls.
Also, we need to sync the initial Howler volume, which by default is set to 1, to the volume property. If you don't do it, the volume will show 0.5 but will be 1 initially. To do that, we'll use the created hook again:
created: function () { Howler.volume(this.volume) }
We want to see the volume level as a percentage on the right of the volume slider, so we add this in the template:  
Add the Mute Button 
Now, we add a volume icon before the slider. 
<v-btn flat icon @click="toggleMute"> <template v-if="!this.muted"> <v-icon v-if="this.volume >= 0.5">volume_up</v-icon> <v-icon v-else-if="this.volume > 0">volume_down</v-icon> <v-icon v-else>volume_mute</v-icon> </template> <v-icon v-show="this.muted">volume_off</v-icon> </v-btn>
The icon will change according to the values of the volume and muted properties.
Add the muted: false data property and create the toggleMute() method:
toggleMute () { Howler.mute(!this.muted) this.muted = !this.muted }
We use the global Howler object again to set the mute globally, and then we toggle the muted value. 
In the screenshot below, you can see how the volume slider should look:
Add the Repeat Button
Add the following after all the buttons:
<v-btn flat icon @click="toggleLoop"> <v-icon color="light-blue" v-if="this.loop">repeat_one</v-icon> <v-icon color="blue-grey" v-else>repeat_one</v-icon> </v-btn>
Add the loop: false property in Player.vue, bind it :loop="loop" and pass the prop (loop: Boolean) in PlayerControlsBars.vue. 
Now, let's create the toggleLoop() method:
toggleLoop () { this.$emit('toggleloop', !this.loop) }
Now, back in Player.vue, register the event listener (@toggleloop="toggleLoop") and create the toggleLoop() method:
toggleLoop (value) { this.loop = value }
At this point, we face a small problem. When a track seeks the end, it just stops. The player doesn't move to the next track, nor does it repeat the current track. To fix that, we need to add the following to the created function after the src property:
onend: () => { if (this.loop) { this.play(this.index) } else { this.skip('next') } }
Now, when the loop is on, the current track will be repeated. If it's off, the player will move on the next track.
Add the Shuffle Button
Add the following after the repeat button:
<v-btn flat icon @click="toggleShuffle"> <v-icon color="light-blue" v-if="this.shuffle">shuffle</v-icon> <v-icon color="blue-grey" v-else>shuffle</v-icon> </v-btn>
Add the shuffle: false property in Player.vue, bind it (:shuffle="shuffle"), and pass the prop (shuffle: Boolean) in PlayerControlsBars.vue. 
Now, let's create the toggleShuffle() method;
toggleShuffle () { this.$emit('toggleshuffle', !this.shuffle) }
Now, back in Player.vue, register the event listener (@toggleshuffle="toggleShuffle") and create the toggleShuffle() method:
toggleShuffle (value) { this.shuffle = value }
Now, add the following to the skip() method after index = 0:
lastIndex = this.playlist.length - 1 if (this.shuffle) { index = Math.round(Math.random() * lastIndex) while (index === this.index) { index = Math.round(Math.random() * lastIndex) } } else if (direction === "next") { ...
Here's how your app should look now:
Add the Seek Bar
First, in Player.vue, create the seek: 0 property. Then we'll need to watch the playing property in order to update the seek.
watch: { playing(playing) { this.seek = this.currentTrack.howl.seek() let updateSeek if (playing) { updateSeek = setInterval(() => { this.seek = this.currentTrack.howl.seek() }, 250) } else { clearInterval(updateSeek) } }, }
This will update the seek value four times per second.
Now, create a computed progress():
progress () { if (this.currentTrack.howl.duration() === 0) return 0 return this.seek / this.currentTrack.howl.duration() }
Bind it (:progress="progress") in the template. 
Now, in PlayerControlsBars.vue, pass the progress prop (progress: Number) and add another toolbar below the one we've already created:
<v-toolbar flat height="40"> <v-progress-linear height="40" v-model="trackProgress" @click="updateSeek($event)"></v-progress-linear> </v-toolbar>
Here, we use the Vuetify progress component.
Create a computed trackProgress(), which will get the track's progress as a percentage.
computed: { trackProgress () { return this.progress * 100 }, }
And now, create the updateSeek() method: 
updateSeek (event) { let el = document.querySelector(".progress-linear__bar"), mousePos = event.offsetX, elWidth = el.clientWidth, percents = (mousePos / elWidth) * 100 this.$emit('updateseek', percents) }
Here, we get the progress bar element, which uses the .progress-linear__bar class. I found this with the Browser DevTools. Next, we get the mouse position and the width of the bar. Then, we get the mouse click position as a percentage.
Back in Player.vue, add and register the event listener (@updateseek="setSeek") and create the setSeek() method:
setSeek (percents) { let track = this.currentTrack.howl if (track.playing()) { track.seek((track.duration() / 100) * percents) } }
And boom! You can use your mouse to change the position of the played track.
Build the Info Panel Component
Create the PlayerInfoPanel.vue file with the following content:
<template> <v-card height="60"> <v-card-title> <h2> - </h2> <v-spacer></v-spacer> <h3>/</h3> </v-card-title> </v-card> </template> <script> export default { props: { trackInfo: Object }, } </script>
Here, we pass a prop trackInfo, which we use to populate the track information in our component.
Now, back in Player.vue, import, register and add the component in the template. 
Then, create a computed getTrackInfo(): 
getTrackInfo () { let artist = this.currentTrack.artist, title = this.currentTrack.title, seek = this.seek, duration = this.currentTrack.howl.duration() return { artist, title, seek, duration, } }
Next, we bind it in the template (:trackInfo="getTrackInfo") and voila. We get some basic info for the currently played track, as you can see in the screenshot below.
Build the Search Bar Component
Create the PlayerSearchBar.vue file with the following content: 
<template> <v-toolbar flat> <v-text-field clearable prepend-icon="search" placeholder="Quick search" v-model="searchString" @input="searchPlaylist"> </v-text-field> <v-spacer></v-spacer> </v-toolbar> </template> <script> export default { props: { playlist: Array }, data () { return { searchString: "", } }, methods: { searchPlaylist () { this.playlist.forEach((track) => { if (this.searchString) { if (!track.title.toLowerCase().includes(this.searchString.toLowerCase()) && !track.artist.toLowerCase().includes(this.searchString.toLowerCase())) { track.display = false } else { track.display = true } } else if (this.searchString === "" || this.searchString === null) { track.display = true } }) } }, } </script>
We create a text field and add the clearable prop to show a clearing icon when we type something.
By using v-model, we bind it to the searchString, which is an empty string initially. And we add an input event listener.
We also pass the playlist prop, which we use in the searchPlaylist() method. In this method, we use the display property and turn it off for each track where the title or artist doesn't match the search string, and we keep it or turn it on for all matches. Finally, if the search string is empty or equal to null, which happens when we clear the field with the clear button, we turn on the display for all tracks.
Now, back in Player.vue, import, register and add the component in the template. 
Bind the playlist property (:playlist="playlist") and check the functionality. Here is how it should look in action:
Some Improvement Ideas
As you can see, with a clear goal and proper planning, building a Vue/Vuetify app can be really easy and enjoyable. You now have a working music player which you can use during your relaxation or coding time. Of course, there is always room for further improvements and additions, so here are some ideas you can try out to make the player even more feature-rich: 
multiple playlist support
ability to add or remove tracks from the playlist
drag-and-drop support
ability to sort the tracks
audio visualization 
Conclusion
In this tutorial, we saw how easy and enjoyable it can be to build an app with Vue.js, and with Vuetify.js in particular. I hope you enjoyed building this player as much as I did. I'll be glad to see your own improved version of the player. So if you create one, just drop a demo link in the comments!
via Envato Tuts+ Code https://ift.tt/2L75fu3
0 notes