2,921,111 events, 1,467,280 push events, 2,292,705 commit messages, 177,728,369 characters
[MIRROR] Adds a plumbing layer manifold (#162)
- Adds a plumbing layer manifold (#57494)
Adds a multilayer plumbing manifold, I also murdered the multilayer duct
You can now alt-click the plumbing RCD to change the layer it prints. I made a whole thing where right clicking changed the settings and you could use that to change machinery aswell. I even did that with the plunger, it was absolutely beautiful. Anyway that drained the life out of me because apparently there's no attack_obj_secondary and afterattack_secondary ALSO called attack_obj (left click). I just hate whoever made it with intensity
Plumbing now uses three layers. They should be easier to navigate. I tried to make layer connecting the same as cross-color connecting, but that would take more of my soul then there is to take
- Adds a plumbing layer manifold
Co-authored-by: Time-Green [email protected]
[MIRROR] Makes stations more airtight (#163)
- Makes stations more airtight (#57535)
I've gone through delta, meta, and icebox and added some choice windoors, changed some areas around, added some more doors, and changed some other miscellaneous things.
I'll list the full changes in drop downs, for both our sakes
Delta:
Adds the spaces that jut out of medbay and sci into the central hallway, rather then having them be a part of medbay and sci
Adds medbay access locked windoors to the back desk of the medbay reception area
Adds airlocks to both the upper and lower parts of the main hallway
Meta:
Adds the spaces that jut out of medbay and sci into the central hallway, rather then having them be a part of medbay and sci
Replaces a small bit of the science area with nanite lab, to prevent a breach near xenobio causing fire alarms at the front of sci
Adds a windoor in front of the ORM to block air
Adds a wall behind a smart fridge in chemistry
Icebox:
Added a windoor between the kitchen and the bar
Cuts delta's main hallway in half, with the goal of reducing fire alarm strain. Some thoughts on this would be nice, I don't want to make everything else that uses areas worse just because fire alarms are dumb, and I'm worried that's what I've ended up doing here.
I've also added the portions of medbay/sci that jut out into the main hallway into the main hallway, I think? I could make these into lobby areas, but I'm not sure if that's appropriate or not.
Adds a few windoors and airlocks to better section off portions of the station, this should reduce the amount of mass gas spreading that can occur.
My goal here is to reduce the amount of uninteresting gas movement and make firelocks less hellish when there's a breach
- Makes stations more airtight
Co-authored-by: LemonInTheDark [email protected]
Fuck it we're going with shell scripts
Because Docker on Linux is not the same as Docker on anything else I was running into a lot of issues with file permissions, specifically around the desire to expose the Postgres server's log files back out to the host to allow for some nice fail2ban shenanigans. After some pain (see commit history) I decided that it would just be easier to just use the ./init-script.sh to spin up the docker containers, then run a quick chown with the in container postgres uid:gid, which is 70:70 and appears to be static? Hopefully? Anyway it works so what ever.
I also stopped using docker volumes and am just copying the necessary config files in via the dockerfile now as God intended.
FUCK YOUR DIRT AND FUCK YOU TOO. Also, adds a bathroom to the Head Scribe's office because eVeRy OtHeR hEAd hAs oNe
New data: 2021-03-25. See data notes.
Revise historical data: cases (MB, NB, ON, SK); mortality (MB).
Toronto's case number for today is inflated as it includes "approximately 260 cases from March 18 - March 24 that were not previously reported" due to technical issues
Note regarding deaths added in QC today: “4 new deaths, for a total of 10,630 deaths: 1 death in the last 24 hours, 3 deaths between March 18 and March 23.” We report deaths such that our cumulative regional totals match today’s values. This sometimes results in extra deaths with today’s date when older deaths are removed.
Recent changes:
2021-01-27: Due to the limit on file sizes in GitHub, we implemented some changes to the datasets today, mostly impacting individual-level data (cases and mortality). Changes below:
- Individual-level data (cases.csv and mortality.csv) have been moved to a new directory in the root directory entitled “individual_level”. These files have been split by calendar year and named as follows: cases_2020.csv, cases_2021.csv, mortality_2020.csv, mortality_2021.csv. The directories “other/cases_extra” and “other/mortality_extra” have been moved into the “individual_level” directory.
- Redundant datasets have been removed from the root directory. These files include: recovered_cumulative.csv, testing_cumulative.csv, vaccine_administration_cumulative.csv, vaccine_distribution_cumulative.csv, vaccine_completion_cumulative.csv. All of these datasets are currently available as time series in the directory “timeseries_prov”.
- The file codebook.csv has been moved to the directory “other”.
We appreciate your patience and hope these changes cause minimal disruption. We do not anticipate making any other breaking changes to the datasets in the near future. If you have any further questions, please open an issue on GitHub or reach out to us by email at ccodwg [at] gmail [dot] com. Thank you for using the COVID-19 Canada Open Data Working Group datasets.
- 2021-01-24: The columns "additional_info" and "additional_source" in cases.csv and mortality.csv have been abbreviated similar to "case_source" and "death_source". See note in README.md from 2021-11-27 and 2021-01-08.
Vaccine datasets:
- 2021-01-19: Fully vaccinated data have been added (vaccine_completion_cumulative.csv, timeseries_prov/vaccine_completion_timeseries_prov.csv, timeseries_canada/vaccine_completion_timeseries_canada.csv). Note that this value is not currently reported by all provinces (some provinces have all 0s).
- 2021-01-11: Our Ontario vaccine dataset has changed. Previously, we used two datasets: the MoH Daily Situation Report (https://www.oha.com/news/updates-on-the-novel-coronavirus), which is released weekdays in the evenings, and the “COVID-19 Vaccine Data in Ontario” dataset (https://data.ontario.ca/dataset/covid-19-vaccine-data-in-ontario), which is released every day in the mornings. Because the Daily Situation Report is released later in the day, it has more up-to-date numbers. However, since it is not available on weekends, this leads to an artificial “dip” in numbers on Saturday and “jump” on Monday due to the transition between data sources. We will now exclusively use the daily “COVID-19 Vaccine Data in Ontario” dataset. Although our numbers will be slightly less timely, the daily values will be consistent. We have replaced our historical dataset with “COVID-19 Vaccine Data in Ontario” as far back as they are available.
- 2020-12-17: Vaccination data have been added as time series in timeseries_prov and timeseries_hr.
- 2020-12-15: We have added two vaccine datasets to the repository, vaccine_administration_cumulative.csv and vaccine_distribution_cumulative.csv. These data should be considered preliminary and are subject to change and revision. The format of these new datasets may also change at any time as the data situation evolves.
Note about SK data: As of 2020-12-14, we are providing a daily version of the official SK dataset that is compatible with the rest of our dataset in the folder official_datasets/sk. See below for information about our regular updates.
SK transitioned to reporting according to a new, expanded set of health regions on 2020-09-14. Unfortunately, the new health regions do not correspond exactly to the old health regions. Additionally, the provided case time series using the new boundaries do not exist for dates earlier than August 4, making providing a time series using the new boundaries impossible.
For now, we are adding new cases according to the list of new cases given in the “highlights” section of the SK government website (https://dashboard.saskatchewan.ca/health-wellness/covid-19/cases). These new cases are roughly grouped according to the old boundaries. However, health region totals were redistributed when the new boundaries were instituted on 2020-09-14, so while our daily case numbers match the numbers given in this section, our cumulative totals do not. We have reached out to the SK government to determine how this issue can be resolved. We will rectify our SK health region time series as soon it becomes possible to do so.
Boy I sure love gross hacks to work around scope fuckery.
Many class fixes, changes & improvements (#568)
- Elementalist's Blizzard "remembers" the spell/ability power from when it was cast. Mage's Thunder Step's second damage & the Elementalist's ice spirit's pulses are now also consistent in this regard
- Multiple custom damage instances received in the same tick or the one after will no longer always reset iframes. Thunder Step's second attack had its damage also apply by "fluke" this way, so the second attack now bypasses iframes to keep behaviour similar
- Fixed custom fire tick application & taunt reducing iframes' last damage to almost 0
- Magma Shield & Frost Nova now bypass iframes
- Updated Mage's Magma Shield's description for consistency
- Updated Mage's Frost Nova's description for consistency. Also fixed inaccuracies regarding slowness reduction for elites/bosses & left-click requirements
- Selecting any Mage skill that uses the swap key as part of its trigger will now cancel all swapping as long as you are holding a wand - Thunder Step, Elementalist's Starfall, Arcanist's Spatial Shatter
- Bosses can no longer be stunned by Thunder Step
- Thunder Step's particles now account for varying enemy heights
- Thunder Step no longer forces your look direction upwards when you'd teleport towards the ground. It is highly recommended that you jump to aim it well, but it is not a hard requirement
- Thunder Step's skill description has been further updated for consistency. It now also mentions its swap cancellation
- Updated Elemental Spirits' description to hint at the ice spirit affecting movement
- Elemental Spirits now truly bypasses iframes instead of just resetting them
- Berserker's Meteor Slam no longer requires you to be sneaking to trigger Jump Boost
- Selecting Meteor Slam now cancels all swapping
- Fixed manually triggering Meteor Slam by hitting an enemy not applying Ability Power when adding on to that enemy's received damage. It is now damaged by the slam's AoE just like other nearby enemies
- Improved cancellation mechanisms for Meteor Slam, similar to skills like Elemental Spirits & its particles
- Simplified Meteor Slam's flame particle randomisation & cuts those particles in half down from 60
- Changed the way Meteor Slam calculates fall distance. It will now find your full fall distance instead of handling a vanilla value from the tick before you landed
- Updated Meteor Slam's description for consistency. Also fixed inaccuracies regarding sword/axe attack requirements & added details on block thresholds. It now mentions its swap cancellation
- Updated Starfall's skill description for consistency. It now also mentions its swap cancellation & has added detail on a little of its many intricacies
- Updated Spatial Shatter's skill description for consistency. It now also mentions its swap cancellation & has added detail
- Fixed Arcanist's Astral Omen having wrong durations for its slowness & bonus damage debuff. It now follows its description instead of sharing the 10s duration of omen stacks decaying
- Astral Omen's damage now bypasses iframes
- Fixed many related bugs with omen effect count & level, causing issues with things like proper clearing, decaying & particles
- Updated Astral Omen's skill description for consistency. It now also has added detail
- Fixed Blizzard's damage causing iframe last damage to accumulate higher and higher, which would wrongly block other damage. It now bypasses iframes properly
- Updated Blizzard's extinguishing to be consistent with Frost Nova's
- Updated Blizzard's skill description for consistency. It now also mentions how it will cast instead of Magma Shield while looking up & has added detail
- Slightly tweaked Blizzard/Magma Shield's look up angle allowance & updated Cleric's Cleansing Rain to match
(misc): Cleanup + Refactor
Overall this commit has vastly reduced the amount of stuff going on at
emacs startup. I've gone from about 700/800 features being included in
features to just around 465 (including autoloads).
It's still far higher than it has any need to be but a good improvement all the same.
Changes include:
- Amended
bin/tangleso it tries to avoid eln-cache being made in my user home directory... it doesn't work but it's a slight improvement. - Disable line-numbers in init.org. Apparently it improves performance.
- Move
eglot-maybe-connect+from eglot into my outer base configuration. Technically it doesn't work with lsp-mode yet but it's fine for eglot. - Reconfigure default reccomended modules. Included removing a few un-necessary ones and switching from ivy to selectrum propper.
- Removed ruby-robe... I've never used it and solargraph seems better because it has a consistent LSP backed interface.
- Switched a bunch of defvars into defconst. Hopefully the bytecompiler can inline them or otherwise get a performance boost.
- Disable
menu-bar-modeandtool-bar-modedirectly fromearly-init.el - Update titles for all headings to make them easier to jump to with
consult-outline. From now on try to keep headings labelled in a way where you can understand their meaning without knowing the value of previous or leading headings. - Reduce a bunch of compilation warnings related to unused parameters or free variable declarations.
- Decouple
goto-home-buffercommand from dashboard. - Update lisp-indent-function from upstream doom! emacs.
- Remove over-reliance on
:defer ton use-package and instead make:defer tthe default format for use-package. Now you must specify:demand twhen you don't want things deferred. - Prevent automatic requiring of
org-modeat startup by deferringorg-link-minor-modetill after emacs has started. - Defer loading of
org-roam-mode. It's now enabled after the org-roam package is loaded... but can probably be autoloaded after a few second idle delay. - Move hydras back from
hydras.orgintoinit.org. I initially moved them out due to performance concerns or what not but seeing as I can't use(package-yes! ...)clauses inhydras.orgI've decided to bring them back... hopefully for the last time. - Removed the
open-junk-filepackage. I've literally never used it and currently have my own junk-file setup courtesy of my shell. - Replaced custom ibuffer-icon setup with [[https://github.com/seagle0128/all-the-icons-ibuffer][all-the-icons-ibuffer]].
- Added an initial configuration for (GNU) Info mode.
- Added a command to move up a directory with
find-fileand selectrum. - Replaced custom xref implementation in consult with official one.
- Moved goto-error and goto-compile-error from error map to jump map.
- Added a command to toggle the order of eldoc-documentation-functions in eglot managed buffers. Now you can priorities errors over documentation.
- Removed buggy flycheck configuration for eglot. Lets face it, it's never gonna happen.
- Removed jupyter-notebook related configs. God help me if I should ever need them.
- Replaced
evil-magitwith custom fork insideinit.org. The upstream maintainer seems to have left ([[https://github.com/emacs-evil/evil-magit/issues/87][#87]]) evil magit behind, so rather than installing all of evil-collection I've copy-pasted the bare minimum needed to get a usable magit experience. - Added git-forge configuration... still seems kinda buggy but it's usable.
- Adapted
skeletor-expand-project+to be more flexible with project directories and automatic detection of project names. - Removed the default skeletor project types cause I've like never used them.
- Added the
modern-cpp-font-lockpackage to the c/cpp module. - Adapted
bibtex-insert-pdftools-link+to allow replacing the active region when active with bibtex selection. - Update avy faces in theme to have better contrast.
- Update lockfile versions for straight.
sched/core: Fix ttwu() race
Paul reported rcutorture occasionally hitting a NULL deref:
sched_ttwu_pending() ttwu_do_wakeup() check_preempt_curr() := check_preempt_wakeup() find_matching_se() is_same_group() if (se->cfs_rq == pse->cfs_rq) <-- BOOM
Debugging showed that this only appears to happen when we take the new code-path from commit:
2ebb17717550 ("sched/core: Offload wakee task activation if it the wakee is descheduling")
and only when @cpu == smp_processor_id(). Something which should not be possible, because p->on_cpu can only be true for remote tasks. Similarly, without the new code-path from commit:
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
this would've unconditionally hit:
smp_cond_load_acquire(&p->on_cpu, !VAL);
and if: 'cpu == smp_processor_id() && p->on_cpu' is possible, this would result in an instant live-lock (with IRQs disabled), something that hasn't been reported.
The NULL deref can be explained however if the task_cpu(p) load at the beginning of try_to_wake_up() returns an old value, and this old value happens to be smp_processor_id(). Further assume that the p->on_cpu load accurately returns 1, it really is still running, just not here.
Then, when we enqueue the task locally, we can crash in exactly the observed manner because p->se.cfs_rq != rq->cfs_rq, because p's cfs_rq is from the wrong CPU, therefore we'll iterate into the non-existant parents and NULL deref.
The closest semi-plausible scenario I've managed to contrive is somewhat elaborate (then again, actual reproduction takes many CPU hours of rcutorture, so it can't be anything obvious):
X->cpu = 1
rq(1)->curr = X
CPU0 CPU1 CPU2
// switch away from X
LOCK rq(1)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 9
switch_to(Z)
X->on_cpu = 0
UNLOCK rq(1)->lock
// migrate X to cpu 0
LOCK rq(1)->lock
dequeue_task(X)
set_task_cpu(X, 0)
X->cpu = 0
UNLOCK rq(1)->lock
LOCK rq(0)->lock
enqueue_task(X)
X->on_rq = 1
UNLOCK rq(0)->lock
// switch to X
LOCK rq(0)->lock
smp_mb__after_spinlock
switch_to(X)
X->on_cpu = 1
UNLOCK rq(0)->lock
// X goes sleep
X->state = TASK_UNINTERRUPTIBLE
smp_mb(); // wake X
ttwu()
LOCK X->pi_lock
smp_mb__after_spinlock
if (p->state)
cpu = X->cpu; // =? 1
smp_rmb()
// X calls schedule()
LOCK rq(0)->lock
smp_mb__after_spinlock
dequeue_task(X)
X->on_rq = 0
if (p->on_rq)
smp_rmb();
if (p->on_cpu && ttwu_queue_wakelist(..)) [*]
smp_cond_load_acquire(&p->on_cpu, !VAL)
cpu = select_task_rq(X, X->wake_cpu, ...)
if (X->cpu != cpu)
switch_to(Y)
X->on_cpu = 0
UNLOCK rq(0)->lock
However I'm having trouble convincing myself that's actually possible on x86_64 -- after all, every LOCK implies an smp_mb() there, so if ttwu observes ->state != RUNNING, it must also observe ->cpu != 1.
(Most of the previous ttwu() races were found on very large PowerPC)
Nevertheless, this fully explains the observed failure case.
Fix it by ordering the task_cpu(p) load after the p->on_cpu load, which is easy since nothing actually uses @cpu before this.
Fixes: c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu") Reported-by: Paul E. McKenney [email protected] Tested-by: Paul E. McKenney [email protected] Signed-off-by: Peter Zijlstra (Intel) [email protected] Signed-off-by: Ingo Molnar [email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Forenche [email protected]
Create dubstep.js
Dubstep!!!
Polycarpus works as a DJ in the best Berland nightclub, and he often uses dubstep music in his performance. Recently, he has decided to take a couple of old songs and make dubstep remixes from them.
Let's assume that a song consists of some number of words (that don't contain WUB). To make the dubstep remix of this song, Polycarpus inserts a certain number of words "WUB" before the first word of the song (the number may be zero), after the last word (the number may be zero), and between words (at least one between any pair of neighboring words), and then the boy glues together all the words, including "WUB", in one string and plays the song at the club.
For example, a song with the words "I AM X" can transform into a dubstep remix as "WUBWUBIWUBAMWUBWUBX" and cannot transform into "WUBWUBIAMWUBX".
Recently, Jonny has heard Polycarpus's new dubstep track, but since he isn't into modern music, he decided to find out what was the initial song that Polycarpus remixed. Help Jonny restore the original song.
Input The input consists of a single non-empty string, consisting only of uppercase English letters, the string's length doesn't exceed 200 characters
Output Return the words of the initial song that Polycarpus used to make a dubstep remix. Separate the words with space.
Examples songDecoder("WUBWEWUBAREWUBWUBTHEWUBCHAMPIONSWUBMYWUBFRIENDWUB") // => WE ARE THE CHAMPIONS MY FRIEND
Tags: FUNDAMENTALS, STRINGS
hi
yes hello tithsi is me harko im harko im very cool my life is very cool i live in a cool house cool famiky family cooks very cool meal me like it!!! sister plays roblox (normie) and nad i have cool friends like Federal Bureau Of Fart!!!! yes i am very famous and funny
Rename HackerRank/The Love-Letter Mystery/solution.py to HackerRank/The Love-Letter Mystery (Easy)/solution.py
fuck you I dont like how fragments in fragments work
fucking fix it
imgact_binmisc: limit the extent of match on incoming entries
imgact_binmisc matches magic/mask from imgp->image_header, which is only a single page in size mapped from the first page of an image. One can specify an interpreter that matches on, e.g., --offset 4096 --size 256 to read up to 256 bytes past the mapped first page.
The limitation is that we cannot specify a magic string that exceeds a single page, and we can't allow offset + size to exceed a single page either. A static assert has been added in case someone finds it useful to try and expand the size, but it does seem a little unlikely.
While this looks kind of exploitable at a sideways squinty-glance, there are a couple of mitigating factors:
1.) imgact_binmisc is not enabled by default, 2.) entries may only be added by the superuser, 3.) trying to exploit this information to read what's mapped past the end would be worse than a root canal or some other relatably painful experience, and 4.) there's no way one could pull this off without it being completely obvious.
The first page is mapped out of an sf_buf, the implementation of which (or lack thereof) depends on your platform.
MFC after: 1 week
Now we read zfp_accuracy_LOFS from LOFS data, and write the values to the netcdf files, along with the chosen ZFP accuracy for the hdf2nc netcdf output file. To be clear: The point of all of this is to get the benefit from ZFP not just from LOFS but from the netCDF files that are created on the fly with hdf2nc. There is no reason to make the ZFP accuracy parameter smaller for the netCDF file than was set in CM1; in fact I think I'll make a check for that... and right now the ZFP accuracy parameter for the netcdf file is hardwired in the code. If you want to change these, you have to go and change the constant in set_nc_meta_zfp_name_units in our big if else ladder that loops through all the possible variables:
else if(same(var,"thrhopert")) set_nc_meta_zfp_name_units(5.0e-2,cmd->zfp,nid,v3did,"long_name","density_potential_temperature_perturbation","K"); ^^^^^^ This if/then/else ladder is where all of the variable-dependent stuff happens. It really makes no sense to me to create another place where all of these are set, only to use a uniquely named variable for the ZFP accuracy parameter.
There may be a more elegant way to do this in C but if there is I don't know what it is. I'd really like a case statement but those only work with integers in C...
And to be abundantly clear, yes, we are compressing with CM1, uncompressing with hdf2nc, and recompressing back to ZFP in the netCDF files. So long as our accuracy parameters aren't stupid this should result in what we want w/out any artifats.
The moral of the story is to be aware of these compression values... and don't do anything stupid! I send stuff to standard output/error to remind people of things (right now only with --verbose). I'll probably fiddle a bit with this but the good news is, it works.
MINOR: compat: add short aliases for a few very commonly used types
Very often we use "int" where negative numbers are not needed (and can further cause trouble) just because it's painful to type "unsigned int" or "unsigned", or ugly to use in function arguments. Similarly sometimes chars would absolutely need to be signed but nobody types "signed char". Let's add a few aliases for such types and make them part of the standard internal API so that over time we can get used to them and get rid of horrible definitions. A comment also reminds some commonly available types and their properties regarding other types.
Created Text For URL [www.iol.co.za/thepost/news/fighter-pilot-remembered-for-his-kindness-and-love-for-the-skies--368560fa-8b9e-4274-a14d-c8ba5112fd74]
battle-city-mp: fix using x in place of y fuck you brain
emissive blockers are now just an overlay (with kickass fucking graphs). FUCK YOU MAPTICK (#57934)
currently emissive blockers are objects added to the vis_contents of every item. however mutable appearances as overlays can serve this role perfectly well and according to my tests should cause less maptick per item. for mobs mutable appearances dont work for reasons i dont understand so instead this adds the em_block object to overlays instead of vis_contents. these both use atom/movable/update_icon() now
graphed test results in pr
feat!: #5 STATUES
BREAKING CHANGES: Forge version / mapping updated to 35.1.37 / 20201028-1.16.3 respectively.
Work in progress. No worldgen. Dialog is missing many lines and littered with TODO errors and NOTEXTs. Would be appreciated if someone can provide footage of missing lines...
New block, Goddess Statue, with one default and two alternative looks. Can actually talk and get orbs exchanged to vessels. Horned Statue is also redesigned. Now you talk to him to convert vessels using emeralds. Yeah :/ Not free anymore. But the first one is free, like in BotW. New item called Anti-Vessel is added, it's creative-only consumable that returns all Heart Containers / Stamina Vessels you consumed as items. It's basically what pre-update Horned Statue did. Vessel crafting recipe is gone. Use Goddess Statue. Besides, yeah, just JSON-based dialog system capable of handling fairly complicated sequences and basic server-client communication, animated dialog screen(oh my god I HATE minecraft GUI system so much), datagen stuff, achievements used by horned statue, bunch of code cleanup here and there, and 2 months of my life fucking annihilated because this damn thing lmao