#edit 2: also forgot to properly specify
Explore tagged Tumblr posts
Text
i should read book of bill so i can understand some recent thingies better. also i need to draw two humanoid versions of bill
1) object head bill, because it's hot as hell, fuck you i do what i want for whatever reason i want and my reason is i crave to save the town
2) that idea i came up with of him possessing a fangirl, kinda keeping that body or whatever, mostly doing that s/h stuff cuz the bastard thinks pain is funny. also might entertain the concept of the fangirl herself in that bodiless soul form, perhaps missing posters or people being concerned for her or whatever
#should the fangirl be adult or child?#i initially thought i was gonna do a diff version of twink bill except its kinda transmasc ish sorta#but my more recent thoughts leaned toward this eons-old man in the body of some 12yo girl#i mean#most fangirls ARE/WERE like 12 anyway#especially the ones who are stupid enough to actually sell their soul to their babygirl#also it could be fun#more angst potential regarding the girl herself#and also maybe bill tryna smooch ford in that form but ford is like “bill no stop this is fucking weird”#idk#edit: oops forgot the tw#tw s/h mention#edit 2: also forgot to properly specify#adult twink bill but trans as in like for the sexyman vibes. for the fangirls#but yeahhhh object head bill is hotter and 12yo fangirl bill is more fun sooo whateverrrr
3 notes
·
View notes
Text
babbling about charlie spring and how important he is to me (tw for EDs, OCD, self-harm, and brief discussions of passive suicidal ideation !!)
i need to yap i need to babble. charlie spring guys. charlie spring probably means more to me than any character ever has. so many aspects of his character are deeply relatable to me and they give me so much hope. i just want to go into like. why . 1) having an ED that is not about his body image. i have ARFID. while my habits and symptoms are very different than his, seeing representation of a character with an eating disorder that is NOT related to body image or weight was so cool and important for me. 2) OCD. oh boy. i didn't even realize that i probably had OCD until i read heartstopper. i thought my obsessions were normal. i thought my compulsions were normal. i figured either (1) everyone had them and i was just having a harder time coping or (2) i was a bad person. having a character that shares those struggles really made me feel less alone. 3) this one is harder to talk about. i actually started struggling w sh a week before i read heartstopper for the first time. without going into detail, i was using a very superficial method and convinced myself that it didn't count, despite very much being self-harm. about a year and a half later, i started struggling with the same uh. methods. of self-harm that charlie did. i was terrified and ashamed, but charlie's arc made me feel less alone and less guilty. it reminded me that i could get better. i also wanted to specify that charlie's self-harm being specifically NSSI (non-suicidal self-injury) was SO important to me too. while i have definitely experienced passive suicidal ideation (and it is implied that charlie has too), my self-harm was NEVER done with suicidal intentions. (EDIT FORGOT TO MENTION: i am now 250 days clean :D) also surprise a fourth one! (4) his relationship with his mom. while my relationship with my mom is fairly different than his with his mom on the surface, there can be a lot of similarities. my mom and i don't fight because i don't really stand up for myself. but a lot of the time she says and does things that are fairly harsh and damaging to me. but, similarly to jane spring, my mom has good intentions. my mom's mom was terrible to her, so she never had that good example of a good parent and never had therapy to properly work through the trauma. like. anyways that's it charlie spring is so me! thank you alice oseman for creating a character that means. so so so much to me.
19 notes
·
View notes
Text
I. PARTS OF AN EXCEL FORMULA
= : all Excel functions begin with an equal sign
Function: a function is a predefined formula that’s built into Excel. In this example, the function is SUM which adds all of the values in the cells together.
Operation: specify what you want to do to the function (in this example, we use the operation * for multiplication). A common example you’re probably familiar with is a mathematical operator (like + for addition, - for subtraction, * for multiplication, and ^ for exponents).
There are four types of operators: mathematical, comparison, text concatenation, and reference. Since there’s so many, I’ll be doing a post about them in the future (but you can read about them here if you’re interested in the mean time).
Constant (in this example the constant is 1.06)
It’s a best practice to try to reduce constants as much as possible and instead reference a cell that has that constant inputted. Why? If we used the example above of calculating the amount spent on office supplies and we pretend that our state has 6% sales tax (note: to get the total sales tax you would do the original amount (1.00) + 0.06 for 6% sales tax which is why I did 1.06). But what if you buy your supplies during tax free week and now you don’t have to pay sales tax at all? Since I used a constant in my formula, I’d have to go back by hand and edit the formula wherever the 6% appears. If I referenced a cell, I could change the sales tax to 0% and every other amount would automatically be recalculated.
If we were to redo the formula to get rid of the constant, it would look something like this:
II. READING AN EXCEL FORMULA DEFINITION
Anytime you type a formula, Excel will automatically give you the definition of that formula so if you know how to read a formula in general then you’ll be able to pick up on almost any formula (obviously some formulas may still need some extra explanation, but learning to read the general formula syntax will make it so you don’t have to memorize any formula parts - just follow Excel!).
Whatever comes after the ‘=‘ is the formula (in this case VLOOKUP)
Everything in the ‘( )’ are the arguments (each argument is separated by a comma)
Arguments NOT in [ ] are mandatory so you need to specify them of the formula will error
Arguments in [ ] are optional so if you don’t specify them the formula will still work
Be careful! Sometimes you don’t get the answer you want because you forgot to specify an optional argument.
III. REFERENCING
Referencing is when you refer to a cell in your Excel formula (in the example at the top, the reference is B2:B5. But there are different types of referencing:
Relative Referencing: this means that the cell reference will change as you drag the formula up/down or right/left.
Absolute Referencing: this means that you DON’T want the cell reference to change as you drag the formula up/down or right/left. In Excel, absolute referencing is represented with a $ (you can also hit F4 to cycle through the types of absolute references!)
References are super important because the most common reason my formulas error is because I forgot to reference properly. While they can be confusing, once you see the examples below it’ll make a lot more sense!
A2 means that you want the column and row to change as you drag the formula
$A$2 means that you want BOTH the column and the row to stay the same (in other words, you want it to always reference one specific cell no matter where the formula is on the sheet). This is a really common use for references!
$A2 means that you want the row but NOT the column to change as you drag the formula around
A$2 means that you want the column but NOT the row to change as you drag the formula around
Let’s use a modified version of the supplies example to illustrate.
In this example (that it is very simple), I only typed the formula in C5 and then copied it down. But because I used the absolute reference ($B$1), so it always referenced the cell that had the tax amount. So with absolute referencing, I can write the formula in only one cell and copy it to hundreds of rows or columns.
...
Now you know about the parts of a formula, reading a formula, and cell referencing. These basics are a good foundation so you can tackle more complicated things in Excel and even if you don’t, this information is often enough to use Excel simply. If something didn’t make sense in this, please send me an ask!
Although I make my own examples and write all the explanations myself, I do use sources to fact check myself. You can find those sources here: Parts of a Formula, Referencing, Overview of formulas.
part (1/??) of my excel series
#excel series#studyblr#joanna—studies#professional development#COVID19#learn something new#Business#heysareena#heysprouht#elkstudies#ellie studies psych#gloomstudy#werelivingarts#heypat#seoulightstudies#studycave#heystuhdees
147 notes
·
View notes
Text
went to my appointment, turns out the doc didn’t specify we were looking for ih just said I had headaches and they wanted an eye doc to look at it. unfortunately they had to dilate my pupils so I can’t really focus my eyes again, although the unfocusable band is much narrower than like, new years. still can’t read, but it’s whatever. it was a rainy cloudy day so I didn’t have to use the shitty sunglasses at least.
I kept running into problems on the sidewalks on my way there, like nearly tipping on curbs or broken cement. and a stretch of sidewalk was closed which I couldn’t see until after I crossed to that side of the street.
on my way home I went to the post office, someone stopped to say hello and we started chatting and they ended up coming along with me to the post office. some delusions of persecution and bald-faced weird-flirting, but it is what it is, otherwise pretty coherent to talk to and accepting of pushback when I pointed out something they said was kinda racist. they also pointed out to one of the employees while we were in the post office that the building was not super accessible, which was thoughtful of them. I’m so good at peopleing I can even be a people for the people “real” people won’t people for. :v
I had my backup battery with me, fully charged, so I felt comfortable going faster sometimes. it was raining almost the whole time so all my clothes and braces are wet.
I kinda wanted to get a patreon drawing done today, but that probably won’t happen since I can’t really see properly. better to just do a throwaway. I also need to get the valentines stickers relisted and test cut the sticker club stickers for this month, but I don’t know if my paper is flat yet and also tbh I’ve done enough today.
edit: okay it already didn’t start out as hard to focus as it was at new years, and it’s already distinctly improved over the course of like an hour. so maybe I can theoretically do a patreon drawing if I give it another hour or two. dunno if I will, but I could.
edit 2: another hour and I can pretty much completely see, and I forgot to write down that the not-locking problem happened with my left wheel this time.
edit 3: I forgot to write down they were also very receptive to me reminding them to wear their mask inside the post office (they’d had it down around their chin when we first encountered each other and we were walking and talking so I couldn’t see them, they’d actually already pulled it back up properly somewhere along the way)
1 note
·
View note
Text
The best way to Schedule Emails In Gmail For Sending At A Later Date
gmail login forgot password is free however you'll be able to go premium and unlock new options. The premium edition helps you to schedule more emails, ship repetitive emails which are despatched on a recurring schedule (hourly, each day, weekly, month-to-month or yearly), and you may are also entitled to technical help. The daily e mail sending restrict relies on the kind of your Google account. Gmail users can ship as much as 400 electronic mail recipients per day while GSuite for Work customers can electronic mail 1500 recipients per day. Eve loves her Television! She’s watched 587 titles in six months, all from her “Android Device” in Alabama. She watched three seasons of Trailer Park Boys over a single day in October. She consumed almost each day until 22nd March, when Netflix put her account “on hold” attributable to fee failure. You’ll simply must verify your e mail deal with after which enter a Product name proven to customers (such because the title of your web site). When you’ve accomplished these fields, click Continue. You’ve now successfully created a Gmail net utility! Now we have to see the complete details. On the last display screen, click I’ll do that later to go to the Credentials page. “Now you may see and click on attachments in your inbox before ever opening a thread. You can too hover over messages to do things like RSVP to a gathering invite, archive an e-mail thread, or snooze an e mail till the time is true,” stated Google. Too see how the previous Gmail compares to the new version, now we have posted screenshots of both under. Click on the photographs to enlarge them. On this case, the replies quantity to “Thank you” with a couple of different tones and intents. Sort Forward features similarly to how auto fill works in Google search. Google suggests what it thinks you would possibly mean to say as you kind something. All of it revolves around predictive textual content and dashing up the process to prevent time. That’s also the place the third characteristic comes into play, as effectively. Nobody can login to your account till they've the 2 step verification code. Enabling two steps verification doubles the safety layer of your Google Account. To allow this verification in your account observe the easy steps below. Go to “Privacy & Security” tab then find “Enable Two Steps Verification” there. Plus labelling has comparable rip-off potential, however some official use instances. But I have actually by no means wanted [email protected], and John Smith never wished [email protected]. Not only do Gmail customers not want these further addresses, most aren't even aware that they have these addresses. I’m sure my parents are unaware that they own an infinite set of electronic mail addresses. It's worth mentioning that Remember The Milk, a preferred activity and to-do listing supervisor, has each a Gmail browser add-on and a gadget in Gmail labs that replicate most of the functionalities of Tasks. This system is taken straight from Keith Rarick's Inbox Zero technique and is one of the best and simplest strategy I've seen to keep your inbox at zero and keep centered at work. By default, WordPress uses the PHP mail operate to send emails generated by WordPress or any contact plugin like WPForms. The most typical purpose for not getting emails is that your WordPress hosting server shouldn't be configured to use PHP mail function. Along with this, anti-spam efforts by electronic mail suppliers can impression your emails as nicely. You already know the feeling. That feeling when you want you might get a “read notification” or learn receipt in Gmail. You click on the ship button, and then wait. And wait. And keep ready. It seems like most of your working hours are spent ready for a response for this or that important e-mail. I take advantage of it to maintain track of Sales leads in order that I can group collectively all my conversations with a selected contact and easily remember the final time I adopted up with him or her. You'll be able to customise the workflow to suit your personal needs. Among the above options are still in Gmail labs, which means they are not but official options and are topic to termination at any time. These options have been labeled with "(L)". Labs, discover the specified lab and select 'Enable'. How else are you all using Gmail to extend efficiency and keep organized at work? What did I miss? Let me know in the comments! Of these few customers who've it enabled, 45% test it each day. In other phrases, they deal with it as an extension of their inbox. There's a false impression with many e mail entrepreneurs that the Promotions tab is mainly the spam folder, but that is simply not true. The common Gmail consumer appreciates having their valued promotional offers sorted properly in a unique folder. On common the Promotions Tab does have a barely decrease read price.
1 note
·
View note
Text
GSoC logs (June 5 –July 11)
July 5
DS Exam - 9:30AM.
Alternatives - If build not fixed by 8:30AM.
Reclone and commit all changes to new branch.
Get preview component done
Send the demo to mentors and then touch proto file.
Recloned. In the new clone, I made new changes. Everything works.
Turns out any write operation in the proto file is wrecking stuff. I navigated to the proto file in vscode and simply saved. This causes all the errors again.
Some import errors even though proto syntax are perfectly fine. Hmmm. protoc-gen-go: program not found or is not executable
I tried making the proto file executable with chmod +x. Still same issue. Hmmm.
That was stupid. Proto files aren’t supposed to be executable! -_- Where do I get these stupid ideas.
The error is actually referring to protoc-gen-go file. Saying that protoc-gen-go is not found or not executable. Not the proto file
I’m moving on to completing the preview component to send the demo before 7pm.
Preview component
Ipynb html. Axios get and render the htmlstring from response data in the iframe. Nop, v-html.
Serve html file from the http server for now.Wait, that's not possible.
Okay, maybe I should just use hello api for now. Since both request and response objects have string type properties.
This is embarrassing.
Okay, whatever.
Just fix this and look into it,
Okay, so I can’t represent an html string just like that as in python. With `` ..
Okay `` will do.
I’m starting to like golang. It looks ridiculous but also easy to understand? What’s going on?
July 6
Leads & Tries.
Try Samuel’s suggestion -
“Do you have protoc on your path?
sometimes VScode installs its own version of some tools on a custom $PATH - it could as well be that some extension is not properly initialized “
Interesting - I tried git diff on the proto file and this happens just by vscode saving it.
old mode 100644 new mode 100755
https://unix.stackexchange.com/a/450488
Changed back to 0644 and still the same issue in vscode.
Stupid girl, you just made the protofile executable yesterday and forgot to change it back. -_-
Read about makefile. Do as said. Annotations.proto forward slash path. ?? wtf?
Set gopath right! Permanently. !!! Okay, done. No need to set it everytime now. Hopefully.
Desperate attempts -
Edit proto file in atom. (Prepare to reclone ;_;)
Trying the same in vim ()
Text editor.
Okay, so nothing editor or ide specific.
Trying to change paths
Gopath was /home/anaswaratrajan/go .. changed it to /usr/local/go/bin
New error.
GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go github.com/golang/protobuf (download) package github.com/golang/protobuf/protoc-gen-go: mkdir /usr/local/go/bin/src: permission denied make: *** [Makefile:164: /usr/local/go/bin/bin/protoc-gen-go] Error 1
https://github.com/golang/go/issues/27187
sudo chown -R $USER: $HOME
Doesn’t feel right. But I just want this to get done. ;_;
The problem could be that I have multiple go distributions. After this is done, I need to clean this shit this weekend.
Okay, done chown. I own this shit!!! AAAa
Still permission denied! Shit. /usr/local/go not /usr/local/go/bin
Okay, changed it, but go env GOPATH echoing giving warning that GOROOT and GOPATH are same.
So from what I’ve read, gopath is the workspace, and goroot is the place where go is installed. Our makefile is trying to install and use the modules in GOPATH. Ie go dir in home. Okay, so my GOPATH was right before.
Final tries
* Follow the error trails. * Find out what exactly is happening when I save this file. 1. Okay, incase they don’t work out. Try to send the html string instead of “Hello ” string without changing proto file. 2. Since all ipynb files can have same css, try and send only the html elements. And do the css separately in frontend. 3. Stop Ctrl+Saving for no reason! Great, now I have to reclone ;_; and start over. 4. Okay, I was able to send a sample html string with the response. Without changin the proto file. 5. Here’s what I’m gonna do. 6. Send sample html string from hello service and render in the preview component. Pass the json string as name. Hahaha. Please, explain why you had to do the same. 7. I did exactly as above. I feel like an imposter now. Screw it. 8. Alright, I have my bigbang hyungs to support me. 9. I’m gonna embed python scripts by tonight. Update: that was overoptimistic. 10. So I have the nbconvert python script to generate basic html strings. 11. I should also remove those comments in the html. 12. So we’re using the less performance option since we don’t need much memory in the first place. Using python c api.
July 7
Learned one or 2 things about embedding python. https://github.com/ardanlabs/python-go/tree/master/py-in-mem
So I need python3.7. Bc go-python3 only supports python3.7. But there’s a workaround given. So I should try that
Tries
Go-python3 , python 3.8, workaround go get github.com/christian-korneck/go-python3 But a bunch of errors occurred.
Python 3.7 install
C-like usage from golang - low level stuff
https://blog.filippo.io/building-python-modules-with-go-1-5/ goodread. But that’s not what I need.
Let’s look at Ardan’s lab way.
https://www.ardanlabs.com/blog/2020/09/using-python-memory.html
This is a bit more challenging but more understandable.
This is the way.
I should start with this right after fixing the make issue.
Back to build fixing
Do as samuel suggested. - no luck.
What I know so far. The issue is rooted with golang or protobuf or sth related. Since the issue is there for all the text editors including vim.
I found sth weird -Which go => /usr/local/go/bin/goWhen it gives /usr/local/bin/go to this dude https://stackoverflow.com/a/67419012/13580063
Okay, not so weird.
The interview went okay. They use photogenometry to generate those 3d maps out of their drone imagery. Their products sound interesting. They need frontend engineers to work on their platform. The interface currently looks almost like google maps. But 3d. Cool. I actually used the phrase.. “..I’m still in my 20s.. Don’t wanna die.. So can’t move to Bengalore anytime soon”
Not photogenometry. Photogrammetry. Also used by some old mars rovers. Wait, no it was sth else. I remember Shreyansh mentioning it. I wonder what all they’re planning for the dragonfly.
Focus. It’s been some days with this issue, you should get help.
Asked around a bunch of people on discord. No luck.
July 8
Let’s dig in.
Tries
1. Reinstall golang#2. https://stackoverflow.com/a/67419012/13580063 ? Nop.#3. See protoc installation details. Read more about protoc, protobugs
https://developers.google.com/protocol-buffers/docs/reference/go-generated#4. Read more about golang ecosystem - 30m and see if **which go **path is weird. 3. Also found this https://github.com/owncloud/ocis-hello/issues/62 Nop. 4. Let’s go with the error trails. 5. Wait, did I just graduate today. Oh no. Just like that. 6. Okay, grind.
Make generate is giving this.
GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go GO111MODULE=on go get -v github.com/micro/protoc-gen-micro/v2 GO111MODULE=off go get -v github.com/webhippie/protoc-gen-microweb GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc-gen-go: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --go_out: protoc-gen-go: Plugin failed with status code 1. make: *** [Makefile:176: pkg/proto/v0/hello.pb.go] Error 1
Then I try echo $GOPATH and It’s empty. go env GOPATH is right
So I set the GOPATH
export GOROOT=/usr/local/go export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN
Now, I get this
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc-gen-go: invalid Go import path "proto" for "hello.proto" The import path must contain at least one forward slash ('/') character. See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information. --go_out: protoc-gen-go: Plugin failed with status code 1. make: *** [Makefile:176: pkg/proto/v0/hello.pb.go] Error 1
Did this https://github.com/techschool/pcbook-go/issues/3#issuecomment-821860413 and the one below and started getting this```
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --micro_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --microweb_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --swagger_out=logtostderr=true:pkg/proto/v0 hello.proto protoc-gen-swagger: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --swagger_out: protoc-gen-swagger: Plugin failed with status code 1. make: *** [Makefile:194: pkg/proto/v0/hello.swagger.json] Error 1
July 9
Now trying to read this from the error https://developers.google.com/protocol-buffers/docs/reference/go-generated#package
option go_package = "github.com/anaswaratrajan/ocis-jupyter/pkg/proto/v0;proto";
Tried this, new issue
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --micro_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --microweb_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --swagger_out=logtostderr=true:pkg/proto/v0 hello.proto protoc-gen-swagger: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --swagger_out: protoc-gen-swagger: Plugin failed with status code 1. make: *** [Makefile:194: pkg/proto/v0/hello.swagger.json] Error 1
Okay, so proto-gen-swagger is not in gopath as expected. So this isn’t working.
$(GOPATH)/bin/protoc-gen-swagger: GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2
Instead of protoc-gen-swagger, there’s protoc-gen-openapiv2. So I replace protoc-gen-swagger from last line in the makefile to the executable in the path.https://grpc-ecosystem.github.io/grpc-gateway/docs/development/grpc-gateway_v2_migration_guide/
Turns out they rename protoc-gen-swagger to protoc-gen-openapiv2
Oooo.. I just found out, option go_package = "github.com/anaswaratrajan/ocis-jupyter/pkg/proto/v0;proto";
This just made things weird. New directory github.com/anaswa... inside proto/v0/
So go_package path is messed up.
Just replacing swagger binary names in makefile lets you generate the proto files at github.com/anas… dir
Let’s try fixing the go_package path and then try to generate the annotations.proto and the openapiv2 files (the grpc gateway files)
Wait, you don't generate them.
option go_package = "./;proto";
This is the right way.
So yea, I’m able to generate the go-code now. But make is still failing and I should sleep now.
July 11
Ownclouders already tried to work on it. But for some reason, they didn’t make the changes. Why?
Look into this. Why they didn’t continue doing this.
https://github.com/owncloud/ocis-hello/issues/91
So what exactly is micro-web service? This protoc-gen-microweb is a protoc generator for micro web services. And it's generating this hello.pb.web.go
What just happened? New error/ Make generate gives
`GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 go generate github.com/anaswaratrajan/ocis-jupyter/pkg/assets panic: No files found goroutine 1 [running]: main.main() /home/anaswaratrajan/go/pkg/mod/github.com/!unno!ted/fileb0x[@v1](https://tmblr.co/mkYynE1Axr-EFCSIQIAtheA).1.4/main.go:101 +0x2765 exit status 2 pkg/assets/assets.go:12: running "go": exit status 1 make: *** [Makefile:83: generate] Error 1
Read more about the protoc generators used here.
0 notes
Text
GSoC logs (June 5 –July 11)
July 5
Reclone and commit all changes to new branch.
Get preview component done
Send the demo to mentors and then touch proto file.
Recloned. In the new clone, I made new changes. Everything works.
Turns out any write operation in the proto file is wrecking stuff. I navigated to the proto file in vscode and simply saved. This causes all the errors again.
Some import errors even though proto syntax are perfectly fine. Hmmm. protoc-gen-go: program not found or is not executable
I tried making the proto file executable with chmod +x. Still same issue.
Proto files aren’t supposed to be executable
The error is actually referring to protoc-gen-go. Saying that protoc-gen-go is not found or not executable. Not the proto file.
Moving on to completing the preview component.
Preview component
Ipynb html. Axios get and render the htmlstring from response data in the iframe. Nop, v-html.
Serve html file from the http server for now. Wait, that's not possible.
Okay, maybe I should just use hello api for now. Since both request and response objects have string type properties.
July 6
Leads & Tries.
Try Samuel’s suggestion -
“Do you have protoc on your path?
sometimes VScode installs its own version of some tools on a custom $PATH - it could as well be that some extension is not properly initialized “
Interesting - I tried git diff on the proto file and this happens just by vscode saving it.
old mode 100644 new mode 100755
https://unix.stackexchange.com/a/450488
Changed back to 0644 and still the same issue in vscode.
I just forgot I made the protofile executable yesterday and forgot to change it back. Wasted like an hour on it.
Read about makefile. Do as said. Annotations.proto forward slash path. ??
Set gopath Permanently.
Edit proto file in atom. (Prepare to reclone ;_;)
Trying the same in vim ()
Text editor.
Okay, so the issue isn't editor or ide specific.
Trying to change paths
Gopath was /$HOME/go .. changed it to /usr/local/go/bin
New error.
GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go github.com/golang/protobuf (download) package github.com/golang/protobuf/protoc-gen-go: mkdir /usr/local/go/bin/src: permission denied make: *** [Makefile:164: /usr/local/go/bin/bin/protoc-gen-go] Error 1
https://github.com/golang/go/issues/27187
sudo chown -R $USER: $HOME
Doesn’t feel right.
The problem could be that I have multiple go distributions. After this is done, I need to clean this shit this weekend.
Still permission denied
$GOPATH was supposed to be /usr/local/go not /usr/local/go/bin
Okay, changed it, but go env GOPATH is giving warning that GOROOT and GOPATH are same.
So from what I’ve read, gopath is the workspace (where the libraries we need for the project are installed), and goroot is the place where go is installed(Home to the go itself). Our makefile is trying to install and use the modules in GOPATH. Okay, so my GOPATH was right before.
Final tries
Follow the error trails.
Find out what exactly is happening when I save this file.
Okay, incase they don’t work out. Try to send the html string instead of “Hello ” string without changing proto file.
Since all ipynb files can have same css, try and send only the html elements. And do the css separately in frontend.
Okay, I was able to send a sample html string with the response with the same api. Since response message type was string itself..
Rendered the HTMLString in the preview component.
I’m gonna embed the nbconvert python script by tonight. Update: that was overoptimistic.
So I have the nbconvert python script to generate basic html strings.
I should also remove those comments in the html.
So we’re using the less performance option of keeping duplicate copies of the data in both go and python since we don’t need much memory in the first place.
Read about python c api.
July 7
Learned one or 2 things about embedding python. https://github.com/ardanlabs/python-go/tree/master/py-in-mem
Following this https://poweruser.blog/embedding-python-in-go-338c0399f3d5
So I need python3.7. Because go-python3 only supports python3.7. But there’s python 3.8 workaround in the same blog. go get github.com/christian-korneck/go-python3 Failed with a bunch of errors.
https://blog.filippo.io/building-python-modules-with-go-1-5/ goodread. But that’s not what I need.
https://www.ardanlabs.com/blog/2020/09/using-python-memory.html
This is a bit more challenging but more understandable.
He's trying to use in-memory methods, so both go and python can access the data. No duplication. Since the guide is more understandable and uses python3.8 itself, I should give it a try.
I should start with this right after fixing the make issue.
Back to build fixing
Do as samuel suggested. - no luck.
What I know so far. The issue is rooted with golang or protobuf or sth related. Since the issue is there for all the text editors including vim.
I found sth weird -Which go => /usr/local/go/bin/go. When it gives /usr/local/bin/go to this dude https://stackoverflow.com/a/67419012/13580063
Okay, not so weird.
July 8
Reinstall golang#2. https://stackoverflow.com/a/67419012/13580063 ? Nop.
See protoc installation details.
Read more about protoc, protobugs https://developers.google.com/protocol-buffers/docs/reference/go-generated#4. Read more about golang ecosystem - 30m and see if **which go **path is weird.
Also found this https://github.com/owncloud/ocis-hello/issues/62 Nop.
Make generate is giving this.
GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go GO111MODULE=on go get -v github.com/micro/protoc-gen-micro/v2 GO111MODULE=off go get -v github.com/webhippie/protoc-gen-microweb GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc-gen-go: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --go_out: protoc-gen-go: Plugin failed with status code 1. make: *** [Makefile:176: pkg/proto/v0/hello.pb.go] Error 1
echo $GOPATH is empty. go env GOPATH is giving the right path.
export GOROOT=/usr/local/go export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOROOT:$GOPATH:$GOBIN
Now, I get this
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc-gen-go: invalid Go import path "proto" for "hello.proto" The import path must contain at least one forward slash ('/') character. See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information. --go_out: protoc-gen-go: Plugin failed with status code 1. make: *** [Makefile:176: pkg/proto/v0/hello.pb.go] Error 1
Did this https://github.com/techschool/pcbook-go/issues/3#issuecomment-821860413 and the one below and started getting this
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --micro_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --microweb_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --swagger_out=logtostderr=true:pkg/proto/v0 hello.proto protoc-gen-swagger: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --swagger_out: protoc-gen-swagger: Plugin failed with status code 1. make: *** [Makefile:194: pkg/proto/v0/hello.swagger.json] Error 1
July 9
Now trying to read this from the error https://developers.google.com/protocol-buffers/docs/reference/go-generated#package
option go_package = "github.com/anaswaratrajan/ocis-jupyter/pkg/proto/v0;proto";
Tried this and
GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --go_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --micro_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --microweb_out=pkg/proto/v0 hello.proto protoc \ -I=third_party/ \ -I=pkg/proto/v0/ \ --swagger_out=logtostderr=true:pkg/proto/v0 hello.proto protoc-gen-swagger: program not found or is not executable Please specify a program using absolute path or make sure the program is available in your PATH system variable --swagger_out: protoc-gen-swagger: Plugin failed with status code 1. make: *** [Makefile:194: pkg/proto/v0/hello.swagger.json] Error 1
Okay, so proto-gen-swagger is not in gopath as expected. So this isn’t working.
$(GOPATH)/bin/protoc-gen-swagger: GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2
Instead of protoc-gen-swagger, there’s protoc-gen-openapiv2 executable. So I replaced protoc-gen-swagger from last line in the makefile to the executable in the path.
https://grpc-ecosystem.github.io/grpc-gateway/docs/development/grpc-gateway_v2_migration_guide/
Turns out they renamed protoc-gen-swagger to protoc-gen-openapiv2
option go_package = "github.com/anaswaratrajan/ocis-jupyter/pkg/proto/v0;proto"; wasn't the right path.
There's a new directory github.com/anaswa... inside proto/v0/
So go_package path is messed up.
Just replacing swagger binary names in makefile lets you generate the proto files at github.com/anas… dir
Let’s try fixing the go_package path.
Wait, you don't generate them.
option go_package = "./;proto";
This is the right way.
So yea, I’m able to generate the go-code now. But make generate is still failing. The swagger file is still not generated. July 11
Ownclouders already tried to work on it.
https://github.com/owncloud/ocis-hello/issues/91
So what exactly is micro-web service? This protoc-gen-microweb is a protoc generator for micro web services. And it's generating this hello.pb.web.go
New error/ Make generate gives
`GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-openapiv2 go generate github.com/anaswaratrajan/ocis-jupyter/pkg/assets panic: No files found goroutine 1 [running]: main.main() /home/anaswaratrajan/go/pkg/mod/github.com/!unno!ted/fileb0x[@v1](https://tmblr.co/mkYynE1Axr-EFCSIQIAtheA).1.4/main.go:101 +0x2765 exit status 2 pkg/assets/assets.go:12: running "go": exit status 1 make: *** [Makefile:83: generate] Error 1
Read more about the protoc generators used here.
0 notes
Text
faq (edition 2020-2021)
Table of contents
General rules Doubts and concerns (before you sign up) Creating and publishing gift
General rules
Is a NSFW/R18 content allowed?
No, sorry. Not everyone is comfortable with such a content, plus we have no way to confirm peoples’ ages and we don’t intend on exposing minors to this kind of content.
What else is off-limits?
Romantic relationships between minor and adult characters or family members (so minor/adult ships and incest). Some possibly trggering things could slip our minds at the moment though so if you have any concerns, please feel free to message us!
What can I make?
You can either draw a fanart or write a fanfic. There are no other options at this moment, because determining the minimum for things such as playlists and edits is difficult. Maybe it will change in the future, if there are next editions of this event!
I changed my URL. What should I do?
Just send us an ask, email, message on Tumblr or any other social media (we linked them in our about!) with your previous and current URL. We’ll inform the person making your gift about the change.
I can’t find the URL of the person I’m making gift for. It shows me the URL is incorrect. What do I do?
Send us an ask, email, message on Tumblr or any other social media (we linked them in our about!). It is possible we didn’t send you an information about the change yet, or the person you’re making the gift for forgot to inform us about them changing their URL.
Can I tell the person I’m making the gift for, that it’s me?
Nope. Keep it a secret until the February 14th, when it’s a time for a big reveal.
Can I message the person I’m making the gift for to get to know them and their preferences better?
You can send them anonymous asks if they have Tumblr and enabled anon asks or anonymous asks on CuriousCat if they have one, but please, keep your identity and details about your gift a secret.
Doubts and concerns (before you sign up)
Is it a stricly shippy event?
No! We appreciate all the kinds of relationships in this house! It can be shippy, but it can be 100% platonic, too!
Do I have to make a work centered around Valentines?
No, if the person you’re making gift for didn’t include it in their prompts. You can make a Valentine-centered work if you’re stuck and don’t have any inspiration tho. You can use the prompts:
❀ the first date or the perfect date if they asked for romantic relationships
or
❀ found family or all that glitters is not gold (as a methaphor for “not all love is romantic”) for platonic relationships instead, then.
Do I have to create a work for a pairing I don’t like?
Nope! We’ll match you with someone basing on relationships, favourite characters and the prompts/likes. We’ll do our best to make sure everyone is happy!
What if somebody drops out and someone won’t get a gift?
Hopefully some people will want to be a Pinch Servers - people who’ll make an additional gift in place of the person who dropped out. We’ll try our best to guarantee no one will be left without a gift.
How can I contact you and how will you contact me?
You can contact us through Tumblr (we’ll answer asks on the blog), various social media and email (just email us back once we send out the match-ups), but we will always contact you through your preferred means of contact. There is a question in the sign-up form where you can specify how you want us to contact you.
I’m signing up through Tumblr. Do I have to sign up with my main blog?
No, you can sign up with your side-blog, too! Just add your main blog’s address in the brackets next to your side-blog’s URL in the sign up form, so we know it’s you.
Creating and publishing gift
I got informations about the person I’m making gift for! May you remind me what exactly the sections are? Do I have to follow all of them?
You don’t have to follow all of them! Only the favourite romantic/platonic relationships and prompts (with a small exception mentioned above in the “Doubts and concerns (before you sign up)” section and explained below once again) are mandatory to follow! Obligatory thing to do is also to avoid things listed in the triggers section and possibly not using the things from dislikes field.
Favourite tropes are there to guide you in the right direction. They help to gauge general likes of the person you're making the gift for. You can use them, but you don't have to!
Other romantic relationships are optional. You can use them as background relationship, but you don’t have to.
Little Things are small details and headcanons that aren’t exactly prompts, but would make the person you’re making a gift for smile. They can be general or linked with one of the things they listed in the “Prompts” section. Little Things™ can be only mentioned in passing or used somewhere in the background, be an important part of the work or not included at all, it’s entirely up to you.
Favourite characters are greatly appreciated! They’re usually part of the pairing anyway.
Triggers are absolute no-no, as I explained above.
Also remember that in dislikes you could list (besides characters, notps, AUs and other things) also the (possibly exagerated) tropes or headcanons that became widely accepted fanon, but not everyone likes!
Do I have to follow the prompts the person I’m making the gift for gave me?
It’s highly recommended. But if you’re stuck and don’t have any inspiration, you can use the prompt the first date or the perfect date or found family or all that glitters is not gold (as a methaphor for “not all love is romantic”) instead. Don’t make up your own prompts, please.
How does my gift should look like? What are minimum requirements?
If you’re creating an art: don’t create a small piece.
If you’re making digital art, the minimum is 1600x1200 pixels.
If you draw traditionally, the minimal size of paper sheet is A4, make sure the scan is in high quality (if you can’t make a scan - make sure the photo is in high quality too, sharp and with good lighting).
The sketches are not allowed, the piece has to be finished - either colored or monochromatic.
If it’s multi-part comic, publish the first part between February 14th-21st and finish it later.
If you’re writing fanfiction: at least 1500 words.
It can be a collection of drabbles, too, but the word count for all the drabbles in total has to be at least 1500 words, too.
It can be an oneshot or multichapter, but please, if you’re writing a multichapter, publish the first chapter between February 14th-21st and finish it.
Are we allowed to include profanity in the fics?
Sure! Just put a warning (regardless if it will be “literally one f-word” or “[character A] swears a lot” or something else), just in case.
It’s not allowed to write NC18. That is rate E on AO3. What about T and M? Not too much mature content of course but like… can we briefly mention it? Or go into it smoothly? For example are we allowed to write detailed kissing/ little bit of make out?
We think make-out sessions and detailed kissing are okay as long as that’s where it ends.
Can I make more than one gift?
Of course!
When we exchange gifts are we just going to send them to our assigned person or are we going to send them to you first oooor are we going to do it another way?
It’s up to you, to be honest! You can:
a) submit your gift here and we will publish it when the time comes (you can find recommended formating in the question below),
b) post it on your own blog (you can find recommended formating in the question below),
c) post only the link to it - for example if you’re writing fanfiction and you publish it on AO3, FF.net or whatever platform you use,
d) if you decided to post your work outside of Tumblr, you don’t even have to make a separate post to share it here, you can also send the link in private message.
There are only two rules regarding posting the gift:
1. If you’re posting it outside of Tumblr, don’t do it before the posting date (so you can’t post it for example February 10th and then share the link on February 14th. You should post it Febraury 14th (or later, but the deadline is February 21st) and then share the link right away. If you know you’ll be busy then, consider publishing it on Tumblr first (because you can queue it), and only then sharing it on the outside platform later, too).
2. If you’re not tagging this blog using “@” nor using the tags (you can find more in detail explanation in the question below) or you’re using the way from the point d), send us a message that you did share your gift (more details below).
Is there a special format I should use while posting my gift?
Not really. Just make sure that you tag the person you’re making the gift for by using the “@” and, if you want us to reblog it to this blog, tag your work with #hqvalentineexchange or #hqvalex2021 in the first five tags. Just remember - Tumblr is sometimes a meanie and doesn’t show posts in the tag, so if you tagged your work properly and we didn’t reblog it, shoot us an ask or a message to one of the mods. You don’t have to link to the event blog, but it would be greatly appreciated.
Though if you’re writing a fic - you can include a pairing, rating and word count, and consider putting the story under a read more for convenience of others. You also should include the things that can potentialy trigger others, even if the person you’re making the gift for is fine with such content (for example - the person you’re making the gift for asked for super angsty and dramatic zombie apocalypse au with a happy ending. You should warn others there’s violence and blood, and maybe gore, even if your giftee is absolutely fine with it).
I published the gift! Is that all?
Well, yes! Just one more thing - if you have sent the gift or the link to it in private message or didn’t @ this blog or didn’t use the tags we recommended in the question above, please, let us know via email, ask or private message on one of our social media that you did share the gift, so we can keep track of if everyone got their present!
Feel free to send us an ask, if you still have any questions!
10 notes
·
View notes
Text
Baccano Rewatch Rambling Commentary
So. due to having a long and fun talk about Baccano at MCM Manchester, I felt like rewatching the anime and OH BOY I forgot how the first episode goes, so I decided I might as well do (spoilery) commentary on here as I rewatch. Don’t expect anything written nicely or concisely, I do the numberwang, not the wordidoo.
This is the first 3 episodes and because I ramble like hell and I do reference the books, it’s a “Read More”. I apologize in advance, but “Short Form” has never been a thing I can manage. This is me essentially writing down what I say to myself while watching it. I added the formatting later, but I want to keep the rambling as in tact as possible, partly out of laziness and partly out of interest in looking back later and seeing what was going through my head.
Episode 1
I forgot just how much time is spent with the discussion between (Christ me, you literally saw this half an hour ago, how have you already forgotten her name!?) *Carol* (Thanks Baccano wiki, and by extension most likely thanks Rev) and Gustav St Germain. Looking back after reading the books, I like the fact that they used the paper explosion scene and would have loved to see that reappear later had they continued the anime. That would’ve been a nice scene of the anime doing a foreshadow of a scene to come while not making it blatantly so, and that final context would’ve probably put an extra spin on things. (Oh boy, it’s really clear I can’t write short sentences…)
The scenes foreshadowing Book 6 (Was it? I lose track. Either way, the Mist Wall book.) really hurt me. I’d have loved to see Christopher, Adele, (Heck, ALL THE HOMUNCULI) and Maria, along with seeing Ronnie just be Ronnie and fuckin’ be extra as hell with the help of essentially Omnipotent powers.
The sequence initially showing Firo... Y'know, I remember this properly, but I have to say I prefer the book version? In the books, it’s before he becomes immortal and he avoids getting hit by the knife in the first place. I feel that while how this scene was rewritten means it’s good for revealing his immortality, the books help show that he is rather suspicious as a character, which works well considering his discomfort from the fact that even after becoming immortal he is careful due to the knowledge that there *is* a way to kill him. Then again, I’m not a literary master and the change probably works considering the more carefree Firo you see in the show.
I like the setup for the Flying Pussyfoot (even if I’m sad the stuff being called in doesn’t pay off due to them not using Vino in the 1932 arc that *should* be Drugs and Dominoes). What you know from the first episode is:
that the train’s been swapped out do to an “accident”
there’s an assassin on there,
there’s immortals on there,
there’s bombs on there,
a bunch of corpses and a murderous guy with no arm and a woman he’s talking of killing litter the tracks (On an off hand note, I thought that Ladd actually killed Lua there when I initially watched Baccano),
and that the people that are leaving the train are the thieves mentioned earlier (who if you pay attention are probably immortal),
the immortal child (Funny how early it’s revealed that Czes is immortal in comparison to the books),
and a group of people of which the middle one seems to be in great pain.
You also know of an unknown figure reading an unknown message about finding someone, but that’s rather late in the story.
Point is, you are swiftly shown a lot of information you probably won’t piece everything together from, but will help give you one specific idea: Something bad happened on the Flying Pussyfoot and that (probably) included the supernatural.
Episode 2
Okay, I’ll now be writing as things happen, so I might remember names this time! And before I start, let me say this at least once. “Hah! Flying Pussyfoot is a silly name!”
I like the fact they left in the couple where the woman just calls stuff in advance.
I have to say, I am love with Isaac and Miria’s logic. “If we mine, we’re stealing from the earth!”. Along with that, the story of them being shouted at for panning for gold in other people’s land is something I want to hear more about. I’m being reminded that I damn well wish I knew more about Japanese Mythology to be able to directly pinpoint where Isaac went wrong.
Oh, and the letter from Ennis. I like how this directly implies than Ennis is not actually human without going “SHE’S A HUMONCULUS, NOT HUMAN” and then quickly makes you forget about that by having I&M start talking about this clearly means she wants a brother, rather than there having been previous people before her who were destroyed before she was created.
(Oh shit, this is gonna get looooooooong, I haven’t got past the I&M scene yet). This is followed by perfectly showing what I&M are like, by having them figure out how do to a train robbery. i.e not how you actually do one. And then I&M go to the train station, move past the Lemures, and then as they talk about the “Orchestra”, the camera zooms in on Rachel. If only the Dub hadn’t specified Vino’s gender, people might’ve thought she was Vino, that’s how the books spun it anyway. And then we get to Claire, who starts talking before coming on screen and has a conversation with Tony just before Tony gets murdered. It would have been nice if the other conductor got a couple lines here, but this does set up Claire’s anger at Tony being dead later on nicely.
Meanwhile, best panicking wreck of a leader, Jacuzzi Splot, explains what his group are doing on the train, namely stealing something. Then the anime moves focus from Nice to Czes, nicely implying that their aims/jobs are related. I’ll stop listing what happens now, but OH JEEZ I LOVE THE CUTS AND PANS AND FOCUS CHANGES. I don’t know much about cinematography, but this feels good to me.
So to abridge a conversation: Nice: Why don’t you ask them? You might make some new friends. Jacuzzi: (Panics a bit) I don’t wanna. Nice then persuades Jacuzzi to go talk to Isaac and Miria. Not much meaning, but I just wanted to say, SAAAAAAME Jacuzzi. If not for @thingsarenotwholesome taking the place of Nice, I wouldn’t talk to a lot of people. but yeah, then Jacuzzi starts crying because he thinks he’s nothing but some delinquent. Props to I&M for supporting him in the only way they know: By being lovely, funny and acting ridiculously.
Some day Narita, I’d like to see how much of this is them faking it to avoid a bad topic and how much of it is their own joy in insanity. I just can’t accept “They’re a bit mad” with no other details, because even if Isaac routinely gets stuff wrong, he’s weirdly well read. I also love the fact that Jon and Fang spend their time calling out bullshit and commenting on what’s happening. It gives a nice contrast of the straight man, while not overpowering I&M and also properly showing what their influence on Jacuzzi is.
I like that the voice acting makes it clear that Czes struggled to say his own name. Clearly from the immortal thing. Good Dub there.
The Lemures in general feel much cultier than when I was reading the books. Perhaps because in the books the individual greed for immortality in the members is made clear before the operation starts, whereas this has them speak of their unwavering loyalty (yeah fucking right) to Huey Laforet, while the Conductor preaches about how this is all for the sake of freeing their “Glorious Leader”. Shame there’s a Claire on board.
Episode 3
And we start with poor Eve Genoard looking for Dallas, too bad some other poor person has him. [Edit Note: Look, you can’t expect me to remember every detail of the books perfectly, I barely remember what I had to eat most days]
I love the Daily Days and their information based business model. The Runorata Goons just got to experience information based capitalism.
Well, I might have to source the music playing while Lua and Ladd are dancing. This is also the first scene where Lua doesn’t seem to only be some poor girl who was forced into something by Ladd, but someone who actually wants to be with Ladd.
I love Randy and Pecho, those glove burning fools. I’m also starting to realise how damn good this show is at giving you information in off-hand comments. From their short conversation we know they’re friends with Firo and that there’ll be a party, while also starting the fire that kickstarts the events of the Rolling Bootlegs.
Similarly, the anime then goes on to show that Firo is joining the Camorra as a Capo and that I&M are in town at the time. This is also why I’m writing so much, BECAUSE THEY MAKE SUCH GOOD USE OF THE TIME GIVEN. This reminds me though. Narratively, in the books, the hobo attempting to stab Firo happens just before the hat shop. I damn well wish we could properly place that scene somewhere chronologically in the show. It could literally any time still during the depression after Firo becomes immortal.
The fight between Firo and Dallas' Gang really does show the fighting talent Firo has in an impressive way, which again makes Firo getting cut in episode 1 more frustrating.
And here is the first big change to Rolling Bootlegs! Firo does not have the time nor the bottles to swap about his wine with the immortality potion for the heck of it. I'm not sure how I feel about this change, but I will commend the 2016 Manga for keeping to the books on this.
And then Jacuzzi finds the two corpses in the Conductors Wagon, which is surprising when you’re first watching considering we *know* the murderous conductor was using a gun, not sawing off people's faces.(Goddammit it Claire, kill cleaner) You could explain the second corpse as being the white suit we see get the uniform in the second episode, but if you’re looking at the corpses, the body with the face torn off is the one that looks like the Young Conductor, not the Lemure Conductor. This isn’t exactly important considering it’s revealed later, but i like that the detail can be seen. Hey, this anime is doing a better job at the Mystery genre than BBC’s Sherlock!
And at the end, with the faceoff in the Dinner Wagon, I'm calling it a night.
Well, I'll be posting this in the morning evening after as I'll be doing some formatting at my PC tomorrow, but it's midnight and I'm rather tired after MCM Manchester.
#Baccano#Rambling Commentary#Baccano EP1-3#At least I'm learning to text edit on Tumblr#Book Spoilers
9 notes
·
View notes
Text
Git Catastrophes and Tips to Avoid Them
In this post, I'd like to highlight some git features that might be less used/known, but can end up saving your @$$ when things go south in the codebase. Fortunately, it is really hard to irrevocably mess something up with git, as long as you have the .git hidden folder in your project intact!
Let’s discuss...
amending,
reverting multiple commits (or even merges),
and proper housekeeping.
Git Amend & Force-Push Shenanigans
Sometimes you end up in a situation when you need to amend a commit to add further changes to it, either because you forgot some important things, or due to company git policies.
$ git commit --amend --no-edit
Amending is usually simple, but if you aren’t careful, it can be a source of some headache, as this operation alters the git history. If you amend a commit that has already been pushed to the remote, you may only use force-push – git push -f – to submit your changes. This way you can potentially edit other peoples' work, and even push directly to a branch, skipping pull request and code review.
Let me share my horror-story about amending:
At one evening, I was sitting in the office completely alone, as all of my colleagues left for home already. We did some code reviews before, where I changed branches back-and-forth and kind of lost track of where I have ended up. I un-stashed my changes with git stash apply to continue with an important fix I was working on for the next day. I had a commit already on my fix branch pushed to the remote, and we had a policy to only submit one commit to pull-request, so I was looking at a history rewrite already. As it was pretty late and I was eager to head home, I chose to just amend the commit to what I assumed was my other commit and force push it to origin. But it turned out I was on our development branch, so I amended the last successfully merged commit on it. I sat there scratching my head for a while.
How can one fix such a mistake, and have the merge commit restored?
It turns out it's not that complicated as it may sound at first. First of all, we should forget about git log - it does not contain enough information for us to go with, and check the git reflog instead. It will tell us what happened exactly in our local repo:
$ ~/ git reflog # d0d4939 (HEAD -> master) HEAD@{0}: commit (amend): This is a very important feature # d1b3026 (feature/very-important-feature) HEAD@{1}: merge feature/very-important-feature: Fast-forward 85da11f (fix/minor-fix-to-cool-feature) HEAD@{2}: checkout: moving from feature/very-important-feature to master d1b3026 (feature/very-important-feature) HEAD@{3}: commit: This is a very important feature 85da11f (fix/minor-fix-to-cool-feature) HEAD@{4}: checkout: moving from master to feature/very-important-feature 85da11f (fix/minor-fix-to-cool-feature) HEAD@{5}: merge fix/minor-fix-to-cool-feature: Fast-forward 2d87747 (feature/my-cool-feature) HEAD@{6}: checkout: moving from fix/minor-fix-to-cool-feature to master 85da11f (fix/minor-fix-to-cool-feature) HEAD@{7}: commit: Resolved this minor issue with the coolest feature ever 2d87747 (feature/my-cool-feature) HEAD@{8}: checkout: moving from master to fix/minor-fix-to-cool-feature 2d87747 (feature/my-cool-feature) HEAD@{9}: merge feature/my-cool-feature: Fast-forward adbfc15 HEAD@{10}: checkout: moving from feature/my-cool-feature to master 2d87747 (feature/my-cool-feature) HEAD@{11}: commit: Implemented this great feature to my app adbfc15 HEAD@{12}: checkout: moving from master to feature/my-cool-feature adbfc15 HEAD@{13}: commit (initial): initial commit
The reflog contains way more useful information than git log. A new entry is created whenever a branch update happens, including branch changes, merges, resets, and commits, even tagging amends and using the stash. We can thus pick where to go back easily:
$ ~/ git reset --soft d1b3026
d1b3026 is the short hash reference to the state before the amend happened. I chose soft reset, to preserve the changes I made, as I would like to commit them later properly to my fix branch. Instead of the hash, I could have also used the head position (HEAD@{1}) and the result would have been the same. Soft reset allows me to keep the changes staged for commit, a minor convenience compared to the default mixed mode, which retains changes as un-staged, so I'd have to git add <file names> them again. Hard reset would have done me no good of course, as that discards all the changes.
Now we can just git stash the changes, force-push the restored history to the remote, switch to the fix branch to un-stash and commit the changes.
Reverting multiple git commits, including merges
It’s story time again!
One of my colleagues discovered that there was an issue with a rather important feature on his project the other day. He quickly ruled out trivial things like typos and such, and as time was tight, extensive digging in the code was not really an option. The last commit known to be clean was created quite some time ago, and everything has been pushed to the remote already. This meant that the other developers probably already had the faulty piece of code checked out. Fortunately, most of our work was separate from the other teams, but we wanted to make sure we resolve the situation as painless as possible. We took a look at our options.
Using git reset HEAD@{34} could take care of the problem for us - it points the HEAD to the commit we specified and discards or keeps the changes since then as desired, but it would also alter the git history by actually removing the commits. History changes would then result in a mismatch with the remote, meaning we could only use force-push when submitting. Force pushing to the working branch is rather rude, and such an alteration would probably have caused a bunch of conflicts and some confusion for the other team.
We settled on reverting the suspected commits instead. When reverting, git creates a new commit undoing the original commit's changes, and then we can add it to the history. This keeps the normal flow and usually results in fewer conflicts when another contributor pulls the code later. Reverting is pretty straightforward in itself. We had to choose whether to create separate revert commits for each commit by simply calling git revert <hash>, or keep the changes they introduced as un-staged by adding the --no-commit option and commit them later. Should you go with the latter, be aware that you will probably have to resolve some conflicts along the way, as git can have difficulties merging the reverse changes! We tried --no-commit first, but it turned out to be quite ugly, so after a git revert --abort, I opted for the separate commit for each reverse option.
Dealing with merge commits
We soon hit another issue - there were merge commits nestled in-between 'regular' commits. The problem with these, as it turned out, is that git doesn't know which branch to follow backwards.
$ git revert 1586b43..4767fcd error: Commit 32f2e08 is a merge but no -m option was given. fatal: revert failed
To deal with this, we need to call git revert -m 1 32f2e08, where -m 1 specifies the parent number of the branch to take, but if you try to use this with a range of commits, git will assume that the first commit in the range is the merge commit. Parent number 1 belongs to the branch into which the other one - with parent number 2 - has been merged. This wasn't optimal for us, since in our case, the merge commits were scattered across the branch. You also need to be aware that the side branch cannot be re-merged after reverting its merge commit. This applies to all of the commits of the merged branch. If you later decide you will need those changes, after all, you could revert the previous revert commit, or just move the changes to a different branch and re-commit them. Generally, you should avoid the need for such an operation if possible.
This doesn't sound very pleasant now, does it? What could be the least painful way to solve our issue then?
Unfortunately, there is no interactive revert in git yet, where one could specify the whole range to be reverted and have it prompt for merge revert decisions. This way, we decided to go with calling revert with ranges of commits up to before a merge commit, revert the merge commit separately, and then reverted the next range until the next merge, then repeat, something like this:
# First range of commits to revert $ git revert 1586b43..e33f9a0 # A merge commit $ git revert 32f2e08 -m 1 # Next commit range $ git revert 04e4703..4767fcd # Next revert commit $ git revert 58a1c10 -m 1
This turned out to be the easiest way to get the job done, while keeping the git history and hopefully the sanity of the other development team intact.
Git Built In Housekeeping
Git keeps all its references organized in a simple key-value database, called the object database. Whenever a branch update happens, git stores the changes in the object db. For example file revisions, using the hash of the changes as the key. These change objects can get relatively large in active repositories as the time goes on, but usually, older references are rarely used.
Something that is quite useful for dealing with an expanding object database is git's built-in housekeeping tool, the git gc command. Running it regularly will enable you to save some disk space, by compressing these objects - like the mentioned file revisions as well, which usually take up most of the disk space, and also commits and trees. If you call git gc --prune, you can remove orphaned objects, but they are removed permanently, and cannot be restored later. You can check what could potentially be removed when garbage collection is run using git fsck --unreachable beforehand to make sure you're okay with the results.
It doesn't matter if you have just a few repos cloned locally, or a lot, large ones or small, it can save you a surprising amount of space if you've been working on them for some time. I'd encourage you to run it on your local repositories on a regular basis, and occasionally supply the --aggressive option to initiate a slower but more thorough cleanup.
More tips to git good
If you work with git on a daily basis and haven't come across it yet, I recommend checking out Scott Chacon's presentation, available on youtube. It covers the inner workings of git in detail, and is definitely worth your time.
Git Catastrophes and Tips to Avoid Them published first on https://medium.com/@koresol
0 notes
Text
QA Guide: Test Planning
Before we can get into the programming of QA, we must understand the core aspects of QA and its methodologies. Test planning is the first step in the QA lifecycle, so it's naturally the first thing we'll be talking about. As we discuss this, please note that every organization is different and has access to different resources, so take each piece and translate it to what you need.
Without Test Planning
As Agile flows continue to be used by more and more companies, teams need to adapt and modularize their releases. As a result, QA now has to match how agile those teams are. In my previous post, I said that QA can struggle in agile environments if the team is inexperienced or if it isn't integrated correctly. An easy sign of this struggle is the lack of test planning and/or test cases. Imagine that you are tasked with the testing of a brand new website that can manage users' roles that are used throughout the rest of the products your company provides. This was designed to centralize where your customers' admins could manage the users in their organization. Now imagine that this is the very first time you have heard about this website and haven't ever seen the portal, but they still want to release this by the end of the week. Also imagine that the documentation on features, functionality, and requirements is non-existent, or worse, inaccurate. How would you go about testing this? Not only is this an actual scenario that has happened, but this is a perfect example of how QA was not integrated within the development process correctly. At this point, there is very little time to create an effective test plan or test cases, but QA still needs to get this done.
In this situation, the tests become more exploratory than functional or integration testing, and that ultimately slows down the current release and all future QA efforts on that project. I have even seen QA teams create the test plan and test cases after it's been released because that's when they finally have time. All of this is wrong. So how do you do test planning correctly?
What is a Test Plan?
A test plan is exactly what it says. A plan of how you will be testing the subject. In order to create this plan, you need to know how the entire product works. A common misconception is that QA only works alongside the developers. Instead, QA should be working more closely with the product managers. This doesn't mean that QA doesn't work with developers at all, but the Product Manager is the unbiased unit that decides on the Product Approval before release and has all the details as to what the acceptance criteria actually is.
Because of this, the test plan will be a reflection of the product details and acceptance criteria, but instead of assigning features and development time, you assign test case writing, documentation, environment setup, and different types of testing. I like to create a literal Test Plan document that has your plan in writing. This is not only a way to protect you and your team, but it gives the developers and product managers a clear understanding of what you will be testing and how.
How To Make a Test Plan
Here's the scenario: You need to test a simple login page because each user now has a new, cookie-based token that gets passed after credential validation. The token grants permissions to the user for which content they can access, which actions they can take, and expire after 30 days.
How would you create the test plan? Let's go through the steps I train my teammates to use:
1. Evaluate the resources you have available
How many QA members do you have access to? How much time have you been given to test? Is any of it already automated? These are the kinds of questions you need to ask. Your two basic resources, time and people, will determine how much you can spend on each piece of the test plan.
2. Divide the test subject into more manageable "parts" or "sections"
For our scenario, depending on our resources, I would first split it into these parts:
a) Existing users are assigned a token on login
b) New users are assigned a token on login
c) Tokens expire after 30 days for all users
d) The assigned tokens map to the correct permissions
At this point, I see a few unknowns that I'd like to ask the Product Manager about:
a) Is there any token security you want implemented in version one of this? Having worked with tokens, I know there are ways to "mimic" or assign yourself a token. If the API does not have the proper validations, then someone who is not supposed to have access to certain permissions can basically do whatever they want.
b) What happens if a user is disabled or blocked because they missed a payment or they switched teams and need access to different features of our product? If their admins change their permissions, do they get a new token? If they do, when do they get it? Does that token get a new 30-day expiration? Do we completely delete the old token?
I'm sure there is more, but notice how there are two different cases here. The first is more of a corner case, but it is something that I have seen taken advantage of. The second is much more common, but was not pointed out in the requirements we were given. As you continue through test planning, test case creation, and even testing, questions like these will continue to come up.
For example, as you start testing, you realize that the actual login now takes considerably longer because of the additional API calls. Is there an acceptable latency benchmark that must be met or is the product manager okay with the loss of performance? Make sure you ask!
3. Determine scope and environment variables
Scope refers to what is considered relevant to the test subject. For example, should we include the test case of changing an existing user's password and then logging in? Should we include the test case of the same user trying to log in on 100 machines at the same time? There will always be an infinite amount of tests that could be done, but because we have a finite amount of resources, we must decide what falls into the test scope.
Environment variables (or platforms) are part of the test scope. Which environments should these tests be run in? When dealing with web apps, this usually comes down to browsers and browser versions. Do we run these tests in Chrome and Firefox only? Do we run these tests in Edge and Opera too? Each environment becomes a multiplier. If we decide to test five different browsers and we also want to test two different versions for each browser, then each test will need to be run ten times!
Mobile apps deal with iOS, Android, Amazon, Windows, and sometimes others. For those in the mobile space, you know that there are tons of versions for each of these (especially Android) and it's impossible to test all of them. This is why there are "supported environments" sections for many popular products.
4. Divide the parts into specific test cases
Once you have the more manageable parts, you must divide those parts into specific test cases. These will eventually become the test cases you and your team create. I will write another post to go over Test Cases, but for now, we'll use what I think is the minimum for a good test case:
a) Pre-conditions and pre-requisites - what is required to properly run the test? This is to help control the environment that the tester has. For example, "clear cache and cookies".
b) Acceptance criteria - what is the criteria that the tester needs to look out for to determine whether a test is a pass or fail? Sometimes this can be copy and pasted from what the Product Manager has detailed, but sometimes you will need to get these details by asking the Product Manager.
c) Steps - each step should have the step (or steps) to take, and the expected condition of that step. Always include screenshots or video for these. A test case should be as simple as possible and easy to follow.
For our scenario, they have decided to include the "forgot password" test case and the "admin changes user's permissions" test case. They've also decided that the token should remain the same and not reset the 30-day expiration. Since those cases deal with an existing user, we will put it under our "Existing users are assigned a token on login" section. Continue this process for the rest of your sections and you'll see an easy-to-follow hierarchy.
5. Create the Test Plan document and get it approved
Now that you have your questions answered and test sections and cases specified, you can easily create the Test Plan document. This document will be the base that you and your team use like a checklist, and you need to make sure it is easy to follow. (Remember that this document is meant to be an approved "base", but that you and your team must be able to adjust and adapt as needed.) Use the points we've discussed so far:
a) List the resources available - this is optional, but at least put the names of the members that the Product Manager and developers can rely on. It's frustrating not to know which QA members are part of the project or who the lead is.
b) List the environments - which platforms and versions you are planning to test against.
c) List the Test Sections and Test Cases - this is almost always just the names of the sections and the names of the test cases with steps. (If you have an ID or URL for these tests, then you can add them too.) For example, this would suffice for the "Existing user" section of our scenario:
Existing users are assigned a token on login
- Forgot Password flow, then login
1. Go to login page and complete forgot password flow
2. Login using new password
3. User's token should be the same
- Admin changes user's permissions
1. As an admin, change user's permissions and save
2. As the user, login
3. User's token should be the same
The benefit of getting this document looked at by the Product Manager and developers is that they can see exactly how you've determined the testing efforts and they can either make edits or approve them. The entire goal is to get everyone on the same page. The last thing you want to do in QA is assume that something "should" work this way or assume that "this is what my Product Manager would want".
Is it the end already?
Test planning is the very first step in QA and for good reason. The better you get at test planning, the more your credibility will increase and the easier your job will become.
0 notes