Skip to content

Latest commit

 

History

History
1078 lines (776 loc) · 49.9 KB

2020-03-05.md

File metadata and controls

1078 lines (776 loc) · 49.9 KB

< 2020-03-05 >

2,277,261 events, 1,118,835 push events, 1,831,349 commit messages, 137,902,927 characters

Thursday 2020-03-05 00:13:13 by Andrei Matei

sql,kv: add SQL savepoints support

This patch adds support for SAVEPOINT , RELEASE SAVEPOINT , ROLLBACK TO SAVEPOINT . Before this patch, we only had support for the special savepoint cockroach_restart, which had to be placed at the beginning of the transaction and was specifically intended for dealing with transaction retries. This patch implements general support for savepoints, which provide an error recovery mechanism.

The connExecutor now maintains a stack of savepoints. Rolling back to a savepoint uses the recent KV api for ignoring a range of write sequence numbers.

At the SQL level, savepoints differ in two characteristics:

  1. savepoints placed at the beginning of a transaction (i.e. before any KV operations) are marked as "initial". Rolling back to an initial savepoint is always possible. Rolling back to a non-initial savepoint is not possible after the transaction restarts (see below).
  2. the savepoint named "cockroach_restart" retains special RELEASE semantics: releasing it (attempts to) commit the underlying KV txn. This continues to allow for descovering of deferred serilizability errors (i.e. write timestamp pushes by the ts cache). As before, this RELEASE can fail with a retriable error, at which point the client can do ROLLBACK TO SAVEPOINT cockroach_restart (which is guaranteed to work because cockroach_restart needs to be an "initial" savepoint). The transaction continues to maintain all its locks after such an error. This is all in contrast to releasing any other savepoints, which cannot commit the txn and also never fails. See below for more discussion. The cockroach_restart savepoint is only special in its release behavior, not in its rollback behavior.

With the implementation of savepoints, the state machine driving a SQL connection's transactions becomes a lot simpler. There's no longer a distinction between an "Aborted" transaction and one that's in "RestartWait". Rolling back to a savepoint now works the same way across the two states, so RestartWait is gone.

This patch also improves the KV savepoints. They now capture and restore the state of the read spans and the in-flight writes.

Some things don't work (yet): a) Rolling back to a savepoint created after a schema change will error out. This is because we don't yet snapshot the transaction's schema change state. b) After a retriable error, you can only rollback to an initial savepoint. Attempting to rollback to a non-initial savepoint generates a retriable error again. If the trasaction has been aborted, I think this is the right behavior; no recovery is possible since the transaction has lost its write intents. In the usual case where the transaction has not been aborted, I think we want something better but it will take more work to get it. I think the behavior we want is the following:

  • after a serializability failure, retrying just part of the transaction should be doable by attempting a ROLLBACK TO SAVEPOINT. This rollback should succeed if all the non-rolled-back reads can be refreshed to the desired timestamp. If they can be refreshed, then the client can simply retry the rolled back part of the transaction. If they can't, then the ROLLBACK should return a retriable error again, allowing the client to attempt a deeper rollback - and so on until the client rolls back to an initial savepoint (which succeeds by definition). Implementing this would allow for the following nifty pattern:

func fn_n() { for { SAVEPOINT savepoint_n try { fn_n+1() } catch retriable error { err := ROLLBACK TO SAVEPOINT outer if err != nil { throw err } continue } RELEASE SAVEPOINT savepoint_n break } }

The idea here is that the client is trying to re-do as little work as possible by successively rolling back to earlier and earlier savepoints. This pattern will technically work with the current patch already, except it will not actually help the client in any way since all the rollbacks will fail until we get to the very first savepoint. There's an argument to be made for making RELEASE SAVEPOINT check for deferred serializability violations (and perhaps other deferred checks - like deferred constraint validation), although Postgres doesn't do any of these. Anyway, I've left implementing this for a future patch because I want to do some KV work for supporting it nicely. Currently, the automatic restart behavior that KV transactions have is a pain in the ass since it works against what we're trying to do.

For the time-being, non-initial savepoints remember their txn ID and epoch and attempting to rollback to them after these changes produces a retriable error automatically.

Fixes #45477 Touches #10735

Release note (sql change): SQL savepoints are now supported. SAVEPOINT , RELEASE SAVEPOINT , ROLLBACK TO SAVEPOINT now works. SHOW SAVEPOINT STATUS can be used to inspect the current stack of active savepoints.

Co-authored-by: Raphael 'kena' Poss [email protected] Co-authored-by: Andrei Matei [email protected]


Thursday 2020-03-05 00:36:36 by Connor Smiley

For the love of god please don't let me find any more issues with my protocol!


Thursday 2020-03-05 01:21:43 by Tristan Ravitch

This commit re-implements the memory model used by macaw symbolic

There are two major changes:

  • The interface to memory models in Data.Macaw.Symbolic has changed
  • The suggested implementation in Data.Macaw.Symbolic.Memory has changed

The change improves performance and fixes a soundness bug.

  • macawExtensions (Data.Macaw.Symbolic) takes a new argument: a MkGlobalPointerValidityPred. Use mkGlobalPointerValidityPred to provide one.
  • mapRegionPointers no longer takes a default pointer argument (delete it at call sites)
  • GlobalMap returns an LLVMPtr sym w instead of a Maybe (LLVMPtr sym w)

Users of the suggested memory model do not need to worry about the last change, as it has been migrated. If you provided your own address mapping function, it must now be total. This is annoying, but the old API was unsound because macaw-symbolic did not have enough information to correctly handle the Nothing case. The idea of the change is that the mapping function should translate any concrete pointers as appropriate, while symbolic pointers should generate a mux over all possible allocations. Unfortunately, macaw-symbolic does not have enough information to generate the mux itself, as there may be allocations created externally.

This interface and implementation is concerned with handling pointers to static memory in a binary. These are distinguished from pointers to dynamically-allocated or stack memory because many machine code instructions compute bitvectors and treat them as pointers. In the LLVM memory model used by macaw-symbolic, each memory allocation has a block identifier (a natural number). The stack and each heap allocation get unique block identifiers. However, pointers to static memory have no block identifier and must be mapped to a block in order to fit into the LLVM memory model.

The previous implementation assigned each mapped memory segment in a binary to its own LLVM memory allocation. This had the nice property of implicitly proving that no memory access was touching unmapped memory. Unfortunately, it was especially inefficient in the presence of symbolic reads and writes, as it generated mux trees over all possible allocations and significantly slowed symbolic execution.

The new memory model implementation (in Data.Macaw.Symbolic.Memory) instead uses a single allocation for all static allocations. This pushes more of the logic for resolving reads and writes into the SMT solver and the theory of arrays. In cases where sufficient constraints exist in path conditions, this means that we can support symbolic reads and writes. Additionally, since we have only a single SMT array backing all allocations, mapping bitvectors to LLVM pointers in the memory model is trivial: we just change their block identifier from zero (denoting a bitvector) to the block identifier of the unique allocation backing static data.

This change has to do some extra work to ensure safety (especially that unmapped memory is never written to or read from). This is handled with the MkGlobalPointerValidityPred interface in Data.Macaw.Symbolic. This function, which is passed to the macaw-symbolic initialization, constructs well-formedness predicates for all pointers used to access memory. Symbolic execution tasks that do not need to enforce this property can simply provide a function that never returns any predicates to check. Implementations that want a reasonable default can use the mkGlobalPointerValidityPred from Data.Macaw.Symbolic.Memory. The default implementation ensures that no reads or writes touch unmapped memory and that writes to static data never write to read-only segments.

This change also converts the examples in macaw-symbolic haddocks to use doctest to ensure that they do not get out of date. These are checked as part of CI.


Thursday 2020-03-05 01:47:48 by 卜部昌平

stop worrying and love global macros

When I made internal/compilers.h I was afraid of global namespace pollutions. Later it turned out that our public header defines __has_attribute anyways. Let's stop worrying. Publicize what we already have internally.

Doing so, however, is not a simple copy&paste business. We only had to consider C99 for internal headers. But for public ones, we need to make sure all other C/C++ versions work well.


Thursday 2020-03-05 02:08:45 by Andrés Riquelme

Doobly said unfuck your shit and make this

and so I did


Thursday 2020-03-05 04:17:28 by jyji

fuck your commit changelog I made Client.h prettier


Thursday 2020-03-05 05:11:25 by Trent Kable

okay, fr that's done, bitches. Fuck yeah let's kick


Thursday 2020-03-05 06:54:23 by ADoomedSpaceMarine

Massive update

Okay kids. Major update.

  1. Nash's gore is now built in with toggle menus and all.

  2. Added a class called "RifleDude" He's a chaingunner who took up marksmanship instead (hurrhurr). Basically he's a bigger tougher version of the normal zombie dude, but holds and drops the AR36.

  3. The Pistol zombies now actually hold pistols. They were part of the allies pack. I ended up repurposing them and injecting them in. Beware, however - The glock and Deagle zombies both look the same, but one's packing a bigger gun.

  4. Added the Deagle hunter. Barrowed Shadow Hunter in the Realm667 resources, but instead of shooting a projectile attack now literally acts much like the deagle zombie, but he's a mean-ass, fast as shit, sneaky mother fucker, and if not watched does a ton of damage.

  5. Further nerfherded the guns. The guns and enemies you fight actually feel balanced now. You now face enemies that, though lower tier, are faster and deadlier than ever before. Both shotgunners shoot bigger amounts of pellets (Matching your buckshot, infact) so you need to take them and the deagle wielders if you want to live.

  6. Mucked around with the spawners a bit more. The 20mm cannon is 16 times less likely to spawn from drops, and is a 1 to 1 drop chance where you used to find the BFG (Now replaced by the 20mm cannon and BFL10k)

  7. The enemy spawns also cater to make the lower tier enemies more challenging, thus taking balance to a new level.

  8. Added some things for implementation later.

  9. Fixed the acs bug on what classes have what.

  10. Nerfed starting items with all classes, you now need to dig to find weapons and ammo if you plan to stay alive. Tried to give three clips at least for all ammo types.

  11. Added a Marine class. This class isn't vanilla, but starts you as close to vanilla a possible. Everything except the fact that you start with the glock now.

  12. probably some other shatner I don't remember.


Thursday 2020-03-05 07:42:42 by Vlad Zahorodnii

WIP: Re-write xdg-shell implementation

First of all, sorry for the big patch.

Currently, we implement Wayland protocol wrappers in KWayland and then add necessary "glue" code here in KWin. Because KWayland is a KF library, we are not able to change existing API in ways that may break API or ABI compatibility. So, if some particular wrapper has been implemented incorrectly, we can't do that much about it except maybe leaving comments that look like "// TODO KF6".

Another problem with KWayland is that we try to build abstractions over something that is unstable. We do this in the name of the "don't repeat yourself" mantra. While it is a good approach to keep the amount of duplicated code as low as possible, we basically ask for trouble. If a new version of an unstable protocol comes along with dramatic changes, we are screwed.

The current xdg-shell wrappers in KWayland were designed for xdg-shell v5, which didn't have objects such as xdg-toplevel or xdg-positioner. Unfortunately, we can't change existing classes because of the API and ABI compatibility promises we made.

This change splits the XdgShellClient class to better match existing abstractions in the xdg-shell protocol. Unfortunately, since xdg-shell wrappers in KWayland weren't designed for xdg-shell v6+, I had to re-implement them here in KWin. The new wrappers weren't implemented in KWayland because I cannot guarantee that the future versions of the wrappers will stay API compatible.

The XdgSurface{V6}Client class is concerned mainly about things such as mapped/unmapped state and geometry, while XdgToplevel{V6}Client and XdgPopup{V6}Client are concerned about role-specific things, for example the window state, etc.

In the new client classes, configure events are handled differently. Instead of blocking configure events, we try to send them as late as possible. Delaying configure events will let us merge changeMaximize() for X11 clients and Wayland clients and it also fixes the bug where we don't send the final configure event when user has finished resizing a window.

Given that configure events are not sent immediately, XdgSurfaceClient and XdgSurfaceV6Client keep the last requested frame geometry and the last requested client geometry.

This change doesn't intend to fix all things that are currently broken in the xdg-shell wrappers and the XdgShellClient class. For example, we don't reset XdgSurfaceInterface when the wl_surface is unmapped, we handle xdg-popup grabs poorly, etc. Instead, this change lays the foundation for the future improvements.


Thursday 2020-03-05 08:00:47 by Vlad Zahorodnii

WIP: Re-write xdg-shell implementation

First of all, sorry for the big patch.

Currently, we implement Wayland protocol wrappers in KWayland and then add necessary "glue" code here in KWin. Because KWayland is a KF library, we are not able to change existing API in ways that may break API or ABI compatibility. So, if some particular wrapper has been implemented incorrectly, we can't do that much about it except maybe leaving comments that look like "// TODO KF6".

Another problem with KWayland is that we try to build abstractions over something that is unstable. We do this in the name of the "don't repeat yourself" mantra. While it is a good approach to keep the amount of duplicated code as low as possible, we basically ask for trouble. If a new version of an unstable protocol comes along with dramatic changes, we are screwed.

The current xdg-shell wrappers in KWayland were designed for xdg-shell v5, which didn't have objects such as xdg-toplevel or xdg-positioner. Unfortunately, we can't change existing classes because of the API and ABI compatibility promises we made.

This change splits the XdgShellClient class to better match existing abstractions in the xdg-shell protocol. Unfortunately, since xdg-shell wrappers in KWayland weren't designed for xdg-shell v6+, I had to re-implement them here in KWin. The new wrappers weren't implemented in KWayland because I cannot guarantee that the future versions of the wrappers will be API compatible.

The XdgSurface{V6}Client class is concerned mainly about things such as mapped/unmapped state and geometry, while XdgToplevel{V6}Client and XdgPopup{V6}Client are concerned about role-specific things, for example the window state, etc.

In the new client classes, configure events are handled differently. Instead of blocking configure events, we try to send them as late as possible. Delaying configure events will let us merge changeMaximize() for X11 clients and Wayland clients and it also fixes the bug where we don't send the final configure event when user has finished resizing a window.

Given that configure events are not sent immediately, XdgSurfaceClient and XdgSurfaceV6Client keep the last requested frame geometry and the last requested client geometry.

This change doesn't intend to fix all things that are currently broken in the xdg-shell wrappers and the XdgShellClient class. For example, we don't reset XdgSurfaceInterface when the wl_surface is unmapped, we handle xdg-popup grabs poorly, etc. Instead, this change lays the foundation for the future improvements.


Thursday 2020-03-05 08:14:14 by aungxilwin

aungxilwin7-patch-1

eling Love pictures quotes. ★ 10000+ Hidden Feeling - Heart Touching quotes. ★ Set As Wallpaper. ★ Set As Social Media Dp. ★ Download, Share Social Media apps.

Hidden Feeling - Heart Touching Categories: ღ Quotes About Love ღ Hidden Feeling Quotes ღ Heart Touching Quotes ღ I Miss You Quotes ღ Sad Crush Quotes ღ Thinking of You Quotes ღ First Love Quotes ღ Breakup Quotes ღ Love Hurt Quotes ღ Broken Heart Quotes ღ Falling In Love Quotes ღ Single Quotes ღ Heartfelt Quotes ღ Secret Crush Quotes ღ I’m Sorry Quotes

Thank for choosing Sweet Love Studio!

Disclaimer: All SMS messages gathered from the web. We do not express any Ownership of these messages. In case if any of these messages violated your copyright/ IP right to remove the discrepancy. please send us an e-mail. We will respond this at earliest.


Thursday 2020-03-05 08:44:36 by Saqib Ali

Hometap Equity Partners - Data Scientist. Job @ meepl | Fision (Zürich): Data Science Softwa... | JOIN. Data Science Senior Manager Job Opening in New York, New York - Society for Industrial and Applied Mathematics (SIAM). Senior Data Science Engineer Job Opening in Milpitas, California - Society for Industrial and Applied Mathematics (SIAM). Is data science a discipline? « Statistical Modeling, Causal Inference, and Social Science. "No Stone Unturned": How Charles Bridges Is Using Data Science to Combat a Rare, Incurable Disease | Johnson & Johnson. Gigamon Careers - Data Scientist. Data Scientist - Pixalate, Inc. - Career Page. Senior Data Scientist - Multiple Roles. 1901 Group Careers - Data Scientist.


Thursday 2020-03-05 09:39:14 by OnlineGirlfriend

[READY] Adds pineapple juice, creme de coconut, Pina Colada; adds Painkiller drink; adjusts Bahama Mama and pineapple snowcone (#48783)

This adds two drink ingredients: creme de coconut (a coconut liqueur obtainable in the booze dispenser) and pineapple juice (obtainable in the soda dispenser or via juicing pineapples). It further adds the Pina Colada and Painkiller cocktails & corresponding sprites, and it adjusts the recipe for Bahama Mama. The recipe for pineapple snowcones was also adjusted to require pineapple juice rather than pineapple slices.

Finally, pineapple juice can be found in a carton or craftable juice box, and I've added sprites for this. Why It's Good For The Game

First off, more drink ingredients equal more realistic drink mixes and more variety, which means more fun for bartenders.

Pineapple snowcones are better off using pineapple juice as opposed to pineapple slices. Previously the recipe called for two pineapple slices; you can now juice those two pineapple slices to produce pineapple juice sufficient for the snowcone.

Regarding the changes to the Bahama Mama recipe: With these changes, the recipe now more closely represents the classic Bahama Mama, which involves coconut, coffee, rum, and pineapple juice as its base ingredients. I removed orange juice to prevent conflict with the Painkiller recipe, but also feel justified in doing so because orange juice is not an essential ingredient of a Bahama Mama, nor is lime. Changelog

🆑 add: pineapple juice, creme de coconut add: Pina Colada cocktail add: Painkiller cocktail add: pineapples and pineapple slices can be juiced tweak: Bahama Mama recipe, pineapple snowcone recipe imageadd: pineapple juicebox sprite, pineapple juice carton sprite, Painkiller sprite, Pina Colada sprite /🆑


Thursday 2020-03-05 09:40:17 by jalavosus

  • Bump several package versions
  • Roll my own snappy wrapper
  • Oh right, this now supports snappy...
  • switch over to kafkajs, whose API is goddamn lovely

Thursday 2020-03-05 09:44:19 by fountainpositive

Update CryptoNoteConfig.h

Fucking hell. How do I compile to get the genesis TX hash if I can't compile the coin without the tx hash already included in the config.

Anyone? Nothing? Why am I always alone at shit?


Thursday 2020-03-05 10:21:47 by Marko Grdinić

"8:35am. Meh. Let me just start. Everything is so boring. Hopefully things will get more interesting when I get certain level of proficiency in webdev.

To start things off, let me finish the Nodejs video from yesterday.

8:40am. Ok, focus me. Let me just do this.

It feels like my mind is degenerating. Yesterday I was so unfocused that I forgot two of the main character while watching Toji No Miko game rps. I had to think like 30s to remember who Maki and Suzuka were. What the hell?

8:45am.

import * as uuid from "uuid";

const x = uuid.v4();
console.log(x);

Interesting that this fails me when I do the import like...

import uuid from "uuid";

This gave me trouble last time as well.

9am. https://youtu.be/fBNz5xF-Kx4?t=3355

Finally, he gets to server creation material.

9:10am.

import { EventEmitter } from "events";
import http from "http"

http.createServer((req,res) =>{
    // res.write();
    res.end("Hello wor!");
    }
).listen(5000, () => console.log("Server running."));

That's the most simple web server you are ever gonna see in your life.

https://youtu.be/fBNz5xF-Kx4?t=3568

It is important to know if you use a framework like Express it makes this stuff a lot easier. With Express you specifically, you can say like: I want my app to receive a get request to the page /about and then you can have a callback function and do what you want. So it makes it much easier. However I think it is a good thing to understand how to do without Express. At least load basic web pages of different content types.

Great, this is exactly what I want from this. And after I am done, I'll go for the Express course. That will be my goal for this morning. I'll see whether I want ASP.NET docs again or more of Brad's videos after that.

9:50am.

import { EventEmitter } from "events";
import http from "http"
import path from "path"
import fs from "fs"
import url from "url"

const server = http.createServer((req,res) => {
    const x = (req.url || "/").toLowerCase();
    const ru = x === "/" ? "index" : x;
    fs.readFile(
        path.join(__dirname,"public", ru + ".html"),
        (err,data) => {
            res.writeHead(200,{"Content-Type" : "text/html"});
            res.end(data);
            }
    );
    }
);

const PORT = process.env.port || 5000;

server.listen(PORT, () => console.log(`Server running on port ${PORT}`));

I did this myself as an exercise. Let me see how he will do it. He'll probably check for errors in the file read.

10:20pm. https://youtu.be/fBNz5xF-Kx4?t=4594

C style Switch statements are one of shittiest language features ever.

10:25pm. For all its benefits, apart from not having pattern matching, TS also cannot do something as simple as...

let r =
    let x = 2
    2

No nested statements like in F#.

It is still JS underneath.

10:35pm. https://youtu.be/fBNz5xF-Kx4?t=4872

At this point I am not really writing along as the code is getting shitty. I am definitely going to try this in F# just to see if it is any nicer.

10:55am. Finally done.

11am. I need a little breather. How long is the Express video?

https://youtu.be/L72fhGm1tfE Express JS Crash Course

74m. I think I'll start the big break here and then do this video after that.

Right now, let me just go through the intro for it.

11:15am. https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=358

Let me stop here. I am really satisfied with this so far.

Everything is simple enough that I can reframe it in terms of what I already know.

After I finish this vid, I'll know 70% of what I need to know to make a language server. It is really a pity, but I could have gone straight to this 4 weeks ago. Had somebody just linked me to this video on Feb 8th, I'd recognized what I need immediately. I tend to not get good responses on the PL sub it seems.

What a waste of time, but I'll waste more time yet before I am through.

11:20am. Still, doing it this way has the benefit of making my skill base broader, so I'll get that if nothing else.

Today I spent my morning properly."


Thursday 2020-03-05 11:22:33 by SireTurret

READY TO MERGE | Psionics code re-overhaul and unfucking (#98)

  • initial psionics fix shit

  • PSI Shield implementation

  • MORE MODERNISATION

  • Tinker tool fixes

  • turrets dumb and didnt tell me he commented this

  • removes a dumb change that made it so you have to standup to use psionic powers

Co-authored-by: Toxici12i [email protected]


Thursday 2020-03-05 11:57:38 by Mana

TR-0010 -HOLY SHIT ROTATION WORKS? -But now position is fucked, because of positions, which should be fixable


Thursday 2020-03-05 13:11:53 by Tkonata

(id 8) solve

my solution is stupid, ugly, the problem is shitty


Thursday 2020-03-05 13:55:12 by Matthew Thompson

Fixes #205. Adds mepo support

This commit adds support for mepo. At present, mepo is "automatically" used only if -DUSE_MEPO=ON is passed in. For now we default to checkout_externals.

Also, add some logic so that we don't try to clone @cmake again if it already exists. That causes some ugly error output.

Finally, add some directories to .gitignore as well as add ESMA_env to the Externals.cfg. This is not needed to build MAPL, but it is sort of "expected" when building at NCCS/NAS. It's just some extra noise for our Harvard friends though. Sorry.


Thursday 2020-03-05 15:10:10 by Mark Woods

Allow installation of unstable, forked, versions

Add head and devel specs to the homebrew formula to allow installation from the master and develop branches respectively of whichever repo is the source of the homebrew tap. This is fugly, but it seems a necessary evil to allow us to maintain a usable fork including new features not yet merged upstream, without breaking upstream compatibility.

Yeah, I know, it's a horrible hack, I hate it too, but it does the job.

P.S. Yes, this will prevent the formula being accepted to Homebrew core, but that's not going to happen anytime soon, so not worth worrying about


Thursday 2020-03-05 15:22:43 by Boyan Levchev

Merge pull request #12 from boyanlevchev/edits-to-shit

edited laods of things dont even remember, fixed the spacing, the nav…


Thursday 2020-03-05 15:23:32 by Steve Howell

refactor: Extract validate_email_is_valid().

This has two goals:

- sets up a future commit to bulk-validate
  emails

- the extracted function is more simple,
  since it just has errors, and no codes
  or deactivated flags

This commit leaves us in a somewhat funny intermediate state where we have action.validate_email being a glorified two-line function with strange parameters, but subsequent commits will clean this up:

- we will eliminate validate_email
- we will move most of the guts of its
  other callee to lib/email_validation.py

To be clear, the code is correct here, just kinda in an ugly, temporarily-disorganized intermediate state.


Thursday 2020-03-05 15:33:50 by Ricardo Cerqueira

Squashed commit of breakfast/brunch commands

We usually don't wan't all the devices in the lunch menu, so we can now choose to pick up breakfast or brunch and get a smaller selection of devices (i.e., those we support)

Make brunch more nutritious

  • "breakfast device-name" will set up the environment, just like lunch.
  • "brunch device-name" will actually do the whole setup and build :)

brunch: add a lazier mode

Since all of targets have a predictable PRODUCT_NAME and BUILD_VARIANT (i.e., "aosp_$(PRODUCT_DEVICE)-eng"), brunch can now be invoked passing just the PRODUCT_DEVICE ("brunch passion" for the N1 setup+build, for example). The "classic" long form of $(PRODUCT_NAME)-$(BUILD_VARIANT) can still be used if desired ("brunch slim_passion-eng" still works).

breakfast in bed

breakfast in bed (aliased to "bib") is the baconless friend of lazy brunch. You can now use "breakfast passion", or "bib passion", to setup the corresponding SLIM build without actually building it

Fix breakfast for the undecided

The menu presentation (i.e., giving no arguments to breakfast or brunch) was broken, so if you didn't know the name of your target you weren't given a list to choose from, just an error.

Change-Id: I85b8217daa2d511c16a1e82c700e1b0fadbb36ac CyanogenNom: Now moar helpful!


Thursday 2020-03-05 17:05:14 by monzturreminem

I’m sorry for

Monster~Monzturr Edition or Version () Can help my memory it fails me accept when it comes to knowing that I am forgetting something like maybe that I m broke due to my Father or my accountant misleDing me wasting my time and not giving me the resources I need to survive and to due the work that I can do with this music so any instructions money grants funding that I can get really helps me out and goes a long ways as it is right now I take my last 20 to the casino and walk away with 0 sometimes I stop and l ave with something I am in a homes shelter no vehicle all my shit keeps getting stolen and I am being stalked help now please & thank you anyone doesn’t wanna help me I say shut up bitch talksamecca varsegue I thought you knew EmMo


Thursday 2020-03-05 17:09:07 by Marko Grdinić

"11:45am. https://mangadex.org/title/28426 Hagure Idol Jigokuhen

More of this is out. Score. This has been on hiatus for too long.

1:50pm. I slacked a bit too much today, but it is fine.

The next on the list are chores, and then the Express video.

The chores will take a while today.

3:05pm. Done with chores. I need some time to cool down first.

3:15pm. Cooled down.

For the rest of the day, my goal will be to go through the Express course. That will mark the beginning of the end of this documentation reading adventure.

3:30pm. Downloading Postman. I saw him use this in the HTTP video.

4:35pm. https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=2155

What he is doing here is not good programming practice.

app.get("/api/members/:id", (req, res) => {
    const x = req.param("id");
    const l = members.filter((y) => x === y.id.toString())
    if (l.length) res.json(l)

It would be better to filter and then check the length. What makes this whole thing a bit complicated is that it is not stated whether ids can be duplicated. If they cannot then...

4:45pm.

app.get("/api/members/:id", (req, res) => {
    const x = parseInt(req.param("id"),10);
    const y = members.find(y => x === y.id);
    if (y) res.json(y)

Something like this would be good. Also it would be better to parse the ids as ints, but if that fails no doubt an exception will be thrown.

Also parseInt requires a base, otherwise the default is hexadecimal. He is probably not expecting that.

This is some of the ways type systems save your ass.

4:45pm. Ah, invalid parses return Nan. Forgot about that.

5pm. https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=2521

Damn, will I manage to finish this today? I am learning a lot from this, but I am sensing my focusing slipping.

Well, I should manage it somehow. I can finish two video in one day.

These lectures are pretty good, they are simple enough that I am able to anticipate what he is going to say.

Learning like this is great. Everything on the screen I understand the purpose of and there is a playful atmosphere. This is completely different from the ASP.NET book.

5:25pm. https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=2775

Interesting what errors show up. Here he is using uuid.v4() which returns a string, but the ids are supposed to be numbers.

No way around it, I have to change the ids to unique ones.

5:45pm. https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=3044

Ah, I had enough. Following along is taking too much time and I got the gist of it. Let me just watch to the end here. I am too tired at this point.

https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=3085

Ah, once again, just use find and mutate that. The way he is doing would traverse everything needlessly...well, unless he uses return to break the loop.

5:55pm. https://youtu.be/L72fhGm1tfE?list=PLillGF-RfqbYeckUaD1z6nviTp31GLTH8&t=3501

Let me stop here. I know there is only 15m left, but that is on HTML templating. I definitely want to leave this for when I am fresh. The fatigue is really hitting me right now. I've really been focusing and playing with this for hours now.

6pm. Phew.

Let's see...once I deal with this...

I'll need to dive a tad deeper and figure out how to make application on the same computer communicate, rather than web servers. I am really quite close to finding what I seek.

The stuff with routing and matching on requests is all that I've seen in ASP.NET. It really confused me greatly what those unit -> unit type functions do. As I suspected, anybody with a modicum of experience in webdev would in fact recognize their function.

Everything he has demonstrated to me today will go quite far in understanding other frameworks.

6:10pm. I am just zoning out here right now. Let me close."


Thursday 2020-03-05 17:09:52 by connor

created new route, /predict, which, i know is bad but fuck you whatever, uses the global variable frame consisting of the byte data of the webcam currently in use and then forms a prediction using an iterable by yielding each prediction which is then returned as a Response with mimetype 'text/plain', doesn't update web page yet though which is an issue


Thursday 2020-03-05 19:53:23 by leonidomgz

config changed to go automatically to fullscreen @ 1080p +implemented a crude WIP version of day/night cycle

this is actually now a day/night cycle

wrong kind of attribute change, now i'm fixing it in a different way

actual final except we need to figure out why in god's green earth this code works differently on my and Unarelith's machine

final final final no more changes, we got this thing working

Day/night implemented and some other tweaks in files

actual final part 4

indents and spaces

indents part 2

small changes in formatting

line breaks

more line breaks

breakage

cleaning up my old mistakes

final? line breaks and edits?

possibly final edits

i am now certain that his is final actual final

removed trailing tab and added line breaks

bad swap of numbers now fixed

increased minimum night brightness to 4, from 1, should look better now

implemented actual day/night cycle with full shader fx

small spacing changes

changed rgb values and updated formulas for a better night sky there's also now a transition with a slight pink color between day and night also rgb values calculation formulas are cursed and make me sick, but they work

slowed down sky color change (forgot to change in prev commit)

changed the sky and fog clamps to make the sky better

i fixed the night light

proper day/night cycle


Thursday 2020-03-05 21:18:41 by NewsTools

Created Text For URL [www.vanguardngr.com/2020/03/i-watched-my-girlfriend-die-after-stabbing-her-says-arrested-fleeing-lover/]


Thursday 2020-03-05 21:24:13 by wm4

f_decoder_wrapper: make decoder thread responsive while filling queue

The mp_filter_run() invocation blocks as long as the demuxer provides packets and the queue can be filled. That means it may block quite a long time of the decoder queue size is large (since we use libavcodec in a blocking manner; it regrettably does not have an async. API).

This made the main thread freeze in certain situations, because it has to wait on the decoder thread.

Other than I suspected (I wrote that code, but that doesn't mean I know how the hell it works), this did not freeze during seeking: seek resets flushed the queue, which also prevented the decoder thread from adding more frames to it, thus stopping decoding and responding to the main thread in time. But it does fix the issue that exiting the player waited for the decoder to finish filling the queue when stopping playback. (This happened because it called mp_decoder_wrapper_set_play_dir() before any resets. Related to the somewhat messy way play_dir is generally set. But it affects all "synchronous" decoder wrapper API calls.)

This uses pretty weird mechanisms in filter.h and dispatch.h. The resulting durr hurr interactions are probably hard to follow, and this whole thing is a sin. On the other hand, this is a very user visible issue, and I'm happy that it can be fixed in such an unintrusive way.


Thursday 2020-03-05 21:30:46 by mexisme

Copy the IPTS kernel patch from the 5.5 dir to the 5.4 dir.

Conversation on https://gitter.im/linux-surface/community suggested this would reenable IPTS on 5.4:


@matrixbot Feb 29 15:33 hpfr Blaž Hrastnik (Gitter): thanks for the mention. mexisme (Gitter) finally, someone who actually knows Nix and isn't just a config nerd writing proper NixOS Surface configs! I am stuck on 4.19 at the moment because IPTS is now a proper reverse-engineered kernel driver (https://github.com/linux-surface/intel-precise-touch) instead of just a blob package, and I haven't had time to look at how to package that for Nix. If you're on 5.5, are you just not using IPTS? Would love to help out on packaging that for NixOS hpfr also, development conversations seem to happen more at #linux-surface on freenode, which you can connect to with matrix via https://matrix.to/#/!OXIGGPCpnzaNVeGtCA:matrix.org if you don't like IRC clients

@matrixbot Feb 29 15:39 hpfr Also, I'm not using jakeday's patches, I'm using the more recent ones from the linux-surface/linux-surface repo, but yeah, for 4.19, so they're a bit different from the 5.x patchsets. afaik 4.19 is still supported because it's the last LTS release that supports the "official" IPTS blob before Linux made changes that required reverse engineering a driver that didn't use GuC submission (I'm just quoting here, I have no idea what that is haha)

@matrixbot Feb 29 19:27 Blaž > now a proper reverse-engineered kernel driver Should be similar to before, we just offer it as a patch Blaž https://github.com/linux-surface/linux-surface/blob/master/patches/5.5/0007-ipts.patch Blaž Anyway I'm keeping an eye out on your NixOS builds since I'm thinking about giving it a try

@matrixbot Feb 29 19:32 Blaž Currently running Arch but using nix as a way to manage development environments for various projects

@matrixbot Mar 01 10:41 hpfr Blaž: well shoot is that patch all that’s necessary for building in-tree? It does all the things the linux-surface/intel-precise-touch repo does?

Dorian Stoll @StollD Mar 01 12:56 Yes Just adds all the files from the repo to drivers/input/touchscreen and adds the necessary glue to drivers/input/touchscreen/{Makefile, Kconfig}

@matrixbot Mar 02 09:13 hpfr Dorian Stoll (Gitter): oof. Could’ve been on 5.4+ all this time!


Thursday 2020-03-05 21:37:52 by wm4

sub: make filter_sdh a "proper" filter, allow runtime changes

Until now, filter_sdh was simply a function that was called by sd_ass directly (if enabled).

I want to add another filter, so it's time to turn this into a somewhat more general subtitle filtering infrastructure.

I pondered whether to reuse the audio/video filtering stuff - but better not. Also, since subtitles are horrible and tend to refuse proper abstraction, it's still messed into sd_ass, instead of working on the dec_sub.c level. Actually mpv used to have subtitle "filters" and even made subtitle converters part of it, but it was fairly horrible, so don't do that again.

In addition, make runtime changes possible. Since this was supposed to be a quick hack, I just decided to put all subtitle filter options into a separate option group (=> simpler change notification), to manually push the change through the playloop (like it was sort of before for OSD options), and to recreate the sub filter chain completely in every change. Should be good enough.

One strangeness is that due to prefetching and such, most subtitle packets (or those some time ahead) are actually done filtering when we change, so the user still needs to manually seek to actually refresh everything. And since subtitle data is usually cached in ASS_Track (for other terrible but user-friendly reasons), we also must clear the subtitle data, but of course only on seek, since otherwise all subtitles would just disappear. What a fucking mess, but such is life. We could trigger a "refresh seek" to make this more automatic, but I don't feel like it currently.

This is slightly inefficient (lots of allocations and copying), but I decided that it doesn't matter. Could matter slightly for crazy ASS subtitles that render with thousands of events.

Not very well tested. Still seems to work, but I didn't have many test cases.


Thursday 2020-03-05 21:37:52 by wm4

Remove remains of Libav compatibility

Libav seems rather dead: no release for 2 years, no new git commits in master for almost a year (with one exception ~6 months ago). From what I can tell, some developers resigned themselves to the horrifying idea to post patches to ffmpeg-devel instead, while the rest of the developers went on to greener pastures.

Libav was a better project than FFmpeg. Unfortunately, FFmpeg won, because it managed to keep the name and website. Libav was pushed more and more into obscurity: while there was initially a big push for Libav, FFmpeg just remained "in place" and visible for most people. FFmpeg was slowly draining all manpower and energy from Libav. A big part of this was that FFmpeg stole code from Libav (regular merges of the entire Libav git tree), making it some sort of Frankenstein mirror of Libav, think decaying zombie with additional legs ("features") nailed to it. "Stealing" surely is the wrong word; I'm just aping the language that some of the FFmpeg members used to use. All that is in the past now, I'm probably the only person left who is annoyed by this, and with this commit I'm putting this decade long problem finally to an end. I just thought I'd express my annoyance about this fucking shitshow one last time.

The most intrusive change in this commit is the resample filter, which originally used libavresample. Since the FFmpeg developer refused to enable libavresample by default for drama reasons, and the API was slightly different, so the filter used some big preprocessor mess to make it compatible to libswresample. All that falls away now. The simplification to the build system is also significant.


Thursday 2020-03-05 21:37:52 by wm4

sub: add an option to filter subtitles by regex

Works as ad-filter. I had some more plans, for example replacing matching text with different text, but for now it's dropping matches only. There's a big warning in the manpage that I might change semantics. For example, I might turn it into a primitive sed.

In a sane world, you'd probably write a simple script that processes downloaded subtitles before giving them to mpv, and avoid all this complexity. But we don't live in a sane world, and the sooner you learn this, the happier you will be. (But I also want to run this on muxed subtitles.)

This is pretty straightforward. We use POSIX regexes, which are readily available without additional pain or dependencies. This also means it's (apparently) not available on win32 (MinGW). The regex list is because I hate big monolithic regexes, and this makes it slightly better.

Very superficially tested.


< 2020-03-05 >