Tumgik
#scrap folder has doubled in size
eltanin0 · 1 month
Text
Tumblr media
42 notes · View notes
How to make F/GO sprite comics
Tumblr media
Saw in one of the tags someone wondering about how we make these, so here ya go! A tutorial on how we personally make these things! We'll try to keep it simple for ya dw.
First thing's first, the most important part: the actual dialogue box.
Tumblr media
We keep this on roughly 80% opacity, but you could go a bit lower if you wanted I think.
Then, if you want a dialogue option, here's this bit too, just for good measure:
Tumblr media
That's probably among the hardest to get your hands on, but also this is assuming tumblr doesn't fuck up the transparency. If it does, I'll point out where you can crop 'em yourself later.
Next up: the font! It uses something like FOT-SkipStd-B, which you may or may not already have installed on your computer, so double check before downloading anything ofc.
Now, we just kind of eyeballed the exact placement and font size, but we use 19pt font and 125% line spacing and it looks pretty alright.
But, just leaving the text as-is will still look super flat and jarring, so you gotta add a bit of a gradient effect to it as well.
Tumblr media
It might go by a different name in your program, but in Krita, all our gradient bars are set to inherit alpha (transparency) from the layers below it in its group, meaning the "Gradients" layer folder will only be visible over anything solid from the Nameplate, dialogue option, and Text Box layers here (aka, it'll only show up over any text itself).
And that should cover most everything for the text! Next up, the expression sheets!
You can usually find most any character's expression sheet from the images section of the fgo wiki, where you can then slap it down, do some select/cut/pasting of each expression off the sheet, and line it up with the original sprite itself like so:
Tumblr media
We find that numbering them and giving a short description of what expression it is helps a lot when digging for the exact face you want. Turns out, at least the first 4-6 expressions off most everyone's sheet are gonna be the same general emotions too, btw! Some have duplicates though for simplifying coding things across ascensions, so be aware of that as well.
And finally, the backgrounds. This one's kind of spread all over the place, so I'll drop a bunch of links and you can take your pick.
First is the Kyuburu user blog off the fgo wiki that has a lot of the Part II onward story/events in a pretty well organized fashion that's easy to look through and find what you need. Only problem is it doesn't seem to have much of the earlier stuff, so you'll need to look somewhere else for that.
Second is this asset dump that I don't remember where I grabbed it from, but has a lot of stuff that's pretty well organized, but only up to LB 1 I think. When I said earlier about if tumblr fucked up the transparency, file 3 under User Interface has the raw asset sheet it's from, so you can scrap it together if need be.
This asset dump from this thread seems to be more up-to-date though (through LB 6.3 I think?) so you'll probably have more luck with this one for your general needs.
And finally, if you're looking for something harder to find (like the more recent JP content), you can go digging around the Atlas Academy Database and look for the cutscene scripts of what scene you're wanting, and it should have links to the BG and the expression sheet of whatever's there at that moment. It might be a little messier to dig through though, so give the other stuff a look first before resorting to this.
And that should be mostly it! The most difficult part is just getting things initially set up, and each expression sheet takes a hot minute to get sorted out, but I just do all my work in the same file so you can just re-use everything you pull together and you'll be set.
It's pretty fun and easy once you get the hang of it, so best of luck and have fun!
19 notes · View notes
shadowslackinglight · 4 years
Text
#2 - The Interview
This is Victoria Winters. Friends and family had warned me prior to my fateful interview with the Collins family that they had a reputation of being eccentric. Of course, with the excitement of the opportunity coursing through my veins, I dismissed the concerns out of hand. I quickly came to realize, however, that this particular family was shrouded in dark secrets and motives. No person residing at the Collinwood Estate was without an internal struggle hiding just under the surface.
From the diary of Victoria Winters.
Vicky winters stood slightly damp from the rain in the foyer of the new Collinwood Estate. Although citizens of Collinsport referred to the current residence of the family as the “new” house, it was hardly a modern construction. The house was originally built during the Spring and Summer of 1860, just over two hundred years after the original house was built. It appeared to Vicky, who had a keen eye for these things, that much of the furniture in the modest-sized entryway was originally from the Victorian era. The floors were made of finely-preserved wood, part of which was covered in a large rug. The walls were covered in a dark red wallpaper with black flowers. Directly in front of Vicky was an elaborate wooden staircase, complete with a polished banister. To her left was a large set of double doors leading into another room. The wall opposite those doors held two more doors leading to other rooms. Between them hung a large oil painting of a tall, pale man with dark, black hair. The man was donned in what Vicky believed to be the traditional wardrobe of a gentleman from the seventeenth or early eighteenth century. 
“Miss Winters,” said an elderly man who had descended from the second floor of the home when  Vicky entered the house, “Ms. Stoddard-Collins will be with you shortly. Would you care for something to drink?”
Vicky looked at the man, attempting to make eye contact and convey a confidence that she did not feel in her heart.  The man’s face was gaunt and because the room was dimly lit, partially covered in shadow. What she could see of him did not appear to be in great health.
“No thank you, Mr...” came Vicky’s response in a semi-whisper. 
“Sorry,” he said to her, “How rude of me not to introduce myself. I’m Roger Collins, Elizabeth’s brother.”
The man motioned to his right where the large double doors stood. Vicky followed him to the doors and entered once he opened them.
“Who is that man in the picture?” she asked him, motioning to the picture on the wall.
“Oh, that old thing?” Roger replied, “He’s a distant relative. When this house was built, all of the art was taken from the original and put into storage here on the estate. Elizabeth has always loved all of the portraits, ever since she was a child. When she took over the house after our parents’ deaths, she wanted to add them all to this house. Unfortunately, the shed they were in allowed a bit too much of the weather to intrude. All of the artwork was destroyed except that one. Peculiar, really.”
“Peculiar, indeed,” Vicky said.
“Please, Ms. Winters, have a seat anywhere in this room. I will summon my sister, presently.” Roger left the room, closing the double doors behind him.
Vicky stood in the massive drawing room and took it in. The room was dimly lit by a fancy chandelier dangling from the center of the ceiling and several lamps placed at small tables arranged strategically around the room. The effect cast interesting shadows in every corner. The floor was wooden, polished extravagantly. There were a couple of old, green, leather couches and chairs in the room as well as a large piano. Each of these items stood atop very old, expensive-looking rugs. The walls were also made of wood paneling with various pieces of art hanging from them. On the wall directly across from the entrance to the room was a very large, elaborate fireplace that was outlined with a decorative, wooden hearth. The aesthetic of this room appeared to be untouched from the time in which the house was built. Vicky was sure the furniture was new, but it was clearly ordered custom to match the style of the rest of the house. The wall pointing to the outside of the house held a massive window. The storm was really picking up, now. Lightning and thunder struck again, illuminating the whole room for a moment before subsiding. 
Vicky chose one of the leather couches facing a small table with a matching chair directly across from it. Perfect for an interview, she thought. After a few minutes that crawled on like hours to Vicky, Ms. Collins Stoddard finally entered the room. 
“Apologies for the wait,” she said in a monotonous voice, “There was a bit of family business to address that ran longer than I had hoped. 
Vicky stood, turning to face the woman, “No problem, at all,” she replied, offering her hand to the matriarch.
Ms. Collins Stoddard walked to the chair opposite her and sat. Vicky wasn’t sure if she had seen her hand or had simply ignored it. Vicky sat back down on the couch, making sure her posture was perfect.
Looking at Ms. Collins Stoddard, Vicky could tell the woman was trying to put forth an air of superiority, but she wasn’t quite pulling it off. Her dark, brown hair, while put up in a bun, had a few strands that indicated it was done in haste. Her midnight blue dress was just slightly disheveled, and her green eyes looked weary. She looked stressed. Vicky was not surprised. The public relations nightmare that was this project had to have been taking its toll on Ms. Collins Stoddard. Daily protests and weekly articles about what Vicky assumed had to be a very difficult decision couldn’t have helped the situation, either. Vicky felt a bit sorry for the woman, but that empathy would quickly disappear as the interview started.
Ms. Collins Stoddard began leafing through the copy of Vicky’s profile that Vicky had mailed ahead of her visit. The woman’s face displayed no emotion as she did. Finally, after taking a look at every sheet of paper in the folder while Vicky waited in silence, Ms. Collins Stoddard finally made eye contact with her and spoke.
“Apologies for not being fully prepared,” she began, “Normally, I would look over your dossier in advance of our meeting, but to be completely honest, I did not fully expect you to come for this interview.”
“Pardon me?” Vicky stammered.
Ms. Collins Stoddard gave the slightest smirk, “Well, it’s just that you must’ve known that you are only getting this interview as a favor to a member of the family. A project like this takes experience and know-how. I don’t believe you to have either of those things. It’s a big responsibility that cannot fail.”
“I see,” was all Vicky could manage to say. Again, thunder cracked loudly outside. Vicky jumped at the sound. Her interviewer did not.
“But, here you are, aren’t you, girl? You should know that yesterday, alone, I interviewed three world-renowned architects itching to get their paws on that house,” Ms. Collins Stoddard continued, “However, I did promise to conduct this interview, and your work does look quite impressive for someone so...young. Therefore, in order to fulfill my familial obligation, I will give you five minutes to tell me why I should even remember that I met you. Why do you think you can do this project? What, if any vision do you have for my ancestral home?” she paused, “If nothing else, consider this a practice for your next interview at some low-rate firm in New York that has time to waste showing you the ropes of being a professional architect.”
Vicky looked down to her hands in her lap for a moment, trying to gather her thoughts. If nothing else, she considered, at least the Collins family matriarch was honest. Vicky, however, considered herself to be an overachiever. She was not going to give up and let this opportunity pass her by. In truth, this project was the only thing, at this moment, that she wanted. 
She took a deep breath and looked up. Her eyes met Ms. Collins Stoddard’s. She tried to show determination and grit, but there was no visible response from the person across from her to indicate whether or not she had succeeded. “Very well,” Vicky said calmly, and then she dove in.
For the next five minutes, exactly, Vicky outlined everything she had gathered during her time researching the estate and during her time today in Collinsport. She spoke intently about her initial ideas and plans for a remodel of the original Collinwood house that would turn it into a bustling hotel and tourist attraction while maintaining what made it appealing in the first place: its history. She did not pause. She did not invite Ms. Collins Stoddard to interject. This was her five minutes, and she used every single second of it. She left nothing out because if she had, she knew she would regret it for the rest of her life. She may have been gifted this opportunity, but she was going to make the most of it.
The moment the five minutes ended, the double doors to the drawing-room opened with a creak, and Roger Collins walked through them. Ms. Collins Stoddard tore a scrap of paper off of the corner of Vicky’s resume, wrote something on it, closed the portfolio, and thanked Vicky for her time. She then stood up abruptly and exited the room, handing the scrap of paper to Roger as she walked past him.
Vicky felt tears welling up in her eyes. She had given it everything she had and, apparently, it wasn’t enough. It wasn’t enough for the job, and it wasn’t even enough for a response. She stood quickly, eager to leave the house before her emotions got the better of her. If she got to the station soon, she thought she might be able to catch the last train out of town, and if not, she would stay at a local hotel. There was no way she was going to stay the night in this house after that interview. The embarrassment would be too much.
As she began to make her way out of the drawing-room, she passed Roger who was looking at the scrap of paper in his hand. Her presence near his person startled him to attention, and he turned to her, “Where are you going, Ms. Winters?” he asked.
She turned on her heels and looked at him, exasperated. “I’m going to try to catch a train back,” she replied.
“That won’t be necessary,” Roger told her.
“Mr. Collins, I appreciate the opportunity and your family’s hospitality, but...”
Roger stuck the note out to her, “Here,” he said.
She hesitated, confused, then took the piece of paper and read it for herself. There was a dollar sign on it, followed by a number. A large number. A number that was at least twice as big as any she’d expect to get at a firm. 
“What is this?” she asked.
“Your salary,” Roger replied, “I know it’s a tad low, compared to what you may have expected, but we will be providing you room and board here at Collinwood, which will significantly cut your costs. I’m afraid, however, that the offer is non-negotiable.”
Vicky looked down at the number written by Ms. Collins Stoddard’s hand, again. After a moment, determined to keep a professional face, she looked up and replied as calmly as she could, “Mr. Collins, I believe this will suffice.”
“Excellent!” he said, “You begin tomorrow. Planning for this project must be underway at once!”
“But my things,” Vicky stated, “I’ve only brought enough for one night. I need time to gather my belongings to move.”
Roger looked at her incredulously, “Nonsense. Provide me with a list of your personal belongings, your address, and a key, and I will have someone fetch them for you. If you have them at breakfast, we should have the job done by tomorrow evening.”
Thunder and lightning crashed once more, but this time when the bright flash retreated from the room, all of the lamps and the chandelier had gone out. The two were standing in complete darkness.
“Drats,” Roger said.
To be continued...
2 notes · View notes
veryvirginvirgil · 6 years
Text
From the ground up Z1
Welcome to the z chapters, featuring.... Remy!
Master post of chapters
Remy spread his wings, playing with his phone and sipping on his Starbucks frappe. He usually didn't have time to indulge in coffee, so this moment or rest was well appreciated. As one of a handful of guardians responsible for sleep he spent most of his time rushing about, making sure that the humans slept proper.
The number of rest guardians had risen suspiciously these past few years. He had been responsible for training two himself. The number of rest guardians had risen from ten to thirty, and the new recruits where certainly doing thier jobs. This is why Remy had the time to purchase a phone and develop a love of Starbucks.
Of course his moment of peace was soon ruined.
"Remy." Another guardian came to him, alighting softly on the cloud next to him as he folded his Gray wings behind him.
"Was up, girl?" Remy replied, barely glancing up.
"The assigners requested your presence," he said. Remy glanced up and the messenger. He looked serious.
"K, I'll be there," He said, putting his phone away and flapping to his feet with his soft white wings.
"I'm to escort you to the entrance," The messanger said.
"Clingy much? Whatever let's get out of here," he said taking flight to the assigners office. The messanger followed behind, stopping at the entrance when Remy went in.
Remy was nervous. The assigners assigned guardians to significant humans on occasion, but mostly they all chose who they protected. Only a few guardians had stable jobs, and Remy was one. But protecting a mortal paid well if you did it well enough.
"Emanuel," a hooded assigner stated as he entered a dark, scone light, circular chamber.
"That's me," he said, sitting in the only available chair.
"The Lord has spoken, listen to what he has to say," another stated, directing his attention to an assigner, hood down and eyes glowing a soft pale yellow.
"The rest giver, the youngest of the ten," the assigneer's mouth moved, speeking not with his voice, but a voice Remy distantly recognised as The Lord's. "Emanuel. Remy, I have an important assignment for you. There is one beyond my sight, whose well being I wish to ensure. I have reason to believe he is risen."
"Oh wow," Remy said, sipping quietly on the coffee afterwards.
"I know not what he looks like, nor where he is. I remember where he went. This assignment is a challenge, but one that I know you are the most prepared for. Do you accept?" The Lord spoke. Remy thought for a moment. Was this the cause of more rest givers? Why him? What made him the best guardian for the job?
"My Lord, if I may, why me? A rest giver? I've never been a protector, and freelance work isn't really my style..." He said, finishing up his Starbucks.
"This case, I know, is best to give a rest giver. You know sleep, and that is closely tied to the person. They must learn to dream before they can wake. They must learn to sleep before they may dream. You can help with that in ways others cannot. Do you accept?"
"I..." He paused. He would admit, being a rest giver got boring after he'd been doing it for so long. This was new, and exciting. "Yes My Lord, I accept."
"Good. My assigners have the details. You have time to get you affairs in order before you set off. There are people here to help you. Good luck, Emanuel." The Lord said fading slowly from the assigner.
"Thank you, My lord," Remy said.
"And Emanuel? Do not neglect to dream," The Lord said, fading from the assigner. There was a moment of silence before they where offered water, and drank greedily. The assigner coughed, before leaving the room, pulling the hood of the cloak up. Remy glanced at the assigners, putting his empty cup on the on the table. The assigners pulled papers onto the table, opening folders and pushing thing onto the table.
"Emanuel, you will venture to Pagan springs, and search the woods. You will look for the one whose name begins with a "v". This is the individual The Lord spoke of. You will guard him. Before that you will be training with Gaberial," one assigner spoke
"The morning star?" He asked.
"The current morning star, yes. Your underlings will take up your duties, while you work on the case. The pay, is hefty," another said.
"How much is it?"
"5 times your current net worth," said another.
"Gurl..." Remy said in disbelief. He was already very well off, this could easily make him as rich as Gaberial himself.
"You will be provided with the vast majority of what you will require in order to live as a human convincingly, and you will be taught everything you need to know," the first said.
"When do I leave out?" He asked.
"We have a month. You start training immediately. Go to the back entrance, there Gaberial awaits with a messenger. Tell them you have accepted, and follow Gaberial from there. These papers will be delivered to your apartment, you will review them later," said the second.
"Gaberial will guide you through much of the process," the third said.
"Only engage with those relevant to your assignment. You will most likely have little trouble with them. There is normally no point in socialising," said the last. One of them, Remy lost track of which, ushered him out. He left, heading to the back entrance. There stood Gaberial, handsome and ethereal with the largest and most silver wings Remy had ever seen. The messanger stood with him, both looking to him expectantly.
"I- I've accepted." He said. The messanger flew off, and Gaberial smirked.
"Come on then, youngling, you've got a lot to learn," he said, taking flight. Remy followed, following the guardian as best as he could. Gaberial was naturally very fast, and while Remy was too, Gaberial's wings where easily five times the size of his.
They alighted on large marble steps, leading to a building that Remy had previously no cause to enter.
"The equipment building for high rank missions. This place has basically anything and everything you could need or have want for." Gaberial said, walking to the entrance.
"Starbucks?" Remy said, following.
"I mean, yes? That's normally not the first thing people come up with, but there's all forms of currency so there's gift cards for that," Gabriel said. "But first things first, to the east wing, housing division."
"Sounds lit," Remy said.
"Welcome to the housing division, morning star Gaberial! What can I do for you?" Said a young, pepy gaurdian. She ignored Remy, focusing on Gaberial.
"Thank you, Mary. This is Emanuel, we need to select mobile housing for his upcoming mission," Gaberial said, motioning at Remy. The attendants face fell slightly before she pulled out some paperwork and pens.
"What rank of importance was he assigned? I can get him a rank 10, but any lower than that and you need another building." She said.
"Rank one, we're looking at rank one housing," Gaberial said. Remy, despite being surprised about the rank was smug with her disbelief.
"You almost had me there Gaberial! They don't give anyone but you the rank ones, everyone here knows that," she laughed. "But no, for real, what's his importance rank?" Gaberial said nothing, but pulled out a rank card, it had a photo of Remy, some information, and on the back and the front where both the number one, showing the rank.
"I see, my apologies, morning star Gaberial," she said, filling out some of her paperwork with the card. She hurridly picked up all her papers before leading them down a hall. Gaberial passed the card to Remy, who put it in his pocket to look at later.
"We have a somewhat narrow variety of Rank one apartments, but they are highly functional," she began. "They all have dimensional capacity, item summoning, storage for centuries! Will you be needing a filling cabinet?"
Gaberial raised an eyebrow at Remy.
"Uh... Yeah that'd be cool, or whatever," Remy said.
"We'll make sure you have that. All of out styles are fully stocked, and self cleaning. Let's take a look at modle 1A," she said. They went from apartment to appartment, the attendent giving a brief tour of each. Remy settled on 1D, a clean and creamy apartment that had lower lightning and the fluffiest furniture. It felt similar to the rest givers headquarters.
"Now that we've got that settled, onto the wardrobe department!" Gaberial said. They walked over to the west wing. They passed through large double doors, into a seemingly never-ending warehouse of clothing.
"Oh my gursh," Remy said.
"Hello, Hello!" Out came a young gaurdian, a measuring tape around his shoulders, and scraps of fabric pooring from his pockets. "Welcome to wardrobe! Do you know the duration of your earthy venture?"
"Lengthy, possibly eternal," Gaberial said. "Emanuel here's just been given a high rank assignment, and he'll need a bit of everything."
"Of course! Let me just get some measurements here, find your size, and we'll talk about style in a jiffy!" The gaurdian said, pulling off the tape measure and going to work. Remy's style as it turns out was "sleepy teenage rebellion" as the gaurdian put it. He chose comfortable clothes in mainly blacks, prefering fluffy jackets, soft skinny jeans, and thin shirts that where just as much nightwear as they where daywear.
"You'll definitely be getting a lot of these, but I'll also include a bit of everything! Until you file your final report we'll keep the wardrobe updated for you. Stop on by every once and a while so I can update your measurements."
"Dope," Remy said. still letting his eyes wander over the assortment of clothes. Gabriel pulled him to the next section, the kitchens. The gaurdian there was plump and joyous. He shoved bite sized sample after sample at Remy while another guardian, probably an intern, kept trying to handle paperwork. He found that all the food was delicious, but he definitely had a bit of a sweet tooth. Gabriel pulled him to another side of the building after he complained about getting fat for the fifth time.
"We're heading to the currency section. We don't know exactly where you'll be, so we're gonna fill your wallet when we get it from the dressing department. Right now, we're talking monetary systems and spending." He dragged Remy to a room.
The currency guardian was large and grayed. He was looking older than any guardian, but he tuaght Remy about money with all the youth and vigour of a teen. Remy knew that he was amounghts the 100 oldest guardians, and that this guardian wasn't, but the way he talked and carried himself planted doubt into thousands of years of certainty. He left there will more knowledge about human currency than he thought was possible and a minor exsitantal crisis.
"He was just, too old!" Remy said.
"He's barely even 4,000 years old," Gabriel replied, walking with purpose.
"I know but he's just, like. Really old."
"You're more than twice his age!"
"Girl, I wear it better."
"It doesn't matter. We're approaching the armory," Gabriel lead him in. The walls where glistening with the metallic light of thought of weapons. Wooden weapons and other unique weapons where on smaller racks throughout the room and sheilds hung from wooden rafters, filtering the outdoor light that served at the only source of light. In the center of it all, on a pile of sheilds sat a small guardian, half Remy's height, polishing a knife. Gabriel walked quietly towards her, stopping within her feild of vision, not speaking. Remy followed, eying up and down the shelves and walls.
There was a lot to take in.
_____________
I'm not dead. :)
Taglist:
@changeling-ash @demonickittykat @internallyexplodingrainbows @astraastro @theinsanelycooljaredkleinmen @virgils-hoodie @ccecode @avoidingmyproblemswithart @just-another-transblog @awkwardeko6 @fight-me-in-a-parking-lot @addieshay @thepoolofthedead @4teamsweetflips @milomeepit @magicmagistro @halffictional @the-darkness-art
If your url is in red it will be taken out of the list cause it's broke and I can't tag you. Please tell me your new url to be tagged.
Ask Remy anything at @fromthegrounduprp
8 notes · View notes
buildingbooks · 7 years
Text
This is Riveting
Tumblr media
Like, literally riveting.
Okay, so I don’t normally show builds of experimental builds where I’m figuring stuff out. And this is no exception.
I first made the smaller book you see in the pic above cos I wanted to see how small I could make a springback.
Tumblr media
I made one this small. I was just playing around with the design and I really liked it, so I decided to make a bigger one.
Tumblr media
Started with some bright white paper all folded into shard clusters.
Tumblr media
And, since this is a springback, I needed to do some of those special end pages. I did something different here which I’m quite liking. I pasted the decorative fabric over the entire face of one of the shards - leaving a little bit overhanging to glue another shard to. This gives the book a decorative page a few pages in (after a double page of blank)
Tumblr media
I used John to make a 1cm gap between the two shards
Tumblr media
I then backed some grey fabric with some paper stuff and cut it into strips.
Tumblr media
Which gets glued over the two shards - creating a strong hinge that can be sewn into. Regular decorative end pages get glued onto it now. In this case I chose a simple black card.
Tumblr media
The holes for sewing are easily transferred onto the end page construction by placing another shard over it and piercing through the holes with a needle.
Tumblr media
Everything then gets sewn up all fancy pants with tapes. Wahoo, the shards have been forged into book guts. Trimming happened next.
Tumblr media
After rounding, the outermost shard of the book-guts gets shortened. This is going to be the innermost part of the hinge for the covers. The innermost cover that we’re gluing on now is only 0.7mm thick card. It will also overhang on all (apart from the spine) sides.
Tumblr media
Notches are cut into the top and bottom of this cover to make space for the headbands. Those are attached now. The gaps on the spine between the tapes are also lined with indian cotton to level everything up.
Tumblr media
The second cover/spine is now created. This is fabric lined card and is really sturdy. To make this, you need to find out the distance over the spine + 1cm on each side. You score on those marks and fold it into the shape above. You now have the hinge mechanism for the springback.
Tumblr media
After the hinge mechanism is made you will need to start making the outermost covers. I made mine by gluing 2 sheets of 1.5mm stiff board back to back and leaving them in my press until set.
Tumblr media
They then get cut to size and bevelled.
Tumblr media
The spine is made by laminating sheets of damp cardboard together over the spine. You need to have spine extending 3mm onto the spine. DO NOT OPEN THE BOOK UNTIL THIS IS ENTIRELY DRY - Actually do not open the book until you’re doing the turn-ins.
Tumblr media
I like to whack it in the press until dry.
Tumblr media
Now it is time for the bands across the front. These are the reason I keep pieces of scrap card.
Tumblr media
For the false raised bands on the spine I cut some sharp bevels on some shorted pieces. Note - to get a smooth bend, you’ll be putting the bevelled side facing the spine.
Tumblr media
pre-curve these pieces around a something round.
Tumblr media
Now I’m not perfect. This is delamination and it can occur. it can also be fixed. If it is not too bad you can simply fill the void with glue and close the book until it dries. There are naturally problems with this and sometimes it is better to just take off the spine and re-make it.
Some cases when you want to re-make are as follows: - It feels spongy in sections. This will most likely mean that there are pocket holes of delamination down the spine. You can’t fill these. - If it is not a clean delamination. The holes wont look clean and those holes will most likely run the length of the spine through all the layers. - It is just totally wrecked. I don’t think this needs explanation. You’ll know.
Since your cardboard bends a lot better when damp it can affect your glue adhesion. If your cardboard it too damp the glue wont work properly and will delaminate when you open the book. I’ve found that the best thing to do is apply glue to both sides (the spine already on the book and the new piece to be added). You combine the two pieces, rub them down firmly with your folder and give it a small while to dry out a bit and then repeat the process.
Tumblr media
The holes for the rivets were punched.
Tumblr media
Leather coating begins! I am totally in love with this leather I’ve been able to get. It is Italian garment leather and it is super thin and amazing to work with. You don’t even need to wet it to get it to form perfectly. (I don’t think it’d wet well though in any case)
Tumblr media
After the leather has been put over the covers (before the turn-ins), I installed the rivets. I made sure I used the flat side of the setter on the inner cover so the rivet backs were level with the cover.
Tumblr media
I cut notches near the spine so the turn-ins on the cover come level with end page fold.
Tumblr media
Then I cut that notch into a “V” on the spine side to aid in the spine turn-in.
Tumblr media
Don’t forget to protect your book guts with spare paper when you glue the cover down.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
And there you have it! I quite like this style would love to have the opportunity to make more. If you like what I do and want to help support me please consider buying me a Coffee over on Ko-Fi. Every little bit helps. :) https://ko-fi.com/A035K47 If you want behind the scenes photos or want to keep up to date with news, or even want to purchase some of my works, Hit up the following links. Facebook : https://www.facebook.com/BuildingBooks/ Instagram : https://www.instagram.com/buildingbooks/ Etsy Store: https://www.etsy.com/au/shop/BuildingBooks Help support me by Shouting me a Coffee: https://ko-fi.com/A035K47
104 notes · View notes
instantdeerlover · 4 years
Text
Restaurant Suppliers Are Opening Up to the Public to Keep Their Businesses Alive (1) added to Google Docs
Restaurant Suppliers Are Opening Up to the Public to Keep Their Businesses Alive (1)
 Photo by Isabel Infantes/AFP via Getty Images
Foragers, farmers, and fishers across the U.S. are offering delivery and pickup to the general public
“Probably until the recent past, and I do mean the recent past,” Jason Roland says with a laugh, “about 70 percent of our sales were to restaurants.” He and his wife run Organically Roland, a two-acre farm in South Carolina where they grow produce like sunchokes, broccoli, sweet potatoes, and collard greens. On March 18, the governor ordered restaurants and bars in the state to close to dine-in customers to curb the spread of coronavirus, echoing efforts that swept throughout the country. “I think everybody knew it was coming,” Roland says. A few days before the governor’s announcement, his customers started pulling him aside and canceling or reducing their orders. All but one order was fully canceled after the statewide closures.
“I just finished planting 400 pounds of seed potatoes which I was assured chefs would be buying by the bushel,” Roland says. “That’s just not going to happen now.” Other than one $80 invoice he’s letting go to help out a client, most of his produce was paid for on delivery, so Roland’s new normal is more about finding new buyers for perishable foods than chasing unpaid bills. And of course, Roland is not alone. Across the country, governors and other officials are mandating the closure of dine-in establishments in many states, leaving these suppliers, like so many others, scrambling to sustain their businesses. As Roland says, “I feel confident that this will be one of those things that you always say ‘there was a before time and an after time.’”
“The hardest thing I’ve ever done was build up this business, and overnight, it disappeared”
Many businesses might not exist if it weren’t for chefs on the lookout for unusual flavors or something special to give their diners. Often these businesses — those providing specialty produce, fresh seaweed, or mushrooms picked directly from the woods — go unseen by the general dining public. “A pretty good chunk of my business are flowers that chefs are tweezering at Michelin-starred restaurants,” says Bryan Jessop of Morchella Wild Foods in California. That income is now gone. “The hardest thing I’ve ever done was build up this business, and overnight, it disappeared.” For entrepreneurs who grow their product, losing restaurant contracts doesn’t just mean there’s no income coming in — it means weeks or months of money spent on seeds and labor that might not be recuperated.
Like every supplier I spoke with, Jessop is hoping to pivot to a home delivery or CSA model through posting on neighborhood groups like Nextdoor; others are relying on their social media followings to offload product. “I don’t think it will make me whole, but it will keep me busy and doing what I love to do,” Jessop says of direct-to-consumer delivery sales. “The silver lining might be that I can get to know some of my neighbors and maybe when things are back to normal, I’ll have something to supplement my restaurant business.”
Suppliers who grow, forage, or catch specialty foods that go beyond the realm of the typical grocery store shopping list have long had a symbiotic relationship with the restaurant industry. “Restaurants have the ability to use a really specialized product” compared to supermarkets or even farmers market patrons, says Tyler Akabane, who runs foraging tours through his company Mushrooms For My Friends and works as a forager for Wild Mushrooms in the Boston area, where 99 percent of clients were restaurants. “When patrons go out [to restaurants], they can try something they’ve never had before,” Akabane says and notes that most laypeople don’t know what to look for when buying some of these specialty foods or how to cook them.
On Saturday, Akabane posted to Instagram asking if people in the area would be interested in having mushrooms delivered to their house for $20 a mixed bag. People were excited, not just for the opportunity to support a struggling business, but to get their hands on rare mushrooms without venturing into the woods. Akabane sources over 50 seasonal varieties throughout the year. He’s posted videos about different mushroom varieties and how to cook them on his Instagram both as a way to help out new buyers and give people stuck at home something to do.
“It was not easy and could have used a lot of streamlining,” Akabane says of the first deliveries. He’s hopeful that he can make it work with better planning on his delivery routes. Last week he sold 140 bags to 100 households. “It seems sustainable if I could keep orders like this up,” he says. But so far there are only 42 orders this week. “We have to assess and see if this is something we want to do or not,” Akabane says. “But we don’t have anything else.”
New York City’s Farm One, a hydroponic farm that focuses on specialty produce, microgreens, and edible flowers mostly grown to order for 40 or so restaurants and bars in the city, is in the same boat. “We went from planning for the spring menus with a number of restaurants to a place right now where the majority of our customers are no longer open,” says sales manager Marissa Siefkes. Less than 10 percent of Farm One’s customers are still operating, and with restaurants switching to a delivery- or takeout-only model, small edible flourishes may not make it onto the new menus.
“We’re pivoting from a grow-to-order model where we have hundreds of crops growing at a time to a narrower set of crops we can grow and offer to the public,” Siefkes says. Farm One is hoping that it can stay in business selling fresh herb kits, DIY cocktail kits, microgreens, mustard greens, and other, similar products. Unfortunately many of its crops take one to five weeks of lead time to grow, and with the sudden restaurant closures, Farm One was left with “more waste than we would want,” as Siefkes puts it. “We didn’t have the staff to redirect product to a charitable cause,” he says. And the team has had to scrap some ideas for generating income — like drying herbs or making other value-added products — because it would be so labor intensive that it might put employees at risk of transmitting COVID-19 in a small enclosed space. Luckily, Farm One hasn’t had to lay off any of its full-time employees as of last week, although it stopped having interns or volunteers come in.
While these small suppliers are struggling, overall they may be in a better position than larger companies: Some argue it’s easier for a supplier that consists of just a handful of people to pivot quickly to a new business model. “I feel like we’re in a much better place because we aren’t over-extended,” says Kenny Belov, owner of the “small to mid-size” sustainable seafood distributor Two X Sea. “Right now we’re so boutique we can’t seem to find any customers interested in what we offer,” he jokes.
Although Two X Sea sells items that the average customer could prepare at home, including tuna, trout, scallops, and salmon, there’s not enough volume of direct-to-consumer sales to make the fishing worth it. “I had to tell my fishermen there was no need to go fishing, which was me telling them there’s no need for you to make any money,” Belov says. “That’s been devastating.” Two X Sea does own a trout farm which Belov describes as a “very expensive aquarium,” until he can find residential buyers for the fish. He’s been running deliveries by himself for the dozens of home delivery stops he’s managed to get. It’s about a third of the orders Two X Sea used to get from restaurants, and these are all smaller, family-size orders as well. “I have no problem doing whatever needs to be done to keep as much staff on as possible while we weather this,” Belov says.
Jessop feels similarly about his chances to make it out of this as a small supplier. “I was depressed Monday through Wednesday but seeing the level of support was really encouraging,” Jessop says. “Maybe there are some good opportunities to pivot.”
These suppliers realize that they’re not the only ones struggling, and while they’re doing what they can to stay afloat, their small size also puts them in a position to help others. Organically Roland’s CSA has more than doubled in size in the last week, but he brought a few boxes of produce to one local restaurant so service workers could take what they need for free. “I don’t know how many of the restaurants will be able to come back,” Roland says. “We’re going to help them as much as we possibly can and as long as we possibly can while looking out for our own needs as a business.”
Roland is confident that unlike some larger farms nearby, his two-acre farm will survive. “I know of some folks around here who are bigger and they are in trouble,” he says. Others used to urge him to grow his farm, and he’s now glad he never took their advice. “They don’t have the resources to get rid of their stuff the way that I do.” Now, more than ever, he’s happy to be small-scale.
Tove Danovich is a freelance journalist and former New Yorker who now lives in Portland, Oregon. Follow her on Twitter @TKDano.
via Eater - All https://www.eater.com/2020/3/24/21192437/suppliers-sell-direct-to-consumer-as-restaurants-close-coronavirus-delivery-pickup
Created March 25, 2020 at 12:52AM /huong sen View Google Doc Nhà hàng Hương Sen chuyên buffet hải sản cao cấp✅ Tổ chức tiệc cưới✅ Hội nghị, hội thảo✅ Tiệc lưu động✅ Sự kiện mang tầm cỡ quốc gia 52 Phố Miếu Đầm, Mễ Trì, Nam Từ Liêm, Hà Nội http://huongsen.vn/ 0904988999 http://huongsen.vn/to-chuc-tiec-hoi-nghi/ https://drive.google.com/drive/folders/1xa6sRugRZk4MDSyctcqusGYBv1lXYkrF
0 notes
sserkets · 5 years
Text
Untitled casino Striders fic
I started writing this for some reason and I don’t remember why.
But if we’re posting drafts to clean out the folder might as well post this. This was written in January of 2017.
________________________________________________
“No.”
“Do you have any better ideas?”
“No,” Dirk crossed his arms, his lip curled up in a disgusted snarl. “No, I don’t, but you are absolutely not spending the rest of our money gambling in a casino.”
The neon lights of the Vegas strip back lit his face in a milti-colored wash mad of mostly yellows and blues, flashing constantly. The light played off the skin of Dirk’s chest under his V neck, washing him out and casting shadows here they didn’t belong. The smell of exhaust off the street was noxious, but loitering on the sidealk was beter that loitering in a hotel lobby. Couldn’t get thrown out that way. Only yelled at to move. They were completly and utterly stuck. In his hand, Dave held five one hundred dollar bills, left over from junking their one and only car.
“Look,” Dave started.
“Don’t ‘Look’ me. Don’t even start. If we just. Get a hotel room, cheep, with a phone. Maybe we can call Jake and Jade?”
“You really wanna call Jake and Jade? You really wanna beg money off our friends? Where would we even go after that?” Dave posed. Dirk didn’t have an answer for him. Just set his mouth in a hard, angry line.
“Let’s just go look. You’re good at numbers,” Dave tried to sweet talk. “I bet you could catch on to one of those games so fast you could double our money.”
“Okay, say we win money,” Dirk sighed, raising his hand to pinch the bridge of his nose. “What then? We still have nowhere to go. Five hundred or five thousand we’re still stuck in the middle of a desert getting burnt by sunlight and neon.”
“Five thousand would buy a car,” Dave replied.
“A shitty car,” Dirk scoffed. “I don’t trust this city. With our luck we’d get another one that breaks down and then we’d be back with five hundred dollars in scrap and we might still be in the desert.”
“So then we have nothig to loose,” Dave pushed.
“No,” Dirk stood firm.
“I’m hungry. I want a shower. I want a bed that is a bed and not a car seat.”
“And you’ll get all that once we get off the fucking strip and in to a ninety-nine dollar deal.” Dirk was starting to get angry. This was irrisponsible and Dave knew that. They couldn’t fuck with this money.
“Ten bucks. Give me ten bucks and if I loose it I’ll be done. Thats my share of dinner money. I’ll give the rest of it to you so I can’t spend any more,” Dave countered. He’d reached the bargaining stage.
“Alright. Whatever. Fine,” Dirk relented. “Whatever the fuck I need to do to get you to move on, I’ll do it.”
Dave could see the reflection of the Cesar’s Palace sign in his brother’s shades. They’d walked right past it, following the busy flow of people on the side walk, dodging a drunk couple. This trip had been conceived in a similar way. Dave sort of didn’t want to think about it.
He didn’t want to think about it, but he couldn’t help but let the memory steal away his attention. This whole thing had started back in Texas, where they meet each other on a college campus. They were twins, technically fraternal but they were so alike it was scary. They’d gone to the local bar one night after a year of rooming together where the news just happened to be on.
There was a man by the name of David Strider on television, apparently a hot shot director of some sort, giving a press conference in Los Angeles. He was looking for his three younger brothers he hadn’t seen in 20 years. Dave and Dirk exchanged glances.
They had both been adopted as babies, and never knew their real parents. Dirk had maintained his birth name of Strider, however. It couldn’t be a coincidence, could it? The next morning they were piled in Dave’s car headed to California.
They’d taken a bad, bad detour right after Flagstaff and ended up in Nevada with a rapidly overheating engine.
“Earth to Dave Lalonde, can you hear me?”
“Yeah, sorry, I was thinking,” Dave muttered. “This place has more distractions than an all genders topless bar, I mean-“
“No. No innuendoes,” Dirk cut him off. “I’m not in the mood.”
“Sorry,” Dave replied. “My bad. Which casino do you think is best?”
“I think no casino is best,” Dirk scoffed. “But I guess the closest one. Which I guess would be the one were standing in front of?”
Dave turned, lights behind him still flashing, cars still rushing by, and lead the way.
Cesar’s palace was immaculate. Dave hadn’t imagined something like the small show casino’s Texas boasted, but he still wasn’t expecting the shear size of the place. The walkway to the building was wider than Dave’s whole home driveway, and entering the building was a shock to the system.
What looked like marble floors led to carpeting. Roman pillars dotted the entryway, and dodging them and people was a chore. The gambling floor was huge, and it laid out as far as the low lighting would allow the brothers to see.
The Blackjack tables laid out in sort of a circle, packed tight with a dealer standing at each half round table. On the far wall there were some assorted slots, with more machines that branched out. The roulette wheels were broadcast on digital screens above the spinning wheel.
The noise above all was deafening. People yelling, laughing, carrying suitcases and shuffling by with drinks. The ‘bing, bing, bing’ melody of the slots machines made it near impossible for Dave to hear himself think. He felt out of place in his scuffed converse. Dirk adjusted his backpack strap, his eyes directed down. Dave knew that look.
“Why don’t you get us a room?” Dave suggested. If Dirk could hide, he’d feel better.
“Not leaving you,” he disagreed.
“Okay.”
0 notes
ariellblogus · 5 years
Text
TL;DR: Read logs, delete useless shit, maintain the DB clear.
* Warning: An extended learn! *
Oh properly, I feel like a n00b while typing this but that’s how things roll. I’m not positive if I’ve any regular readers left, as to have regular readers one must be a daily writer, which I am clearly not. (Yes, I wish to change.)
Still, when you go back and stalk this blog, you’ll notice that submit frequency for 2018 has been abysmal at it’s greatest. But yes, there’s a cause an fascinating story behind the same. A narrative which might train you a thing or two about hosting WordPress by yourself internet hosting. It has definitely taught me a lot.
So, it began back in January once I began noticing poor loading performance of the location. Being a self-shared hosted occasion, I chalked it up to poor bandwidth or dangerous optimisation by Staff GoDaddy (not a lot constructive about them). Soon I started getting 503 error randomly on the home page, so it was time to research stuff…
Preliminary findings
I logged into GoDaddy account and went into my hosting status page. Immediately I used to be greeted with an orange banner(hyperlink right here) stating I’m reaching the resource limit and I have to improve my internet hosting plan soon to maintain up the graceful operations. I scoffed mildly to their advertising techniques and opened the boot to look underneath the hood.
I opened the CPanel and took a look over on the system panel on the left. To my amazement, virtually all of the parameters have been either terminal pink or warning orange. I appeared up the labels to know the which means of these indicators.
Pink is often my favorite color
Nicely, clearly, I used to be a bit stunned as I have an expertise of operating WordPress since 2006-ish and I have had run pretty complexly themed blogs on my potato local pc (2006 PC, yeah!) utilizing XAMMP on Home windows.
In case you are a backend guy and skim this line above now (in 2018), you will in all probability cringe more durable than you do on Nicki Minaz songs. Every little thing about that line is WRONG (2006, PC, XAMMP).
Anyway, I had a fond memory of WordPress stack being tremendous environment friendly and respectable at dealing with a mere 100+ blog posts with ~15 plugins. Especially once I was not even posting posts commonly and visitors was on a decline.
Something was improper right here.
I referred to as up GoDaddy tech gross sales help and patiently explained my drawback to him only to get his sales pitch – “Sar, I can see the upgrade banner in your account, so can you. Please give cash, we offer you moar resourcez. Oaky?“. Hmm, in all probability not that brash however you get the gist. I (mildly irritated) requested him to escalate my name to his supervisor or someone from *real* tech help.
Properly, they kinda did. A woman (I am NOT a sexist) picked up the decision and I swear to the odin that she was not capable of perceive something about wp-config and the 503 error and requested me if I have cleared my browser cache. I politely requested her to switch the decision to her supervisor.
This time a moderately mature sounding guy picked up the decision and ask my drawback. People, I used to be already 3 ranges deep and 20 minutes on the call. I still defined to him my drawback. He opened his admin console, obtained to my box and disabled all plugins (essential) and my custom theme.
The location seemed to breathe for some time and we have been capable of access the same. He informed me plainly that this can be a basic case of resource overutilization and I have to upgrade my hosting from the essential starter plan to at the least their Delux combo something plan. I made the rookie’s mistake of asking the fee for the same as he immediately stated he will simply transfer my name to his gross sales representative. *facepalm* I held up the connection earlier than they might plug me one other degree deep.
I deep down knew that I want to research this myself earlier than throwing moolah on the desk.
Lazy boi excuses; Half – I
This was February 2018. I stored my weekend free and planned to drill down into my GoDaddy shared internet hosting server to seek out the resource drawback. I used to be positive about some bug leaking memory or some infinite loop sucking out my CPU burst cycles. I deliberate to duplicate the setup on AWS t2.micro free occasion and made an account on the same. It does require a credit card on the file before letting to fireside up ec2 situations. My AMEX CC had some drawback because it debits the verification money however nonetheless stated pending for 48 hours. Truthful enough, I assumed I’ll begin in 2 days…
But all of a sudden (a software program engineer approach of shedding joyful tears!), I acquired a huge venture to work on from scratch at my last job @ Shuttl. (Yeah, I have switched career, yet once more). The venture identify rhymed with XMS. I was pretty excited to build a Python Django venture from scratch along with my 2 gifted senior teammates. I used to be completely satisfied that I will get to study a ton and can deploy an entire challenge reside AND……both of my 2 gifted senior teammates left earlier than even the completion of the primary milestone of the undertaking. Yep, just left. And I used to be struck with lots of legacy code to work on, with a little or no concept concerning the framework. I had a great experience with Flask framework but Django had some things carried out in another way.
I slogged at work and the great half was that I was capable of understand most of the code and received fairly good at Django,  carried out a ton of APIs and built a primary dashboard UI.  Anyway, that sucked subsequent 2 months of my life and I utterly forgot about this blog, the 503 challenge and meanwhile it stored getting worse as it began opening sometimes and stored throwing 503 errors for probably the most part.
Lazy boi excuses; Part – II
Nah, let’s transfer forward. I’ve shared too much personal stuff anyway. 😛
Let’s start recent? Scrap all shit.
It was around Might 2018  and I obtained some interns and a junior to assist me with new tasks that our product group was pumping out PRDs out at a tremendous price. I used to be working continuous on similar however still a window of private time opened up. Meanwhile, we migrated our code repositories to Github from Gitlab and I obtained to know concerning the idea of gh-pages.
Github pages – A neat nifty venture by Github which allows you to host stuff from your repo as easy websites or blogs. Free of charge!
This appeared like a candy chime to my ears as I used to be drained of the non-existent help from GoDaddy and their incompetent tech staff (free-tier a minimum of). I began formulating a plan to nuke bitsnapper altogether and start from scratch and make a easy Martin Fowler-esque blog.
Clear, simple and nerdy.
So, I created a simple website blog on jatinkrmalik.github.io and even posted some posts (perhaps 1). However because of lack of a lot formatting options and skill to customize stuff, was a bummer.
I lost curiosity in Github pages quicker than America did in Trump.
AND soon I resigned from Shuttl and left in July as a result of [redacted] causes.
A new beginning, AWS method?!
In late July, I joined a really early stage startup referred to as Synaptic.io after what felt like a swyamwar of supply letters. (okay, no bragging). I used to be impressed by the product and measurement of the staff which you possibly can rely on one hand. It felt profitable to get into core group, build one thing great and have an opportunity to witness progress from the within.
Anyway, Synaptic being a data-heavy company, we use lots of third social gathering providers and instruments for automated deployment to staging, prod and so on. Naturally, AWS is the spine of our deployment infra. I acquired a brand new AWS account each for staging and prod, so I started reading about the identical and obtained to find out about Bitnami WordPress AMI which comes preloaded with the WordPress stack goodies and one can deploy with a click on. It was time to reactivate my AWS account and hearth this up.
A couple of weeks in the past.
Initially of August 2018, I was lastly capable of authenticate my AWS account by punching a new credit card. I fired up a bitnami WordPress occasion and did a setup for the standard WordPress installation. Now all I had to do was simply again up stuff from GoDaddy servers and restore right here.
Sounds straightforward proper?
EXCEPT.
IT.
WAS.
NOT.
I logged into my good previous CPanel, received the FTP creds, loaded FileZilla and began the switch. The ETA was in the north of double-digit hours as the website’s public_html folder was somewhere round 1.5 GB which is comprehensible as I’ve lots of media information and videos. Truthful enough. However this once more was going to take rather a lot of time as the problem with transferring a folder is that every micro-size file (<100 kb) takes mere milliseconds to obtain however takes it’s personal sweet time to write down on the local disk when downloading from the web. The apparent means was to pack the public_html folder into a zip file and then switch.
I did an SSH into the box and ran the command zip -rv public_html.zip public_html/ to zip the listing, but one factor which I forgot was that even whereas zipping a listing, I’ll hit the identical drawback of the zip program manually iterating over all of the information (together with microsized one) and can take quite a bit of time to attempt to compress every one. I left it for 20 minutes only to seek out it solely 10% via my all information. Enchancment? Positive but I am not a very patient man.
Why is that this so slow? Oh, wait.
I appeared into the log (because of -v…verbose), and came upon that I had quite a bit of information in my public_html folder in my xcloner plugin directory resulting from some failed attempts to take website backup from a plugin. I found more such folders of some plugins which haven’t any lively position in powering up this blog.
Checking the dimensions of information within the plugins directory.
So, I deleted these folders in public_html/wp-content/plugins and tried operating the zip command once more. It was still slow and I gave up in a couple of minutes.
Clear up.Zip them em!
I google about wrapping information in a zipper with out compressing a lot and obtained to study ranges of compression in zip utility which fits from 1-9 with 1 being least compression and 9 being the very best degree of compression whereas it defaults to 6. So, I attempted again this time with butzip -1rv public_html.zip public_html/ quickly realized the iteration over gazzilion information take extra time than compression logic for the CPU.
Simply wrapping.
I learn more and came upon that making a tarball w/o compression is quicker than zip utility, so it was time to attempt that and perhaps let it complete in its own sweet time. So, I fired up the command: tar -caf public.tar public_html and left it operating.
Unsure if it ever completed…
Then I logged into phpMyAdmin (an internet app to handle MySQL occasion) to take a backup of my bitsnapper WordPress DB. I simply clicked on export and the downloaded file was of measurement 48 MBs which was odd as in UI it was displaying a DB measurement of 1.2 GB. I knew SQL backup can compress some knowledge but of this magnitude? WTF. I opened the SQL file in VS code and clearly, the file was incomplete and had some HTML gibberish at the end which on inspection was the HTML for phpMyAdmin. Bizarre?
I attempted exporting the DB as soon as again from the UI and this time the dimensions of the backup.sql file was 256 MBs. I felt this was applicable but my instinct did a proper click on and opened in my editor as soon as again. Certainly enough the file was nonetheless incomplete with that gibberish. Truthful to say, the backup from phpMyAdmin was corrupted.
prime
I did an ssh into my internet hosting box using the creds in my GoDaddy account and tried every little thing from checking the output of system instructions like:prime, ps -ef, free but the box is properly sandboxed by GoDaddy to avoid any unauthorised access. I even tried to do a privilege escalation with intention of gaining extra management over my hosting account and perhaps restart mysqld however all in useless.
pssudo?
I knew about taking direct DB backups from the shell utilizing mysqldump -h -u -p > db_backup.sql so it was time to attempt that. I ran the command and tailed the backup SQL file with tail -f db_backup.sql to look into its content material because it populated. It began exporting DB nicely and as I started feeling badass and went to seize a cup of espresso, the terminal introduced me with the error message:
man mysqldumpFirst try.
I googled about the problem and it had something to do with the max_alllowed_packet variable of MySQL. The one two methods to vary that was either my modifying /and so forth/my.cnf file (which I used to be positive I didn’t have sudo entry to) or run SET GLOBAL max_allowed_packet=1073741824; query within the MySQL console.
Admin? No? Sorry.
Yeah, both of them didn’t work. Obviously. You want respective system admin consumer access for both.
The roadblock was getting stupidly irritating, and I had to get the backup.  I googled more and somebody prompt to cross the max_allowed_packet variable with the mysqldump command as.–max-allowed-packet=1073741824 Tried that too, didn’t work.
With –max_allowed_packet
I was tired and needed to sleep, so I terminated my ec2 occasion and slept.
TODAY.
At present I used to be feeling motivated and deliberate to look into the problem from another angle.
As an alternative of utilizing the WordPress AMI, I made a decision to create the whole setup from scratch. I launched an occasion of ec2 with Amazon Linux AMI. The goal was to know if that is actually GoDaddy messing with me or is it some fault in my database which is leading to the entire shebang.
I used this submit as steerage to arrange every little thing from grounds up.
I logged in once more to my GoDaddy account to be greeted by the orange banner urging me to upgrade. I felt weak and was nearly to click improve and throw some dough to get the straightforward means out. But no, that’s towards the hacker mentality I work with.
So, I opened the CPanel, phpMyAdmin and tried taking a backup again. It again downloaded a 250-something MB file with gibberish at the end. I manually eliminated the last half of the file and uploaded it to my ec2 instance by way of scp and imported it into my distant MySQL occasion.
After importing the public_html information, importing SQL backup and configuring wp-config.php file with DB host and creds, I restarted each httpd (Apache server) and MySQL (DB server) and opened http://ec2-instance-url:80 and to my partial euphoria, it did load up my header and footer for bitsnapper however no posts have been seen.
Hmm… something was missing.
I seemed into the tables on phpMyAdmin and my MySQL server on the ec2 occasion and duh, my wp_xxx_posts table and wp_xxx_postsmeta was lacking. Yeah! So, the problem was that my DB measurement has such giant that Godaddy shared hosting limited bandwidth was not allowing me to take a backup of the whole DB. Clearly, I had to repair this.
I wrote a custom python script to take a backup of the bitsnapper DB table-by-table to avoid hitting the max_allowed_packet limit as observed last week however the identical error mysqldump: Error 2013: Misplaced connection to MySQL server throughout question when dumping table wp_xxx_postmeta  stored popping up.
I started my intense googling session as soon as again and queried alongside the line of  ‘how you can backup DB from GoDaddy shared internet hosting‘ and ‘GoDaddy + shared hosting + mysqldump + error 2013‘ and by some means by a fluke, I landed on the Backup part of my ….drumroll?….. CPanel! *facepalm*
Facepalm second!
It had every thing I was making an attempt to do above with a flick of a click. I ended all my previous efforts and download the complete web site backup which had each public_html folder and DB backup SQL. The whole archive was nonetheless 2.5 GB which was big for a small blog like this.
Anyway, I did a scp to my ec2 instance and tried to exchange the information in /var/www/html with public_html/ and restored mysql backup by way of mysql -u -p < db_backup.sql and this time it labored with out an error. I restarted my mysql and apache http server by service mysql restart; serivce httpd restart; and tried to load http://:80 and presto! the entire website loads up.
The euphoria this time also lasted for a brief burst as within 2-3 reloads the replicated website again began throwing up the same 503 error and my shell session chocked up.
503! Not again.
I fired up a brand new terminal and tried SSHing into the box however the box just turned unresponsive. I went to the AWS admin console to examine my ec2 instance monitoring for the machine parameters and observed an identical sample as with the CPanel (left panel) parameter console.  It was all purple and orange as soon as again.
Clearly, GoDaddy’s internet hosting wasn’t the only wrongdoer.
Real IT help == Self-troubleshooting!
It was then once I decided to shed my worry of peeping into the DB tables because it was a gone trigger anyway and I nonetheless had a partial backup from last yr once I migrated the blog from WordPress managed internet hosting to standard shared internet hosting box.
Boys, it was time to run some queries. The first thing I did was to login to the phpMyAdmin and lookup the tables, schema and properties. I used to be assured that the issue is with the DB measurement and that’s the rationale for slow queries which is chocking up the CPU burst time.
I seemed into tables and located table wp_xxx_postmeta to be around 950 MB in measurement with simply 11000 data. This immediately fired up alarms in my head as I have labored with multi-million row DBs during my stint in Adobe & Shuttl and the table measurement was principally in the vary of few MBs solely. A tough again of the notice calculation said a median measurement of 100 kb per report on this table which was weird because once I seemed up the schema for a similar, it simply was storing 4 data i.e. meta_id, post_id, meta_key, meta_value.
Hey DB, you cray?
It was time to prod this table and understand the info inside it. I fired up a simple query:
SELECT meta_key, rely”text” FROM ‘wp_s4w671g0kp_postmeta’ GROUP by meta_key order by rely”text” desc;
Lo behold, the end result was a bit shocking as till now I used to be considering that this desk may include submit revisions or metadata solely but the query outcome was something like this:
meta_key rely”text” _total_views
1895
_view_ip_list
1892
_jetpack_related_posts_cache
1206
_wp_attached_file
1144
_wp_attachment_metadata
1101
wp-smpro-smush-data
1069
_wp_attachment_image_alt
903
_edit_lock
155
_edit_last
140
_yoast_wpseo_focuskw
118
_yoast_wpseo_linkdex
118
_thumbnail_id
116
_yoast_wpseo_metadesc
114
_publicize_twitter_user
107
_wpas_done_all
103
_total_likes
77
_like_ip_list
77
_wpas_skip_3914702
75
_wpas_skip_11104850
72
_yoast_wpseo_title
56
_wp_attachment_backup_sizes
40
_yoast_wpseo_focuskw_text_input
38
_wp_old_slug
35
essb_hideplusone
29
essb_hidevk
29
Do you see it? There are some 1800+ data for _view_ip_list, _total_views,  _jetpack_related_posts_cache which is principally nothing however data originated from WordPress personal homegrown fashionable plugin – Jetpack. I googled a bit about security delete for these data, didn’t find anything,  took a leap of religion and executed:
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_view_ip_list’;
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_total_views’;
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_jetpack_related_posts_cache’;
It deleted some 4,000 data out of 11,000 data it had and look what happened once I refreshed phpMyAdmin?
All cleaned up!
Yus! My wp_xxx_postmeta table measurement dropped from 900-something MBs to 6.Three MBs by just deleting ~4,000 data. What sick joke is that? My complete DB measurement dropped to 25 MBs from ~1.2 GBs, in all probability because of the cascade effect of overseas key constraints of the data I deleted.
Outcome?
My web site was a breeze once once more. The load time went down considerably, in all probability as a result of of quicker DB queries and even the system monitoring parameters on the CPanel went down from Purple/Orange to Inexperienced. I did some load testing by executing a number of curl requests to my house page by way of terminal, and the server was not breaking any sweat.
Take a look at that RAM usage!  WHAT? Keep in mind once I talked about operating WordPress stack on my 2006 PC with some 128 MB of memory? Yeah!
So fast much wow!
Classes?
Troubleshooting Godaddy is a long-term thing. You’ll be able to either get into the shit and fix it yourself or you can begin throwing money on the display until you escalate to their core tech workforce which I assume might be by no means for shared internet hosting plans. They could have a terrific help for devoted servers though.
AWS is a f##king superb piece of tech. If you understand how to harden servers, by all means, simply drop these legacy internet hosting providers and go on your personal setup. It’s in all probability cheaper, quicker and extra VFM. A easy t2.micro instance will value < ₹700/month. (Perhaps extra, sigh world financial system!).
Typically, being a smartass isn’t good. Most of the occasions, nevertheless, it retains you protected.
All the time examine logs. -_-
The post Back from Dead
0 notes
Text
TL;DR: Read logs, delete useless shit, maintain the DB clear.
* Warning: An extended learn! *
Oh properly, I feel like a n00b while typing this but that’s how things roll. I’m not positive if I’ve any regular readers left, as to have regular readers one must be a daily writer, which I am clearly not. (Yes, I wish to change.)
Still, when you go back and stalk this blog, you’ll notice that submit frequency for 2018 has been abysmal at it’s greatest. But yes, there’s a cause an fascinating story behind the same. A narrative which might train you a thing or two about hosting WordPress by yourself internet hosting. It has definitely taught me a lot.
So, it began back in January once I began noticing poor loading performance of the location. Being a self-shared hosted occasion, I chalked it up to poor bandwidth or dangerous optimisation by Staff GoDaddy (not a lot constructive about them). Soon I started getting 503 error randomly on the home page, so it was time to research stuff…
Preliminary findings
I logged into GoDaddy account and went into my hosting status page. Immediately I used to be greeted with an orange banner(hyperlink right here) stating I’m reaching the resource limit and I have to improve my internet hosting plan soon to maintain up the graceful operations. I scoffed mildly to their advertising techniques and opened the boot to look underneath the hood.
I opened the CPanel and took a look over on the system panel on the left. To my amazement, virtually all of the parameters have been either terminal pink or warning orange. I appeared up the labels to know the which means of these indicators.
Pink is often my favorite color
Nicely, clearly, I used to be a bit stunned as I have an expertise of operating WordPress since 2006-ish and I have had run pretty complexly themed blogs on my potato local pc (2006 PC, yeah!) utilizing XAMMP on Home windows.
In case you are a backend guy and skim this line above now (in 2018), you will in all probability cringe more durable than you do on Nicki Minaz songs. Every little thing about that line is WRONG (2006, PC, XAMMP).
Anyway, I had a fond memory of WordPress stack being tremendous environment friendly and respectable at dealing with a mere 100+ blog posts with ~15 plugins. Especially once I was not even posting posts commonly and visitors was on a decline.
Something was improper right here.
I referred to as up GoDaddy tech gross sales help and patiently explained my drawback to him only to get his sales pitch – “Sar, I can see the upgrade banner in your account, so can you. Please give cash, we offer you moar resourcez. Oaky?“. Hmm, in all probability not that brash however you get the gist. I (mildly irritated) requested him to escalate my name to his supervisor or someone from *real* tech help.
Properly, they kinda did. A woman (I am NOT a sexist) picked up the decision and I swear to the odin that she was not capable of perceive something about wp-config and the 503 error and requested me if I have cleared my browser cache. I politely requested her to switch the decision to her supervisor.
This time a moderately mature sounding guy picked up the decision and ask my drawback. People, I used to be already 3 ranges deep and 20 minutes on the call. I still defined to him my drawback. He opened his admin console, obtained to my box and disabled all plugins (essential) and my custom theme.
The location seemed to breathe for some time and we have been capable of access the same. He informed me plainly that this can be a basic case of resource overutilization and I have to upgrade my hosting from the essential starter plan to at the least their Delux combo something plan. I made the rookie’s mistake of asking the fee for the same as he immediately stated he will simply transfer my name to his gross sales representative. *facepalm* I held up the connection earlier than they might plug me one other degree deep.
I deep down knew that I want to research this myself earlier than throwing moolah on the desk.
Lazy boi excuses; Half – I
This was February 2018. I stored my weekend free and planned to drill down into my GoDaddy shared internet hosting server to seek out the resource drawback. I used to be positive about some bug leaking memory or some infinite loop sucking out my CPU burst cycles. I deliberate to duplicate the setup on AWS t2.micro free occasion and made an account on the same. It does require a credit card on the file before letting to fireside up ec2 situations. My AMEX CC had some drawback because it debits the verification money however nonetheless stated pending for 48 hours. Truthful enough, I assumed I’ll begin in 2 days…
But all of a sudden (a software program engineer approach of shedding joyful tears!), I acquired a huge venture to work on from scratch at my last job @ Shuttl. (Yeah, I have switched career, yet once more). The venture identify rhymed with XMS. I was pretty excited to build a Python Django venture from scratch along with my 2 gifted senior teammates. I used to be completely satisfied that I will get to study a ton and can deploy an entire challenge reside AND……both of my 2 gifted senior teammates left earlier than even the completion of the primary milestone of the undertaking. Yep, just left. And I used to be struck with lots of legacy code to work on, with a little or no concept concerning the framework. I had a great experience with Flask framework but Django had some things carried out in another way.
I slogged at work and the great half was that I was capable of understand most of the code and received fairly good at Django,  carried out a ton of APIs and built a primary dashboard UI.  Anyway, that sucked subsequent 2 months of my life and I utterly forgot about this blog, the 503 challenge and meanwhile it stored getting worse as it began opening sometimes and stored throwing 503 errors for probably the most part.
Lazy boi excuses; Part – II
Nah, let’s transfer forward. I’ve shared too much personal stuff anyway. 😛
Let’s start recent? Scrap all shit.
It was around Might 2018  and I obtained some interns and a junior to assist me with new tasks that our product group was pumping out PRDs out at a tremendous price. I used to be working continuous on similar however still a window of private time opened up. Meanwhile, we migrated our code repositories to Github from Gitlab and I obtained to know concerning the idea of gh-pages.
Github pages – A neat nifty venture by Github which allows you to host stuff from your repo as easy websites or blogs. Free of charge!
This appeared like a candy chime to my ears as I used to be drained of the non-existent help from GoDaddy and their incompetent tech staff (free-tier a minimum of). I began formulating a plan to nuke bitsnapper altogether and start from scratch and make a easy Martin Fowler-esque blog.
Clear, simple and nerdy.
So, I created a simple website blog on jatinkrmalik.github.io and even posted some posts (perhaps 1). However because of lack of a lot formatting options and skill to customize stuff, was a bummer.
I lost curiosity in Github pages quicker than America did in Trump.
AND soon I resigned from Shuttl and left in July as a result of [redacted] causes.
A new beginning, AWS method?!
In late July, I joined a really early stage startup referred to as Synaptic.io after what felt like a swyamwar of supply letters. (okay, no bragging). I used to be impressed by the product and measurement of the staff which you possibly can rely on one hand. It felt profitable to get into core group, build one thing great and have an opportunity to witness progress from the within.
Anyway, Synaptic being a data-heavy company, we use lots of third social gathering providers and instruments for automated deployment to staging, prod and so on. Naturally, AWS is the spine of our deployment infra. I acquired a brand new AWS account each for staging and prod, so I started reading about the identical and obtained to find out about Bitnami WordPress AMI which comes preloaded with the WordPress stack goodies and one can deploy with a click on. It was time to reactivate my AWS account and hearth this up.
A couple of weeks in the past.
Initially of August 2018, I was lastly capable of authenticate my AWS account by punching a new credit card. I fired up a bitnami WordPress occasion and did a setup for the standard WordPress installation. Now all I had to do was simply again up stuff from GoDaddy servers and restore right here.
Sounds straightforward proper?
EXCEPT.
IT.
WAS.
NOT.
I logged into my good previous CPanel, received the FTP creds, loaded FileZilla and began the switch. The ETA was in the north of double-digit hours as the website’s public_html folder was somewhere round 1.5 GB which is comprehensible as I’ve lots of media information and videos. Truthful enough. However this once more was going to take rather a lot of time as the problem with transferring a folder is that every micro-size file (<100 kb) takes mere milliseconds to obtain however takes it’s personal sweet time to write down on the local disk when downloading from the web. The apparent means was to pack the public_html folder into a zip file and then switch.
I did an SSH into the box and ran the command zip -rv public_html.zip public_html/ to zip the listing, but one factor which I forgot was that even whereas zipping a listing, I’ll hit the identical drawback of the zip program manually iterating over all of the information (together with microsized one) and can take quite a bit of time to attempt to compress every one. I left it for 20 minutes only to seek out it solely 10% via my all information. Enchancment? Positive but I am not a very patient man.
Why is that this so slow? Oh, wait.
I appeared into the log (because of -v…verbose), and came upon that I had quite a bit of information in my public_html folder in my xcloner plugin directory resulting from some failed attempts to take website backup from a plugin. I found more such folders of some plugins which haven’t any lively position in powering up this blog.
Checking the dimensions of information within the plugins directory.
So, I deleted these folders in public_html/wp-content/plugins and tried operating the zip command once more. It was still slow and I gave up in a couple of minutes.
Clear up.Zip them em!
I google about wrapping information in a zipper with out compressing a lot and obtained to study ranges of compression in zip utility which fits from 1-9 with 1 being least compression and 9 being the very best degree of compression whereas it defaults to 6. So, I attempted again this time with butzip -1rv public_html.zip public_html/ quickly realized the iteration over gazzilion information take extra time than compression logic for the CPU.
Simply wrapping.
I learn more and came upon that making a tarball w/o compression is quicker than zip utility, so it was time to attempt that and perhaps let it complete in its own sweet time. So, I fired up the command: tar -caf public.tar public_html and left it operating.
Unsure if it ever completed…
Then I logged into phpMyAdmin (an internet app to handle MySQL occasion) to take a backup of my bitsnapper WordPress DB. I simply clicked on export and the downloaded file was of measurement 48 MBs which was odd as in UI it was displaying a DB measurement of 1.2 GB. I knew SQL backup can compress some knowledge but of this magnitude? WTF. I opened the SQL file in VS code and clearly, the file was incomplete and had some HTML gibberish at the end which on inspection was the HTML for phpMyAdmin. Bizarre?
I attempted exporting the DB as soon as again from the UI and this time the dimensions of the backup.sql file was 256 MBs. I felt this was applicable but my instinct did a proper click on and opened in my editor as soon as again. Certainly enough the file was nonetheless incomplete with that gibberish. Truthful to say, the backup from phpMyAdmin was corrupted.
prime
I did an ssh into my internet hosting box using the creds in my GoDaddy account and tried every little thing from checking the output of system instructions like:prime, ps -ef, free but the box is properly sandboxed by GoDaddy to avoid any unauthorised access. I even tried to do a privilege escalation with intention of gaining extra management over my hosting account and perhaps restart mysqld however all in useless.
pssudo?
I knew about taking direct DB backups from the shell utilizing mysqldump -h -u -p > db_backup.sql so it was time to attempt that. I ran the command and tailed the backup SQL file with tail -f db_backup.sql to look into its content material because it populated. It began exporting DB nicely and as I started feeling badass and went to seize a cup of espresso, the terminal introduced me with the error message:
man mysqldumpFirst try.
I googled about the problem and it had something to do with the max_alllowed_packet variable of MySQL. The one two methods to vary that was either my modifying /and so forth/my.cnf file (which I used to be positive I didn’t have sudo entry to) or run SET GLOBAL max_allowed_packet=1073741824; query within the MySQL console.
Admin? No? Sorry.
Yeah, both of them didn’t work. Obviously. You want respective system admin consumer access for both.
The roadblock was getting stupidly irritating, and I had to get the backup.  I googled more and somebody prompt to cross the max_allowed_packet variable with the mysqldump command as.–max-allowed-packet=1073741824 Tried that too, didn’t work.
With –max_allowed_packet
I was tired and needed to sleep, so I terminated my ec2 occasion and slept.
TODAY.
At present I used to be feeling motivated and deliberate to look into the problem from another angle.
As an alternative of utilizing the WordPress AMI, I made a decision to create the whole setup from scratch. I launched an occasion of ec2 with Amazon Linux AMI. The goal was to know if that is actually GoDaddy messing with me or is it some fault in my database which is leading to the entire shebang.
I used this submit as steerage to arrange every little thing from grounds up.
I logged in once more to my GoDaddy account to be greeted by the orange banner urging me to upgrade. I felt weak and was nearly to click improve and throw some dough to get the straightforward means out. But no, that’s towards the hacker mentality I work with.
So, I opened the CPanel, phpMyAdmin and tried taking a backup again. It again downloaded a 250-something MB file with gibberish at the end. I manually eliminated the last half of the file and uploaded it to my ec2 instance by way of scp and imported it into my distant MySQL occasion.
After importing the public_html information, importing SQL backup and configuring wp-config.php file with DB host and creds, I restarted each httpd (Apache server) and MySQL (DB server) and opened http://ec2-instance-url:80 and to my partial euphoria, it did load up my header and footer for bitsnapper however no posts have been seen.
Hmm… something was missing.
I seemed into the tables on phpMyAdmin and my MySQL server on the ec2 occasion and duh, my wp_xxx_posts table and wp_xxx_postsmeta was lacking. Yeah! So, the problem was that my DB measurement has such giant that Godaddy shared hosting limited bandwidth was not allowing me to take a backup of the whole DB. Clearly, I had to repair this.
I wrote a custom python script to take a backup of the bitsnapper DB table-by-table to avoid hitting the max_allowed_packet limit as observed last week however the identical error mysqldump: Error 2013: Misplaced connection to MySQL server throughout question when dumping table wp_xxx_postmeta  stored popping up.
I started my intense googling session as soon as again and queried alongside the line of  ‘how you can backup DB from GoDaddy shared internet hosting‘ and ‘GoDaddy + shared hosting + mysqldump + error 2013‘ and by some means by a fluke, I landed on the Backup part of my ….drumroll?….. CPanel! *facepalm*
Facepalm second!
It had every thing I was making an attempt to do above with a flick of a click. I ended all my previous efforts and download the complete web site backup which had each public_html folder and DB backup SQL. The whole archive was nonetheless 2.5 GB which was big for a small blog like this.
Anyway, I did a scp to my ec2 instance and tried to exchange the information in /var/www/html with public_html/ and restored mysql backup by way of mysql -u -p < db_backup.sql and this time it labored with out an error. I restarted my mysql and apache http server by service mysql restart; serivce httpd restart; and tried to load http://:80 and presto! the entire website loads up.
The euphoria this time also lasted for a brief burst as within 2-3 reloads the replicated website again began throwing up the same 503 error and my shell session chocked up.
503! Not again.
I fired up a brand new terminal and tried SSHing into the box however the box just turned unresponsive. I went to the AWS admin console to examine my ec2 instance monitoring for the machine parameters and observed an identical sample as with the CPanel (left panel) parameter console.  It was all purple and orange as soon as again.
Clearly, GoDaddy’s internet hosting wasn’t the only wrongdoer.
Real IT help == Self-troubleshooting!
It was then once I decided to shed my worry of peeping into the DB tables because it was a gone trigger anyway and I nonetheless had a partial backup from last yr once I migrated the blog from WordPress managed internet hosting to standard shared internet hosting box.
Boys, it was time to run some queries. The first thing I did was to login to the phpMyAdmin and lookup the tables, schema and properties. I used to be assured that the issue is with the DB measurement and that’s the rationale for slow queries which is chocking up the CPU burst time.
I seemed into tables and located table wp_xxx_postmeta to be around 950 MB in measurement with simply 11000 data. This immediately fired up alarms in my head as I have labored with multi-million row DBs during my stint in Adobe & Shuttl and the table measurement was principally in the vary of few MBs solely. A tough again of the notice calculation said a median measurement of 100 kb per report on this table which was weird because once I seemed up the schema for a similar, it simply was storing 4 data i.e. meta_id, post_id, meta_key, meta_value.
Hey DB, you cray?
It was time to prod this table and understand the info inside it. I fired up a simple query:
SELECT meta_key, rely”text” FROM ‘wp_s4w671g0kp_postmeta’ GROUP by meta_key order by rely”text” desc;
Lo behold, the end result was a bit shocking as till now I used to be considering that this desk may include submit revisions or metadata solely but the query outcome was something like this:
meta_key rely”text” _total_views
1895
_view_ip_list
1892
_jetpack_related_posts_cache
1206
_wp_attached_file
1144
_wp_attachment_metadata
1101
wp-smpro-smush-data
1069
_wp_attachment_image_alt
903
_edit_lock
155
_edit_last
140
_yoast_wpseo_focuskw
118
_yoast_wpseo_linkdex
118
_thumbnail_id
116
_yoast_wpseo_metadesc
114
_publicize_twitter_user
107
_wpas_done_all
103
_total_likes
77
_like_ip_list
77
_wpas_skip_3914702
75
_wpas_skip_11104850
72
_yoast_wpseo_title
56
_wp_attachment_backup_sizes
40
_yoast_wpseo_focuskw_text_input
38
_wp_old_slug
35
essb_hideplusone
29
essb_hidevk
29
Do you see it? There are some 1800+ data for _view_ip_list, _total_views,  _jetpack_related_posts_cache which is principally nothing however data originated from WordPress personal homegrown fashionable plugin – Jetpack. I googled a bit about security delete for these data, didn’t find anything,  took a leap of religion and executed:
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_view_ip_list’;
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_total_views’;
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_jetpack_related_posts_cache’;
It deleted some 4,000 data out of 11,000 data it had and look what happened once I refreshed phpMyAdmin?
All cleaned up!
Yus! My wp_xxx_postmeta table measurement dropped from 900-something MBs to 6.Three MBs by just deleting ~4,000 data. What sick joke is that? My complete DB measurement dropped to 25 MBs from ~1.2 GBs, in all probability because of the cascade effect of overseas key constraints of the data I deleted.
Outcome?
My web site was a breeze once once more. The load time went down considerably, in all probability as a result of of quicker DB queries and even the system monitoring parameters on the CPanel went down from Purple/Orange to Inexperienced. I did some load testing by executing a number of curl requests to my house page by way of terminal, and the server was not breaking any sweat.
Take a look at that RAM usage!  WHAT? Keep in mind once I talked about operating WordPress stack on my 2006 PC with some 128 MB of memory? Yeah!
So fast much wow!
Classes?
Troubleshooting Godaddy is a long-term thing. You’ll be able to either get into the shit and fix it yourself or you can begin throwing money on the display until you escalate to their core tech workforce which I assume might be by no means for shared internet hosting plans. They could have a terrific help for devoted servers though.
AWS is a f##king superb piece of tech. If you understand how to harden servers, by all means, simply drop these legacy internet hosting providers and go on your personal setup. It’s in all probability cheaper, quicker and extra VFM. A easy t2.micro instance will value < ₹700/month. (Perhaps extra, sigh world financial system!).
Typically, being a smartass isn’t good. Most of the occasions, nevertheless, it retains you protected.
All the time examine logs. -_-
The post Back from Dead
0 notes
Text
TL;DR: Read logs, delete useless shit, maintain the DB clear.
* Warning: An extended learn! *
Oh properly, I feel like a n00b while typing this but that’s how things roll. I’m not positive if I’ve any regular readers left, as to have regular readers one must be a daily writer, which I am clearly not. (Yes, I wish to change.)
Still, when you go back and stalk this blog, you’ll notice that submit frequency for 2018 has been abysmal at it’s greatest. But yes, there’s a cause an fascinating story behind the same. A narrative which might train you a thing or two about hosting WordPress by yourself internet hosting. It has definitely taught me a lot.
So, it began back in January once I began noticing poor loading performance of the location. Being a self-shared hosted occasion, I chalked it up to poor bandwidth or dangerous optimisation by Staff GoDaddy (not a lot constructive about them). Soon I started getting 503 error randomly on the home page, so it was time to research stuff…
Preliminary findings
I logged into GoDaddy account and went into my hosting status page. Immediately I used to be greeted with an orange banner(hyperlink right here) stating I’m reaching the resource limit and I have to improve my internet hosting plan soon to maintain up the graceful operations. I scoffed mildly to their advertising techniques and opened the boot to look underneath the hood.
I opened the CPanel and took a look over on the system panel on the left. To my amazement, virtually all of the parameters have been either terminal pink or warning orange. I appeared up the labels to know the which means of these indicators.
Pink is often my favorite color
Nicely, clearly, I used to be a bit stunned as I have an expertise of operating WordPress since 2006-ish and I have had run pretty complexly themed blogs on my potato local pc (2006 PC, yeah!) utilizing XAMMP on Home windows.
In case you are a backend guy and skim this line above now (in 2018), you will in all probability cringe more durable than you do on Nicki Minaz songs. Every little thing about that line is WRONG (2006, PC, XAMMP).
Anyway, I had a fond memory of WordPress stack being tremendous environment friendly and respectable at dealing with a mere 100+ blog posts with ~15 plugins. Especially once I was not even posting posts commonly and visitors was on a decline.
Something was improper right here.
I referred to as up GoDaddy tech gross sales help and patiently explained my drawback to him only to get his sales pitch – “Sar, I can see the upgrade banner in your account, so can you. Please give cash, we offer you moar resourcez. Oaky?“. Hmm, in all probability not that brash however you get the gist. I (mildly irritated) requested him to escalate my name to his supervisor or someone from *real* tech help.
Properly, they kinda did. A woman (I am NOT a sexist) picked up the decision and I swear to the odin that she was not capable of perceive something about wp-config and the 503 error and requested me if I have cleared my browser cache. I politely requested her to switch the decision to her supervisor.
This time a moderately mature sounding guy picked up the decision and ask my drawback. People, I used to be already 3 ranges deep and 20 minutes on the call. I still defined to him my drawback. He opened his admin console, obtained to my box and disabled all plugins (essential) and my custom theme.
The location seemed to breathe for some time and we have been capable of access the same. He informed me plainly that this can be a basic case of resource overutilization and I have to upgrade my hosting from the essential starter plan to at the least their Delux combo something plan. I made the rookie’s mistake of asking the fee for the same as he immediately stated he will simply transfer my name to his gross sales representative. *facepalm* I held up the connection earlier than they might plug me one other degree deep.
I deep down knew that I want to research this myself earlier than throwing moolah on the desk.
Lazy boi excuses; Half – I
This was February 2018. I stored my weekend free and planned to drill down into my GoDaddy shared internet hosting server to seek out the resource drawback. I used to be positive about some bug leaking memory or some infinite loop sucking out my CPU burst cycles. I deliberate to duplicate the setup on AWS t2.micro free occasion and made an account on the same. It does require a credit card on the file before letting to fireside up ec2 situations. My AMEX CC had some drawback because it debits the verification money however nonetheless stated pending for 48 hours. Truthful enough, I assumed I’ll begin in 2 days…
But all of a sudden (a software program engineer approach of shedding joyful tears!), I acquired a huge venture to work on from scratch at my last job @ Shuttl. (Yeah, I have switched career, yet once more). The venture identify rhymed with XMS. I was pretty excited to build a Python Django venture from scratch along with my 2 gifted senior teammates. I used to be completely satisfied that I will get to study a ton and can deploy an entire challenge reside AND……both of my 2 gifted senior teammates left earlier than even the completion of the primary milestone of the undertaking. Yep, just left. And I used to be struck with lots of legacy code to work on, with a little or no concept concerning the framework. I had a great experience with Flask framework but Django had some things carried out in another way.
I slogged at work and the great half was that I was capable of understand most of the code and received fairly good at Django,  carried out a ton of APIs and built a primary dashboard UI.  Anyway, that sucked subsequent 2 months of my life and I utterly forgot about this blog, the 503 challenge and meanwhile it stored getting worse as it began opening sometimes and stored throwing 503 errors for probably the most part.
Lazy boi excuses; Part – II
Nah, let’s transfer forward. I’ve shared too much personal stuff anyway. 😛
Let’s start recent? Scrap all shit.
It was around Might 2018  and I obtained some interns and a junior to assist me with new tasks that our product group was pumping out PRDs out at a tremendous price. I used to be working continuous on similar however still a window of private time opened up. Meanwhile, we migrated our code repositories to Github from Gitlab and I obtained to know concerning the idea of gh-pages.
Github pages – A neat nifty venture by Github which allows you to host stuff from your repo as easy websites or blogs. Free of charge!
This appeared like a candy chime to my ears as I used to be drained of the non-existent help from GoDaddy and their incompetent tech staff (free-tier a minimum of). I began formulating a plan to nuke bitsnapper altogether and start from scratch and make a easy Martin Fowler-esque blog.
Clear, simple and nerdy.
So, I created a simple website blog on jatinkrmalik.github.io and even posted some posts (perhaps 1). However because of lack of a lot formatting options and skill to customize stuff, was a bummer.
I lost curiosity in Github pages quicker than America did in Trump.
AND soon I resigned from Shuttl and left in July as a result of [redacted] causes.
A new beginning, AWS method?!
In late July, I joined a really early stage startup referred to as Synaptic.io after what felt like a swyamwar of supply letters. (okay, no bragging). I used to be impressed by the product and measurement of the staff which you possibly can rely on one hand. It felt profitable to get into core group, build one thing great and have an opportunity to witness progress from the within.
Anyway, Synaptic being a data-heavy company, we use lots of third social gathering providers and instruments for automated deployment to staging, prod and so on. Naturally, AWS is the spine of our deployment infra. I acquired a brand new AWS account each for staging and prod, so I started reading about the identical and obtained to find out about Bitnami WordPress AMI which comes preloaded with the WordPress stack goodies and one can deploy with a click on. It was time to reactivate my AWS account and hearth this up.
A couple of weeks in the past.
Initially of August 2018, I was lastly capable of authenticate my AWS account by punching a new credit card. I fired up a bitnami WordPress occasion and did a setup for the standard WordPress installation. Now all I had to do was simply again up stuff from GoDaddy servers and restore right here.
Sounds straightforward proper?
EXCEPT.
IT.
WAS.
NOT.
I logged into my good previous CPanel, received the FTP creds, loaded FileZilla and began the switch. The ETA was in the north of double-digit hours as the website’s public_html folder was somewhere round 1.5 GB which is comprehensible as I’ve lots of media information and videos. Truthful enough. However this once more was going to take rather a lot of time as the problem with transferring a folder is that every micro-size file (<100 kb) takes mere milliseconds to obtain however takes it’s personal sweet time to write down on the local disk when downloading from the web. The apparent means was to pack the public_html folder into a zip file and then switch.
I did an SSH into the box and ran the command zip -rv public_html.zip public_html/ to zip the listing, but one factor which I forgot was that even whereas zipping a listing, I’ll hit the identical drawback of the zip program manually iterating over all of the information (together with microsized one) and can take quite a bit of time to attempt to compress every one. I left it for 20 minutes only to seek out it solely 10% via my all information. Enchancment? Positive but I am not a very patient man.
Why is that this so slow? Oh, wait.
I appeared into the log (because of -v…verbose), and came upon that I had quite a bit of information in my public_html folder in my xcloner plugin directory resulting from some failed attempts to take website backup from a plugin. I found more such folders of some plugins which haven’t any lively position in powering up this blog.
Checking the dimensions of information within the plugins directory.
So, I deleted these folders in public_html/wp-content/plugins and tried operating the zip command once more. It was still slow and I gave up in a couple of minutes.
Clear up.Zip them em!
I google about wrapping information in a zipper with out compressing a lot and obtained to study ranges of compression in zip utility which fits from 1-9 with 1 being least compression and 9 being the very best degree of compression whereas it defaults to 6. So, I attempted again this time with butzip -1rv public_html.zip public_html/ quickly realized the iteration over gazzilion information take extra time than compression logic for the CPU.
Simply wrapping.
I learn more and came upon that making a tarball w/o compression is quicker than zip utility, so it was time to attempt that and perhaps let it complete in its own sweet time. So, I fired up the command: tar -caf public.tar public_html and left it operating.
Unsure if it ever completed…
Then I logged into phpMyAdmin (an internet app to handle MySQL occasion) to take a backup of my bitsnapper WordPress DB. I simply clicked on export and the downloaded file was of measurement 48 MBs which was odd as in UI it was displaying a DB measurement of 1.2 GB. I knew SQL backup can compress some knowledge but of this magnitude? WTF. I opened the SQL file in VS code and clearly, the file was incomplete and had some HTML gibberish at the end which on inspection was the HTML for phpMyAdmin. Bizarre?
I attempted exporting the DB as soon as again from the UI and this time the dimensions of the backup.sql file was 256 MBs. I felt this was applicable but my instinct did a proper click on and opened in my editor as soon as again. Certainly enough the file was nonetheless incomplete with that gibberish. Truthful to say, the backup from phpMyAdmin was corrupted.
prime
I did an ssh into my internet hosting box using the creds in my GoDaddy account and tried every little thing from checking the output of system instructions like:prime, ps -ef, free but the box is properly sandboxed by GoDaddy to avoid any unauthorised access. I even tried to do a privilege escalation with intention of gaining extra management over my hosting account and perhaps restart mysqld however all in useless.
pssudo?
I knew about taking direct DB backups from the shell utilizing mysqldump -h -u -p > db_backup.sql so it was time to attempt that. I ran the command and tailed the backup SQL file with tail -f db_backup.sql to look into its content material because it populated. It began exporting DB nicely and as I started feeling badass and went to seize a cup of espresso, the terminal introduced me with the error message:
man mysqldumpFirst try.
I googled about the problem and it had something to do with the max_alllowed_packet variable of MySQL. The one two methods to vary that was either my modifying /and so forth/my.cnf file (which I used to be positive I didn’t have sudo entry to) or run SET GLOBAL max_allowed_packet=1073741824; query within the MySQL console.
Admin? No? Sorry.
Yeah, both of them didn’t work. Obviously. You want respective system admin consumer access for both.
The roadblock was getting stupidly irritating, and I had to get the backup.  I googled more and somebody prompt to cross the max_allowed_packet variable with the mysqldump command as.–max-allowed-packet=1073741824 Tried that too, didn’t work.
With –max_allowed_packet
I was tired and needed to sleep, so I terminated my ec2 occasion and slept.
TODAY.
At present I used to be feeling motivated and deliberate to look into the problem from another angle.
As an alternative of utilizing the WordPress AMI, I made a decision to create the whole setup from scratch. I launched an occasion of ec2 with Amazon Linux AMI. The goal was to know if that is actually GoDaddy messing with me or is it some fault in my database which is leading to the entire shebang.
I used this submit as steerage to arrange every little thing from grounds up.
I logged in once more to my GoDaddy account to be greeted by the orange banner urging me to upgrade. I felt weak and was nearly to click improve and throw some dough to get the straightforward means out. But no, that’s towards the hacker mentality I work with.
So, I opened the CPanel, phpMyAdmin and tried taking a backup again. It again downloaded a 250-something MB file with gibberish at the end. I manually eliminated the last half of the file and uploaded it to my ec2 instance by way of scp and imported it into my distant MySQL occasion.
After importing the public_html information, importing SQL backup and configuring wp-config.php file with DB host and creds, I restarted each httpd (Apache server) and MySQL (DB server) and opened http://ec2-instance-url:80 and to my partial euphoria, it did load up my header and footer for bitsnapper however no posts have been seen.
Hmm… something was missing.
I seemed into the tables on phpMyAdmin and my MySQL server on the ec2 occasion and duh, my wp_xxx_posts table and wp_xxx_postsmeta was lacking. Yeah! So, the problem was that my DB measurement has such giant that Godaddy shared hosting limited bandwidth was not allowing me to take a backup of the whole DB. Clearly, I had to repair this.
I wrote a custom python script to take a backup of the bitsnapper DB table-by-table to avoid hitting the max_allowed_packet limit as observed last week however the identical error mysqldump: Error 2013: Misplaced connection to MySQL server throughout question when dumping table wp_xxx_postmeta  stored popping up.
I started my intense googling session as soon as again and queried alongside the line of  ‘how you can backup DB from GoDaddy shared internet hosting‘ and ‘GoDaddy + shared hosting + mysqldump + error 2013‘ and by some means by a fluke, I landed on the Backup part of my ….drumroll?….. CPanel! *facepalm*
Facepalm second!
It had every thing I was making an attempt to do above with a flick of a click. I ended all my previous efforts and download the complete web site backup which had each public_html folder and DB backup SQL. The whole archive was nonetheless 2.5 GB which was big for a small blog like this.
Anyway, I did a scp to my ec2 instance and tried to exchange the information in /var/www/html with public_html/ and restored mysql backup by way of mysql -u -p < db_backup.sql and this time it labored with out an error. I restarted my mysql and apache http server by service mysql restart; serivce httpd restart; and tried to load http://:80 and presto! the entire website loads up.
The euphoria this time also lasted for a brief burst as within 2-3 reloads the replicated website again began throwing up the same 503 error and my shell session chocked up.
503! Not again.
I fired up a brand new terminal and tried SSHing into the box however the box just turned unresponsive. I went to the AWS admin console to examine my ec2 instance monitoring for the machine parameters and observed an identical sample as with the CPanel (left panel) parameter console.  It was all purple and orange as soon as again.
Clearly, GoDaddy’s internet hosting wasn’t the only wrongdoer.
Real IT help == Self-troubleshooting!
It was then once I decided to shed my worry of peeping into the DB tables because it was a gone trigger anyway and I nonetheless had a partial backup from last yr once I migrated the blog from WordPress managed internet hosting to standard shared internet hosting box.
Boys, it was time to run some queries. The first thing I did was to login to the phpMyAdmin and lookup the tables, schema and properties. I used to be assured that the issue is with the DB measurement and that’s the rationale for slow queries which is chocking up the CPU burst time.
I seemed into tables and located table wp_xxx_postmeta to be around 950 MB in measurement with simply 11000 data. This immediately fired up alarms in my head as I have labored with multi-million row DBs during my stint in Adobe & Shuttl and the table measurement was principally in the vary of few MBs solely. A tough again of the notice calculation said a median measurement of 100 kb per report on this table which was weird because once I seemed up the schema for a similar, it simply was storing 4 data i.e. meta_id, post_id, meta_key, meta_value.
Hey DB, you cray?
It was time to prod this table and understand the info inside it. I fired up a simple query:
SELECT meta_key, rely”text” FROM ‘wp_s4w671g0kp_postmeta’ GROUP by meta_key order by rely”text” desc;
Lo behold, the end result was a bit shocking as till now I used to be considering that this desk may include submit revisions or metadata solely but the query outcome was something like this:
meta_key rely”text” _total_views
1895
_view_ip_list
1892
_jetpack_related_posts_cache
1206
_wp_attached_file
1144
_wp_attachment_metadata
1101
wp-smpro-smush-data
1069
_wp_attachment_image_alt
903
_edit_lock
155
_edit_last
140
_yoast_wpseo_focuskw
118
_yoast_wpseo_linkdex
118
_thumbnail_id
116
_yoast_wpseo_metadesc
114
_publicize_twitter_user
107
_wpas_done_all
103
_total_likes
77
_like_ip_list
77
_wpas_skip_3914702
75
_wpas_skip_11104850
72
_yoast_wpseo_title
56
_wp_attachment_backup_sizes
40
_yoast_wpseo_focuskw_text_input
38
_wp_old_slug
35
essb_hideplusone
29
essb_hidevk
29
Do you see it? There are some 1800+ data for _view_ip_list, _total_views,  _jetpack_related_posts_cache which is principally nothing however data originated from WordPress personal homegrown fashionable plugin – Jetpack. I googled a bit about security delete for these data, didn’t find anything,  took a leap of religion and executed:
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_view_ip_list’;
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_total_views’;
Delete from FROM ‘wp_xxx_postmeta’ WHERE meta_key = ‘_jetpack_related_posts_cache’;
It deleted some 4,000 data out of 11,000 data it had and look what happened once I refreshed phpMyAdmin?
All cleaned up!
Yus! My wp_xxx_postmeta table measurement dropped from 900-something MBs to 6.Three MBs by just deleting ~4,000 data. What sick joke is that? My complete DB measurement dropped to 25 MBs from ~1.2 GBs, in all probability because of the cascade effect of overseas key constraints of the data I deleted.
Outcome?
My web site was a breeze once once more. The load time went down considerably, in all probability as a result of of quicker DB queries and even the system monitoring parameters on the CPanel went down from Purple/Orange to Inexperienced. I did some load testing by executing a number of curl requests to my house page by way of terminal, and the server was not breaking any sweat.
Take a look at that RAM usage!  WHAT? Keep in mind once I talked about operating WordPress stack on my 2006 PC with some 128 MB of memory? Yeah!
So fast much wow!
Classes?
Troubleshooting Godaddy is a long-term thing. You’ll be able to either get into the shit and fix it yourself or you can begin throwing money on the display until you escalate to their core tech workforce which I assume might be by no means for shared internet hosting plans. They could have a terrific help for devoted servers though.
AWS is a f##king superb piece of tech. If you understand how to harden servers, by all means, simply drop these legacy internet hosting providers and go on your personal setup. It’s in all probability cheaper, quicker and extra VFM. A easy t2.micro instance will value < ₹700/month. (Perhaps extra, sigh world financial system!).
Typically, being a smartass isn’t good. Most of the occasions, nevertheless, it retains you protected.
All the time examine logs. -_-
The post Back from Dead
0 notes
elmossresearch · 6 years
Photo
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Zine 3 hole pamphlet stitch Line up corners and fold your paper with a bonefolder by pushing from middle then up and down. Do this for all folds! Registration sheet for the stitch 4 cm from top and bottom, then one between those marks Pinch the registration page in place in the middle, hold pages together Place bodkin on mark, then lift up to forty five degree angle, and press down into cutting mat (Press hard) After that’s done, keep your folded pages together because the holes are aligned. Cut thread twice the length of the spine, wax the thread bby rubbing it through until it has a waxy feel. In the middle, back on yourself on the inside to left, then all the way to the right, and then back out the middle and tie off to the other thread. To keep thread on the needle, sew into waxed thread and pull down, then when there's a loop, pull the long one. Grain direction is important for folding manmade paper, fold to the grain. Make a lap joint if you're sticking paper together, lap joint is never on top. Cm across Score along the ruler Point of the bone folder underneath and lift up at a 90 degree angle Cut a cm strip off the other one Ignore lap joint when measuring.
When binding covers, always use the greyboard to give for the depth when cutting off corners of book cloth. Make sure to match up the grain of the book cloth and the  greyboard, otherwise it won’t look right.
When adding glue, spread from the middle out and always cover everything other than whatever is being glued with newsprint or scrap paper to protect your pages. Always push down the ears with the bonefolder when doing the corners, and do opposite sides first.
When making a concertina book, fold things in on themselves into a mountain fold instead of measuring out the folds. Easier and cleaner sizes.
We also made 4 more abstract books: Beak, Trouser , Double trouser, and maze. All of these go from one piece of paper of any size, with a4 probably being the smallest. These just include folding and one cut.
0 notes
Text
When I learned about the amazing opportunity to pour my passion for creativity into potentially becoming a Graphic 45 Brand Ambassador, I was inspired to create an Airship as a tribute to Graphic 45 featuring all of the amazing design collections to date (and there are room for more!)
Description:
I wanted to do a project where I could create a statement piece to showcase all the wonderful Graphic 45® products while using my scraps from prior projects that are just too beautiful to recycle! The Airship is based on a simple design, but I was inspired to ramp up the design!
This fun Airship can be used as a statement piece or simply as a unique home décor piece! When finished, the Airship measures approximately 28″ Long x 32″ Wide (wing width) x 14″ High (excluding stand).
Graphic 45® Supplies:
1 sheet of DIY Craft Paper Architecture & Alphabet No.2 double-sided 19.5″ x 27″ sheets.
Artisan Style paper scraps from the 12″ x 12″ pad
1 sheets of Artisan Style Collection, Natural Beauty (4501110)
1 sheets of Artisan Style Collection, Creative Ideal (4501106)
1 sheets of Artisan Style Collection, Patterns of the Past (4501109)
Master Detective Collection paper scraps from the 12″ x 12″ pad
3 sheets of Master Detective Collection, Get a Clue! (4501564)
Gilded Lily Collection paper scraps from the 12″ x 12″ pad
4 sheets of Gilded Lily Collection, Gilded Lily (4501125)
3 sheets of Gilded Lily Collection, Creme de la Creme (4501127)
1 sheet of Gilded Lily Collection, Lavish Lifestyle (4501128) Note: Graphic 45 Airship Banners created using Graphic 45 web site product images modified with Adobe Photoshop and Adobe Illustrator.
 Additional Supplies:
Tim Holtz  Idea-ology Collection – Advantus Vintage Design Tape (UPC: 040861933536)
KaiserCraft Factory 42 Collectibles Steampunk (CT88) paper gears
A 1/8″ x 36″ dowel rods
2 each 1/4″ x 12″ bamboo rods
Aluminum jewelry wire, 9# gauge, 0.2mm diameter in black, gold, red, and brown.
Thin black cotton sewing thread
Roll of 1/4″ x 6′ copper tubing (for the stand)
KaBlackout Papercraft Airship Template with great detailed instructions. Link (I made several modifications and additions to ramp up the design!)
  Tools, Adhesives & Ink: 
Paper trimmer, scoring board, bone folder, ruler, craft knife, awl, detail scissors, scissors, ink pads, double-sided 1” tape, and Scotch QuickDry Adhesive.
Notes:
This is an Advanced Project and as such, you should allow plenty of time to enjoy assembling your very own Airship.
Don’t worry about matching my design, but feel free to use whatever papers you have on hand to make it your own.
Dimensions are width x height in inches unless noted.
Step-by-Step Directions: Let’s get started on this grand adventure!
I chose to use KaBlackout’s Papercraft Airship digital pattern to print on a variety of G45 papers.
Cut out all the shapes as per the directions from KaBlackout.
Scoring takes time but I prefer it to get crisp folds and joints.
Keep scoring…and don’t forget to have fun!
Begin assembling the individual rings. A highly sticky or tacky glue is a must.
Each ring is created from three pieces and then joined to the prior ring.
Ensure all glue joints and tabs are adhering firmly both inside and out.
Take your time to ensure the numbered tabs line up as per the instructions.
Once you get into the grove, assembly goes quickly.
I chose to deviate from the plans as I was inspired to ramp up the design!
I added a solid structure near the front center to support additional elements to be added later.
I used wire to wrap around the woods and then secured with paper to the inside of the Airship.
The tail section is a bit tricky, so practice the folding PRIOR to gluing.
I found it easier to build each of the four fins and then join them together.
I left the tail open on the tail to help with joining to the Airship.
I cut an opening to stuff the Airship. Rather than fill with paper (which will compress over time) I filled the airship with bubble wrap.
I stuffed the tail with small pieces of bubble wrap. I then closed the opening.
I closed up the opening on the bottom.
I applied a liberal amount of Mod Podge to seal the Airship and give it some strength.
Be sure to brush the Mod Podge in different directions to ensure you don’t miss anywhere. this is where the Airship plans stop.
I wanted to add several elements starting with propellers created using two shapes of paper with a piece of wire sandwiched between leaving a tail hanging out.
I then gathered all the fins with their wire tails to wrap around two metal rods.
The wire was held in place wit a decorative wire wrapped around.
I covered the metal rods completely to give it an coil look. I attached more wire at the bottom to attached to the Airship body and cover with paper.
I then used three different colored wires to create an “electrical coil” connecting the engines.
Next, I wanted to create wings to really give the Airship my own flair.
I cut down rods in a wing pattern and glued them between two layers of paper.
Allow the paper on the wing to dry before trimming to shape.
I continued with the second wing in the same manner.
I then created a top fin for fun.
I attached the wings to the rods I had put inside the Airship with wire.
Once connected, I covered the wire and rod with paper to hide the attached area.
Similarly, I mounted the top fin to the structure rod, but I left the rod exposed so it can move as if steering the Airship.
I chose to mount the wings with the “ribs” exposed for a cool look.
I ran sewing thread from the front spire to the back to look like it is supporting signs, banners, and flags.
I attached the wings with wires to the tail to also give the look of steering cables.
Now, it’s all about Graphic 45! I created a banner cut from the front of one of the 12″ x 12″ paper pads. I added ribbon on the bottom.
Using G45’s web images, I created banners for each of their product lines with Adobe Photoshop and Adobe Illustrator.
Detail of the banners. I matched the banner border colors with those found in the G45 theme.
I mounted the banners with foamy tape, but ran a string behind from nose to tail to look like it is holding them up.
I added black wire and cut Washi taps to create flags.
I tied off all the strings to the tail by creating a paper protrusion on the tail.
I continued adding banners with a string behind on a second row
On the other side, I continued adding the rest of the G45 product lines.
The banners are a tribute to all the amazing designs G45 has created to date. There’s room for more!
Using a thin marker, I added details on the Airship.
I added “rivets” and “flaps” on the tail.
I mounted the Airship to a role of copper tubing that maintains it’s shape to create a very unique stand! Once completed, it was onto the fun photo shoot outside!
Photo Shoot:
“We all have our time machines don’t we? Those that take us back  are memories and those that take us forward are dreams” – H.G. Wells
Onward for more fun!
  Graphic 45 Inspired Paper Airship When I learned about the amazing opportunity to pour my passion for creativity into potentially becoming a Graphic 45 Brand Ambassador, I was inspired to create an Airship as a…
0 notes
stoneylizard-blog · 6 years
Text
babies r us flyer smartcanucks
Ticketing Tips Click and move to move babies r us flyer smartcanucks around the map. I moved to click and move to the map. Double-click the folder or use the size button. Double-click / double-click the folder or use the zoom button. Campaign Filter Remove the slider to see how many discounts have been created. Click the selected area for more information. SUNNYVALE Weekly Baby Announcements "R" is a Home Depot leading manufacturer of baby clothes, baby supplies, scraps, baby blankets, baby towels, napkins, types and more. R Us Weekly Weekly Round & Fly Full Babies Girls. All announcements will be announced in the release process of Black Friday 2017. The "Big Three", Amazon, Best Buy and Walmart all have trumpets, but a big chain has found the honor of a secret. You can move the game R Recently, players are the seller ... Wheel "Our Raw Games" since 1996 was nostalgic
0 notes
agosnesrerose · 7 years
Text
Studio Saturdays: Mixed-Media Planner, Part 2
Hello, and welcome to Part 2 of our Create Along on how to make a mixed-media planner. I hope you had fun making your covers, and that you enjoyed the shortcut of working with a repurposed book. In today’s installment, we’ll finish the covers and then bind the book with a very easy stitch that has a big “wow” factor. In Part 3 next Saturday (January 28th), we’ll decorate the pages, and you’ll be on your way to documenting your creative life in 2017.
This planner is inspired by the one Dawn DeVries Sokol made for her article “Creative Days Ahead” in the January/February issue of Cloth Paper Scissors magazine. Although she used a Moleskine journal in the article, she often makes her journals from scratch. I love how Dawn’s unique approach to creating a planner makes it part art journal, part planner, and all her. Using her techniques, your planner will reflect your artistic style as well. If you missed Part 1 of this Create Along and want to catch up, you’ll find it here.
Here’s what you’ll need for this week’s installment:
• Bookcloth
• Scissors or craft knife and cutting mat
• Ruler
• PVA glue
• Glue brush
• Bone folder
• Book text (optional)
• Collage papers or decorative papers
• Other decoration for the cover, such as labels, stickers, or vintage postage stamps (optional)
• Paper for the pages (see below for specifics)
• Graph paper (optional)
• Thin awl
• Artist’s tape or washi tape
• Waxed linen thread, about 7 yards (you may need more or less, depending on the height of your book). I recommend 4-ply waxed linen.
• Bookbinding needle or darning needle with an eye large enough to accommodate the waxed linen thread.
When last we left our planners, both the front and back covers were done, but the spine was untouched. Although the spine on your book is (hopefully) intact and in good shape, this book is going to get a lot of wear and tear over the course of a year, so it should be super sturdy. That’s why I decided to cover the existing spine with an extra layer of bookcloth. Bookcloth is paper-backed fabric, and it’s often used in bookbinding because it’s extremely strong and wears well, especially for the hinge. The hinge is where the cover and spine connect, and this area gets a lot of use.
Place your covers in front of you, right side up. To cover the outer part fo the spine, cut a piece of bookcloth 1 ½” higher than your cover, and 2 ½” wider than the spine, and the spine of your book should be about 2″. My book is 2″ wide at the spine, 6″ wide from the spine to the foredge (the front edges of the cover), and 9 ¼” high, so my outer spine bookcloth piece measured 4 ½” wide x 10 ¾” high. The bookcloth should be cut with the paper grain running vertically; you can determine this by bending the sheet of bookcloth one way, and then the other way. The way that it bends more easily is the grain direction. Whenever paper is going to bend or fold as it’s being used, the grain should always run parallel to the bend. With the paper side of the bookcloth toward you, spread PVA glue over the entire piece, working from the middle out. I usually do this on top of some scrap paper. Then, place the bookcloth over the spine, centering it. There should be about ¾” hanging from the top and bottom of the spine.
Attach the bookcloth to the spine, pressing it with a bone folder to make sure it’s adhered in the gutters, those little valleys where the covers and spine meet. Pick up the covers and check for good adhesion; if there are edges lifting up, lift up the bookcloth, spread on more glue, and press it back in place.
Cover the spine of the planner with bookcloth to make it extra sturdy.
Flip the covers over, place a fresh sheet of scrap paper under the covers, apply more glue to the overhanging flaps, and adhere them to the inside, again pressing with the bone folder.
Glue the flaps of the bookcloth to the inside of the spine.
Cut another bookcloth piece for the inside of the spine, also with a vertical grain. This piece should be the same width as the bookcloth piece you just adhered, and ¼” shorter than the covers (mine was 4 ½” wide x 9″ high). Glue the paper side with PVA and lay it over the inside of the covers, over the spine, matching up long edges. Press with a bone folder to adhere. Place a few sheets of scrap paper under and over the spine, place everything on a table, and put a heavy weight on top, like a stack of books. This is an important step and prevents the covers from warping. Leave for a few hours to dry.
Gluing another piece of bookcloth on the inside of the spine further reinforces it.
I wanted a little something extra on my covers, so I cut some pieces of book text paper ½” wide and glued them to the seam where the bookcloth and the cover meet, on both the front and the back. I also added a vintage label and a vintage postage stamp to the front.
I chose to collage the inside covers, using a variety of book text pages, some printed napkins, and stamps, and adhered the papers with PVA. You can choose to use just decorative paper, or paint the inside covers—it’s completely up to you. I glued the papers about 1/8″ in from the top and bottom and foredge side, and about ¼” away from the gutter. Don’t apply paper over the gutter, since that will make the book difficult to open and close. When everything was in place, lay scrap paper over the covers, weight them again, and let them dry for a couple of hours.
I collaged the planner’s inside covers, but they can be covered with any type of paper.
During the dry time, I cut my inside pages. The type of paper you choose should be based on how you plan to use your planner. I knew I’d be using wet media like paint, gesso, and watercolor, so I used fairly heavyweight (98-lb) paper from a Canson XL Mix Media Pad. Test a few different types of paper to see what works for you.
To determine the page size for your planner, measure the pages from the text block of the book you repurposed, and double the width. If those measurements aren’t available, subtract ¼” from the height of the book, and measure from the flattened spine to the foredge, and subtract ¼”. Your pages will be that height x double the width, and then folded in half. Based on my dimensions, my pages are 12″ wide x 9″ high. You’ll need 36 folded sheets to form 7 signatures (a group of folded pages nested together) of 5 folded pages each, with one sheet left over for a punching template. You’ll be able to fit two months in each signature, and then have one signature left over for notes, drawings, or whatever you’d like. Try to cut the paper with the grain parallel to the height of the pages.
Folded pages nested together for a signature.
I promised you that this binding is easy, and it is. The binding is by book artist Keith Smith, with one variation. One trick that I use when binding books is to create a sewing template using graph paper. I’m comfortable eyeballing certain things, but when it comes to binding a book, I like my stitches nice and even, and I find that using 1/8″ graph paper (8 squares to the inch) makes the task of plotting the holes so much easier. I first mark off the exact size of the spine on the paper, then determine how many signatures I’ll need (in this case, 7). With a 2″ spine, it was easy to plot 7 rows spaced ¼” apart. This leaves a lot of room between signatures, but there’s a reason for that: I want to include a lot of extras in my planner, like small envelopes, ephemera, and maybe some tipped-in pages, so I’ll need room for the pages to expand.
I created 10 horizontal rows of holes, from top to bottom; the first two, which form the anchor stitch, are spaced ½” apart, and the rest are 1 ¼” apart. You can space your stitches any way you like. Each vertical row is sewn separately, and you can mix up the spacing and the thread colors if you want to create a different pattern.
Once I had the sewing template done, I cut it out along the border, and placed the leftover folded sheet of paper on top, centered it, and made a mark along the fold at every hole. I unfolded the sheet, carried the mark across the fold, and wrote a ‘T’ on top, so I wouldn’t transpose the template. I also marked a ‘T’ on top of each signature.
Use the sewing template to plot the holes for your signatures.
To punch the signatures, place the template, with the marks now inside, into the middle of one signature. Holding it open at a 45-degree angle, hold an awl parallel to the table, and punch through the template and signature at each hole. The goal is to come out right on the fold, but if you’re a little off, that’s fine, it won’t matter. Repeat this process on the remaining six signatures, and remember to remove the template from the last signature.
Punch holes with an awl at each mark, going through the template and the signature.
Place the covers, right side up, on a cutting mat. Center the sewing template over the spine on the outside. Tape it in place with low-tack artist’s tape or washi tape (don’t cover any marks).
Tape the template to the spine of your planner to hold it in place.
Poke a hole with the awl at each mark. Carefully lift the template off, and re-poke any holes that aren’t very visible.
Punch a hole with an awl at each mark, going through the spine.
Time to bind! Thread the needle with a length of thread about 2 ½ – 3 times the height of the cover, and don’t knot the end of the thread. Pick up the first signature, place it along the first row of holes on the inside, and take the needle into the second hole from the top, from the inside, going through both the signature and the cover, and leaving about a 3″ tail.
Take the needle through the top hole to the inside, going through the signature and cover, and make the threads tight by pulling both the tail thread and the working thread opposite each other and parallel to the spine. Never pull straight up!
Take the needle back through the second hole again from the inside, and back through the top hole from the outside. You should now be on the inside of the signature, and there should be two stitches between the first and second holes on the outside. If they’re twisted, make them parallel.
Pull the stitches tight again, and tie a double (square) knot at the second hole from the top. You’ve just created the anchor stitch.
Take the needle down to the next hole (third from the top), through the signature and cover, to the outside. Slip the needle from right to left under the double stitches you just made.
Pull the thread downward until it’s snug.
Quick tip: If you have trouble going back into the cover and signature from the outside, re-poke the hole from the inside with the needle; this widens it a bit.
Slip the needle under the double stitches again, going from right to left.
Pull until the the loop you just made is tight around the anchor stitches, and enter the hole you just exited (third from the top), going through the cover and the signature. Try not to split the thread as you re-enter the hole.
Tighten the thread by pulling it parallel to the spine in the direction you’re sewing, and enter the next hole down from the inside, going through the signature and cover. Repeat the process you just did, always slipping the needle from right to left under the double stitches, pulling the thread tight, and slipping the needle under the stitches again. Re-enter the same hole, pull the thread parallel to the spine to tighten, and enter the next hole down from the inside. Repeat the sewing all the way down until you’re on the inside of the signature at the last hole. Here’s how things should look after sewing the first signature. Note how none of the stitches are twisted:
At the last hole, you’ll need to tie the thread off. To create a half-hitch knot, slip the needle under the last stitch, and pull until you get a loop.
Take the needle through the loop, pulling downward, until you create a knot. Repeat, and trim this thread and the tail thread to about ¼”.
That’s all there is to the binding. Repeat the sewing for six more signatures, and you are done, my friends. Next up: We’ll decorate the pages, using a variety of easy and gorgeous mixed-media techniques, and we’ll get this planner started. If you have any questions about the materials or techniques, or the meaning of life, please leave them in the comments. See you next week!
Learn a few bookbinding tricks, and you can make your own planners, art journals, and sketchbooks. These resources from North Light Shop have tons of ideas and techniques!
Get everything you need to start making accordion books, including an instructional video, with this great Accordion Book Bundle!
See Dawn DeVries Sokol’s article on making creative planners in the January/February issue of Cloth Paper Scissors magazine.
Learn how to create unique backgrounds and bind no-sew books in this Backgrounds to Bindings video with Kari McKnight Holbrook.
Discover how easy it is to make a stunning custom sketchbook cover with a variety of mixed-media techniques in this Art Lesson by Sandrine Pelissier.
The post Studio Saturdays: Mixed-Media Planner, Part 2 appeared first on Artist's Network.
from Artist’s Network http://ift.tt/2iVHkPz
http://ift.tt/2jKjQkM
0 notes
instantdeerlover · 4 years
Text
Restaurant Suppliers Are Opening Up to the Public to Keep Their Businesses Alive added to Google Docs
Restaurant Suppliers Are Opening Up to the Public to Keep Their Businesses Alive
 Photo by Isabel Infantes/AFP via Getty Images
Foragers, farmers, and fishers across the U.S. are offering delivery and pickup to the general public
“Probably until the recent past, and I do mean the recent past,” Jason Roland says with a laugh, “about 70 percent of our sales were to restaurants.” He and his wife run Organically Roland, a two-acre farm in South Carolina where they grow produce like sunchokes, broccoli, sweet potatoes, and collard greens. On March 18, the governor ordered restaurants and bars in the state to close to dine-in customers to curb the spread of coronavirus, echoing efforts that swept throughout the country. “I think everybody knew it was coming,” Roland says. A few days before the governor’s announcement, his customers started pulling him aside and canceling or reducing their orders. All but one order was fully canceled after the statewide closures.
“I just finished planting 400 pounds of seed potatoes which I was assured chefs would be buying by the bushel,” Roland says. “That’s just not going to happen now.” Other than one $80 invoice he’s letting go to help out a client, most of his produce was paid for on delivery, so Roland’s new normal is more about finding new buyers for perishable foods than chasing unpaid bills. And of course, Roland is not alone. Across the country, governors and other officials are mandating the closure of dine-in establishments in many states, leaving these suppliers, like so many others, scrambling to sustain their businesses. As Roland says, “I feel confident that this will be one of those things that you always say ‘there was a before time and an after time.’”
“The hardest thing I’ve ever done was build up this business, and overnight, it disappeared”
Many businesses might not exist if it weren’t for chefs on the lookout for unusual flavors or something special to give their diners. Often these businesses — those providing specialty produce, fresh seaweed, or mushrooms picked directly from the woods — go unseen by the general dining public. “A pretty good chunk of my business are flowers that chefs are tweezering at Michelin-starred restaurants,” says Bryan Jessop of Morchella Wild Foods in California. That income is now gone. “The hardest thing I’ve ever done was build up this business, and overnight, it disappeared.” For entrepreneurs who grow their product, losing restaurant contracts doesn’t just mean there’s no income coming in — it means weeks or months of money spent on seeds and labor that might not be recuperated.
Like every supplier I spoke with, Jessop is hoping to pivot to a home delivery or CSA model through posting on neighborhood groups like Nextdoor; others are relying on their social media followings to offload product. “I don’t think it will make me whole, but it will keep me busy and doing what I love to do,” Jessop says of direct-to-consumer delivery sales. “The silver lining might be that I can get to know some of my neighbors and maybe when things are back to normal, I’ll have something to supplement my restaurant business.”
Suppliers who grow, forage, or catch specialty foods that go beyond the realm of the typical grocery store shopping list have long had a symbiotic relationship with the restaurant industry. “Restaurants have the ability to use a really specialized product” compared to supermarkets or even farmers market patrons, says Tyler Akabane, who runs foraging tours through his company Mushrooms For My Friends and works as a forager for Wild Mushrooms in the Boston area, where 99 percent of clients were restaurants. “When patrons go out [to restaurants], they can try something they’ve never had before,” Akabane says and notes that most laypeople don’t know what to look for when buying some of these specialty foods or how to cook them.
On Saturday, Akabane posted to Instagram asking if people in the area would be interested in having mushrooms delivered to their house for $20 a mixed bag. People were excited, not just for the opportunity to support a struggling business, but to get their hands on rare mushrooms without venturing into the woods. Akabane sources over 50 seasonal varieties throughout the year. He’s posted videos about different mushroom varieties and how to cook them on his Instagram both as a way to help out new buyers and give people stuck at home something to do.
“It was not easy and could have used a lot of streamlining,” Akabane says of the first deliveries. He’s hopeful that he can make it work with better planning on his delivery routes. Last week he sold 140 bags to 100 households. “It seems sustainable if I could keep orders like this up,” he says. But so far there are only 42 orders this week. “We have to assess and see if this is something we want to do or not,” Akabane says. “But we don’t have anything else.”
New York City’s Farm One, a hydroponic farm that focuses on specialty produce, microgreens, and edible flowers mostly grown to order for 40 or so restaurants and bars in the city, is in the same boat. “We went from planning for the spring menus with a number of restaurants to a place right now where the majority of our customers are no longer open,” says sales manager Marissa Siefkes. Less than 10 percent of Farm One’s customers are still operating, and with restaurants switching to a delivery- or takeout-only model, small edible flourishes may not make it onto the new menus.
“We’re pivoting from a grow-to-order model where we have hundreds of crops growing at a time to a narrower set of crops we can grow and offer to the public,” Siefkes says. Farm One is hoping that it can stay in business selling fresh herb kits, DIY cocktail kits, microgreens, mustard greens, and other, similar products. Unfortunately many of its crops take one to five weeks of lead time to grow, and with the sudden restaurant closures, Farm One was left with “more waste than we would want,” as Siefkes puts it. “We didn’t have the staff to redirect product to a charitable cause,” he says. And the team has had to scrap some ideas for generating income — like drying herbs or making other value-added products — because it would be so labor intensive that it might put employees at risk of transmitting COVID-19 in a small enclosed space. Luckily, Farm One hasn’t had to lay off any of its full-time employees as of last week, although it stopped having interns or volunteers come in.
While these small suppliers are struggling, overall they may be in a better position than larger companies: Some argue it’s easier for a supplier that consists of just a handful of people to pivot quickly to a new business model. “I feel like we’re in a much better place because we aren’t over-extended,” says Kenny Belov, owner of the “small to mid-size” sustainable seafood distributor Two X Sea. “Right now we’re so boutique we can’t seem to find any customers interested in what we offer,” he jokes.
Although Two X Sea sells items that the average customer could prepare at home, including tuna, trout, scallops, and salmon, there’s not enough volume of direct-to-consumer sales to make the fishing worth it. “I had to tell my fishermen there was no need to go fishing, which was me telling them there’s no need for you to make any money,” Belov says. “That’s been devastating.” Two X Sea does own a trout farm which Belov describes as a “very expensive aquarium,” until he can find residential buyers for the fish. He’s been running deliveries by himself for the dozens of home delivery stops he’s managed to get. It’s about a third of the orders Two X Sea used to get from restaurants, and these are all smaller, family-size orders as well. “I have no problem doing whatever needs to be done to keep as much staff on as possible while we weather this,” Belov says.
Jessop feels similarly about his chances to make it out of this as a small supplier. “I was depressed Monday through Wednesday but seeing the level of support was really encouraging,” Jessop says. “Maybe there are some good opportunities to pivot.”
These suppliers realize that they’re not the only ones struggling, and while they’re doing what they can to stay afloat, their small size also puts them in a position to help others. Organically Roland’s CSA has more than doubled in size in the last week, but he brought a few boxes of produce to one local restaurant so service workers could take what they need for free. “I don’t know how many of the restaurants will be able to come back,” Roland says. “We’re going to help them as much as we possibly can and as long as we possibly can while looking out for our own needs as a business.”
Roland is confident that unlike some larger farms nearby, his two-acre farm will survive. “I know of some folks around here who are bigger and they are in trouble,” he says. Others used to urge him to grow his farm, and he’s now glad he never took their advice. “They don’t have the resources to get rid of their stuff the way that I do.” Now, more than ever, he’s happy to be small-scale.
Tove Danovich is a freelance journalist and former New Yorker who now lives in Portland, Oregon. Follow her on Twitter @TKDano.
via Eater - All https://www.eater.com/2020/3/24/21192437/suppliers-sell-direct-to-consumer-as-restaurants-close-coronavirus-delivery-pickup
Created March 25, 2020 at 12:22AM /huong sen View Google Doc Nhà hàng Hương Sen chuyên buffet hải sản cao cấp✅ Tổ chức tiệc cưới✅ Hội nghị, hội thảo✅ Tiệc lưu động✅ Sự kiện mang tầm cỡ quốc gia 52 Phố Miếu Đầm, Mễ Trì, Nam Từ Liêm, Hà Nội http://huongsen.vn/ 0904988999 http://huongsen.vn/to-chuc-tiec-hoi-nghi/ https://drive.google.com/drive/folders/1xa6sRugRZk4MDSyctcqusGYBv1lXYkrF
0 notes