2,165,157 events recorded by gharchive.org of which 2,165,157 were push events containing 3,215,396 commit messages that amount to 256,670,168 characters filtered with words.py@e23d022007... to these 51 messages:
Releasing american-chemical-society.csl american-medical-association-no-url-alphabetical.csl american-medical-association-parentheses.csl american-medical-association.csl amsterdam-university-press-academic.csl angiology.csl apa-annotated-bibliography.csl apa-cv.csl apa-no-ampersand.csl apa-no-initials.csl apa-numeric-superscript-brackets.csl apa-numeric-superscript.csl apa-single-spaced.csl apa-with-abstract.csl apa.csl arcadia-science.csl association-for-computational-linguistics.csl biologiceskie-membrany.csl biotechnology-and-bioprocess-engineering.csl bluebook-law-review.csl cahiers-mondes-anciens.csl cambridge-university-press-author-date-cambridge-a.csl cambridge-university-press-author-date.csl cell.csl chicago-author-date.csl computer-supported-cooperative-work.csl constructivist-foundations.csl dependent/acta-medica-philippina.csl dependent/cancer-cell.csl dependent/cell-chemical-biology.csl dependent/cell-genomics.csl dependent/cell-host-and-microbe.csl dependent/cell-metabolism.csl dependent/cell-reports-medicine.csl dependent/cell-reports-methods.csl dependent/cell-reports-physcial-science.csl dependent/cell-reports.csl dependent/cell-stem-cell.csl dependent/cell-systems.csl dependent/chem-catalysis.csl dependent/chem.csl dependent/conservation-science-and-practice.csl dependent/current-biology.csl dependent/development-growth-differentiation.csl dependent/developmental-cell.csl dependent/hgg-advances.csl dependent/immunity.csl dependent/iscience.csl dependent/joule.csl dependent/journal-of-the-american-society-for-mass-spectrometry.csl dependent/journal-of-the-national-cancer-institute.csl dependent/matter.csl dependent/med.csl dependent/molecular-cell.csl dependent/molecular-therapy-methods-and-clinical-development.csl dependent/molecular-therapy-nucleic-acids.csl dependent/molecular-therapy-oncolytics.csl dependent/molecular-therapy.csl dependent/negative-results.csl dependent/neuron.csl dependent/one-earth.csl dependent/patterns.csl dependent/star-protocols.csl dependent/structure.csl dependent/the-american-journal-of-human-genetics.csl dependent/the-american-journal-of-sports-medicine.csl emerald-harvard.csl engineering-technology-and-applied-science-research.csl estonian-journal-of-earth-sciences.csl exploration-of-targeted-anti-tumor-therapy.csl genetics-and-molecular-biology.csl geographical-analysis.csl gnosis-journal-of-gnostic-studies.csl harvard-anglia-ruskin-university.csl harvard-stellenbosch-university.csl harvard-university-of-abertay-dundee.csl iawa-journal.csl ieee.csl international-union-of-crystallography.csl interpreting.csl isara-iso-690.csl journal-of-dairy-research.csl journal-of-medical-internet-research.csl journal-of-plankton-research.csl journal-of-the-american-college-of-cardiology.csl karstenia.csl law-citation-manual.csl les-mondes-du-travail.csl lund-university-school-of-economics-and-management.csl mary-ann-liebert-vancouver.csl mcgill-fr.csl medizinische-hochschule-hannover.csl modern-humanities-research-association-author-date.csl modern-humanities-research-association.csl mots.csl norsk-apa-manual-note.csl norsk-apa-manual.csl norsk-henvisningsstandard-for-rettsvitenskapelige-tekster.csl nottingham-trent-university-library-harvard.csl nys-nydanske-sprogstudier.csl oil-shale.csl pallas.csl physiotherapy-theory-and-practice.csl politix.csl proceedings-of-the-estonian-academy-of-sciences-author-date.csl proceedings-of-the-estonian-academy-of-sciences-numeric.csl rassegna-degli-archivi-di-stato-bibliografia-generale.csl rassegna-degli-archivi-di-stato.csl review-of-international-studies.csl royal-society-of-chemistry.csl scientific-online-letters-on-the-atmosphere.csl sn-computer-science.csl social-science-history.csl society-of-biblical-literature-fullnote-bibliography.csl sociologia-ruralis.csl stem-cell-reports.csl taylor-and-francis-ama.csl taylor-and-francis-chicago-b-author-date.csl the-journal-of-pain.csl trends-journals.csl triangle.csl ucl-university-college-apa.csl ucl-university-college-harvard.csl universidade-federal-de-sergipe-departamento-de-engenharia-de-producao-abnt.csl vancouver.csl veterinary-record-open.csl vox-sanguinis.csl zeitschrift-fur-deutsche-philologie.csl cell-numeric-superscript.csl dependent/stem-cell-reports.csl dependent/veterinary-record-open.csl moore-theological-college.csl the-american-journal-of-human-genetics.csl
Create Karaoke song selector
Step 1 Ever sung karaoke? It's a place where you sing songs with your friends, and it's a lot of fun. We've created a table with songs, and in this challenge, you'll use queries to decide what songs to sing. For the first step, select all the song titles.
Step 2 Maybe your friends only like singing either recent songs or truly epic songs. Add another SELECT that uses OR to show the titles of the songs that have an 'epic' mood or a release date after 1990.
(Tip: If you're not sure how to select rows where a column equals a value, remember that you can check the documentation below.)
Step 3 People get picky at the end of the night. Add another SELECT that uses AND to show the titles of songs that are 'epic', and released after 1990, and less than 4 minutes long. Note that the duration column is measured in seconds.
Add Michael Jordan to NBA Jam! Rewind Edition!
nbajamtr
Personal thanks to DemiGodX for working on this amazing hack, as well as Mahoneyt944, Zoltan45...And, of course, those who worked on the original game!
Support with this hacked revision also incorporates and is supplemented by Shaquille O'Neal, Mortal Kombat Characters (complete with fatalities!), as well as playable cheerleaders, smashable backboards, and other such fun stuff that the NBA would have never wanted in this game:)
Enjoy!
fixed DialogBox
the DialogBox was maybe the first semi-complex system integrated into the game, and oh boy is it a mess. i realize now that there were problems due to the fact that both "examine" and "attack" actions are meant to advance dialog, but for when dialog is supposed to get advanced by buttons (ie. question posed to the player), the system was fucking up big time. except, it wasn't throwing errors: it simply behaved wrong, displaying the wrong dialog indexes at the wrong times, having buttons do random things... etc. the system has been re-written as follows: in regular dialog conversations, pressing either the "attack" or "examine" actions can result in 1 of 3 occurrences:
-
if the dialog is "finished" (fully displayed) on its last conversation index, ends the dialog;
-
if the dialog is currently in the middle of being revealed (ie., it's "typing"), then load_dialog() reveals the rest of the text and sets finished = true;
-
if the dialog is fully displayed (finished = true), and there remains more dialog in the next conversation index, load_dialog() handles the next dialog event. so it either ends the dialog, reveals the current dialog, or goes to the next index in the dialog. when a dialog entry is fully displayed (finished = true). when we call event_handler(event), indicating a next dialog event, finished becomes false. if the event (which is a dictionary with each key referring to dialog behaviour, ie.; "name", "text") matches an event (eg., {'text'}, {'name', 'text'}, we call the appropriate functions. if the event includes {'question'}, then that means we have to change behaviour a bit: asking_question becomes true. this variable is used for 2 things:
-
during _process(), we check if asking_question == true. if it is, we set $OptionsRect.visible to finished, revealing it;
-
if a dialog's text is fully revealed, we check if asking_question: if we are, we start the TimerDelaySelect, which delays the option buttons from grabbing focus for a short moment. when it grabs focus, we also set "waiting_for_input" to true. whenever _input() received an InputEvent (of which only "attack" & "examine" are checked for), we check if waiting_for_input and discard (return void) the input function if it's true. this is because we don't want the InputEvent that presses the option button to also call load_dialog(). when a button is pressed, it can have a 'variable' key in its event dictionary. this 'variable' is used to connect its button pressed signal to the DialogBox's _on_option_selected(_option, variable, value) method, which itself is used to skip dialog indexes in a dialog_script. a button can instead contain a 'checkpoint' key in its event dictionary, which is used to connects its button pressed signal to the DialogBox's change_position(_i, checkpoint) method. this is to "go back" in dialog ("Do you want me to repeat that?" ... etc.) so the above 2 functions effectively alter the value of "dialog_index" before calling load_dialog(). what's interesting about this system is that the Buttons do not need to be coded or configured with any functionality themselves. their functionality is inferred by event_handler() and what it finds in the dialog_scripts:
{ "name": "Skeleton", "question": "Yes or no?", "options": [ { "label": "Yes", "skip": "0"}, { "label": "No", "skip": "1"}, { "label": "Maybe", "skip": "2"} ], "variable": "answer", },
the above is an example of a single conversation index (dialog event). god the naming is horrible. the keys in the outer dict ("name", "question", etc.) are the "events" being passed to event_handler(). if event_handler() finds "question", then there MUST be an "options" key as well. the value of "options" must be an array; each index of the array corresponds to a button (option) that will be created for the DialogBox, and contains its text and its "skip" value. the text is used to adorn the button, and the "skip" value is the number of indexes in the dialog_script to skip after choosing this option.
button.text = o['label'] button.connect("pressed",Callable(self,"_on_option_selected").bind(button, event['variable'], o))
_on_option_selected(button, variable, options): advance_dialog(int(options['skip']))
what the above snippet does is grab the "skip" value from its corresponding "options" index in the dialog event. advance_dialog() is called, updating dialog_index, before load_dialog() is called.
there is a lot of un-used code in the DialogBox. some of it has to do with Global.custom_variables[], which - through the DialogBox scene - dialog_scripts can set. these custom variables can then be retrieved in un-related dialog_scripts through DialogBox. the idea is that if you give an NPC an "answer", that "answer" is stored in a global custom_variable array and can be grabbed from somewhere else in the program - at least, theoretically. i haven't tried doing this yet with two NPCs.
[MIRROR] *hand, or That /One/ Emote You Always Felt Was Missing [MDB IGNORE] (#18200)
- *hand, or That /One/ Emote You Always Felt Was Missing (#71600)
It's happened to me repeatedly that I'd see someone down on the floor, and wanted to just, give them a hand, so they could take it and get up that way, without just, directly clicking on them, since that's a little bland. I've also wanted to just, offer my hand to someone so they could grab it, so that I could pull them alongside me, rather than just targeting one of their arms and ctrl-clicking them.
I've had this idea for a long time, and only just decided to do this today.
Now, I know what you might say. "Golden, that's a lot of code for
something this simple!" You're not wrong. However. I decided to go
along and to give some more love to the /datum/status_effect/offering
status effect and the offering-related alerts, to make them a lot more
versatile and a lot less hardcoded. Hence the whole "refactoring" part
of this.
Of course, when I add something, I don't do it half-way. So, the way the
emote works is much like the *slap
emote, except that:
- When you click on someone, it does the exact same as if you were offering the item to them, except that it's targeted (much like ctrl-shift-click).
- If there's nobody directly adjacent to you, it won't do anything.
- If there's at least one person lying down around you, you will offer them your help to get up. Should they take your hand and let you help them up, you will both receive a simple memory about being helped up (or helping up), as well as a 45-seconds-long small mood buff, because it feels nice to be on either end of such a friendly gesture. If they get up, they automatically get disqualified from being offered some help standing up, and likewise, if you lie down, that offer goes away as well.
- If there's at least one person around you, you will instead extend your hand in their direction, for them to grab onto it. Should they do so, you will then grab them by their arms and pull them.
I reworked the offering status effect to no longer have a hardcoded
can_hold_items()
check, so that kisses and the hand offering would no
longer need you to have free hands to complete. The logic here is that
you can still pull someone even with both hands filled, so I figured I'd
leave it this way.
Note: If anyone would like to give the item a better sprite, by all means, go ahead, that'd be amazing. I'm just not really a great spriter and couldn't be bothered to waste hours making a very meh hand.
It's fluff, and nice fluff at that. It makes it easier for people to be nice to one-another without having to necessarily spend so long writing up an emote that the person on the floor will already have gotten back up. I'm sure the MRP folks will like it, and I'm certain the HRP downstreams will love it too ;)
🆑 add: Added the *hand emote, which you can offer to someone standing up in order to give them the possibility to grab onto your hand and let you drag them away, or to someone lying down to help them back up, which always makes everyone involved a little happier! refactor: De-hardcoded and genericized a lot of the offering status effect and alert code, to make it require a lot less copy-paste to handle new cases. fix: Offering a kiss no longer requires the receiver to have free hands to accept said kiss! /🆑
- *hand, or That /One/ Emote You Always Felt Was Missing
Co-authored-by: GoldenAlpharex [email protected]
[arm] O frabjous day! Working USB firmware for STM32F303/F072!!!!!
Late last night I realized that I the "variable" defining word was wrong, and wouldn't work for code compiled into flash.
I fixed it, re-compiled the USB test code, and it immediately worked!
This is after trying over and over to get it to work, and basically giving up on ST and the STM32. It turned out to be a stupid simple mistake on my part.
I've made a few small changes to the USB code, including commenting out the possibly offensive "manufacturer string" and replacing it with something banal.
I've also made the USB code the "out of the box" code that the STM32F072 Discovery and F3 Discovery board files load.
You too can try this at home!
./muforth -f target/ARM/board/stm32f072b-discovery.mu4
OR
./muforth -f target/ARM/board/stm32f3-discovery.mu4
then
jtag flash-image verify
Reset the board, plug into the "user USB" jack, and watch your favorite OS enumerate the board. I've had success with Linux and Windows 10.
Pressing the reset switch will disconnect from the USB, and the board will re-enumerate.
It doesn't do anything more than that, but the hard part was getting to this point. Adding code to process vendor requests to turn it into a chat target is pretty easy.
Super exciting!!!!
contracts/checkpointoracle,contracts/checkpointoracle/contract,params/types/genesisT: run 'go generate ./...' with partial success
A few things I learned along the way this evening.
- solc in path must be 0.6.0 or some mysterious upper bound less than the latest available versions that I also tried.
- solcjs is not solc. npm install solc installs solcjs which is like solc but is not solc.
All of this partially fixes an error which looked like this.
go generate ./... protoc-gen-go: no such flag -import_path --go_out: protoc-gen-go: Plugin failed with status code 1. accounts/usbwallet/trezor/trezor.go:45: running 'protoc': exit status 1 Error: Source file requires different compiler version (current compiler is 0.8.5+commit.a4f2e591.Linux.g++) - note that nightly builds are considered to be strictly less than the released version --> contract/oracle.sol:1:1: | 1 | pragma solidity ^0.6.0; | ^^^^^^^^^^^^^^^^^^^^^^^
contracts/checkpointoracle/oracle.go:20: running 'solc': exit status 1
The error now looks like this
go generate ./... protoc-gen-go: no such flag -import_path --go_out: protoc-gen-go: Plugin failed with status code 1.
Maybe we don't even want these changes. I don't know. I just want the command to work for the sake of order in the universe.
But seriously
- maybe we should upgrade the Solidity version pragma too/instead?
- maybe proto-gen-go actually wants a different version than 'latest', (which is what 'make devtools' installs).
Goodnight, dream of green lights.
Date: 2022-12-20 19:40:04-08:00 Signed-off-by: meows [email protected]
too much and i don't remember
jesus christ. uhhh let's see:
- cleaned out a lot of old folders that are junk. sorry nucleator and pyro and nemxe but your models aren't even up todate. die.
- started reimplementing chirr. finished primary other than adding animation
- did some nemmando stuff. yellow-d more vfx, slight number tweaks. idk what else sorry.
- i should push more often so i have better commit descs LOL sorry
Teleporter tgui and minor refactor (#1997)
converts teleporters to tgui and removes some shitcode
fuck nanoui
🆑 ui: swapped teleporters to use tgui. fix: teleporter consoles now have actual sprites! code: "improved" some teleporter code. /🆑
Co-authored-by: Stan_Albatross [email protected] Co-authored-by: harryob [email protected]
removes unused nanoui templates (#2012)
fuck nanoui
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 del: Removed ten unused nanoui templates. Don't worry, they'll all be going away soon. /🆑
Co-authored-by: Stan_Albatross [email protected]
Remove 6 Gaps, add Private Room
Remove 6 Gaps, 5 Builders from Quirky. On Lemmings Forums, we think it's not pulling its weight as a puzzle, even if we were to fix it so that no single builder can cross 2 gaps, and you'd need 2 builders to cross 3 gaps.
Move Ferry Tale from Lovely into Quirky. It's hard enough.
Add Private Room Without Room, a new level by mobius, to Lovely. This fills Ferry Tale's old slot.
BACKPORT: signal: add pidfd_send_signal() syscall
The kill() syscall operates on process identifiers (pid). After a process has exited its pid can be reused by another process. If a caller sends a signal to a reused pid it will end up signaling the wrong process. This issue has often surfaced and there has been a push to address this problem [1].
This patch uses file descriptors (fd) from proc/ as stable handles on struct pid. Even if a pid is recycled the handle will not change. The fd can be used to send signals to the process it refers to. Thus, the new syscall pidfd_send_signal() is introduced to solve this problem. Instead of pids it operates on process fds (pidfd).
/* prototype and argument /* long pidfd_send_signal(int pidfd, int sig, siginfo_t *info, unsigned int flags);
/* syscall number 424 */ The syscall number was chosen to be 424 to align with Arnd's rework in his y2038 to minimize merge conflicts (cf. [25]).
In addition to the pidfd and signal argument it takes an additional siginfo_t and flags argument. If the siginfo_t argument is NULL then pidfd_send_signal() is equivalent to kill(, ). If it is not NULL pidfd_send_signal() is equivalent to rt_sigqueueinfo(). The flags argument is added to allow for future extensions of this syscall. It currently needs to be passed as 0. Failing to do so will cause EINVAL.
/* pidfd_send_signal() replaces multiple pid-based syscalls */ The pidfd_send_signal() syscall currently takes on the job of rt_sigqueueinfo(2) and parts of the functionality of kill(2), Namely, when a positive pid is passed to kill(2). It will however be possible to also replace tgkill(2) and rt_tgsigqueueinfo(2) if this syscall is extended.
/* sending signals to threads (tid) and process groups (pgid) */ Specifically, the pidfd_send_signal() syscall does currently not operate on process groups or threads. This is left for future extensions. In order to extend the syscall to allow sending signal to threads and process groups appropriately named flags (e.g. PIDFD_TYPE_PGID, and PIDFD_TYPE_TID) should be added. This implies that the flags argument will determine what is signaled and not the file descriptor itself. Put in other words, grouping in this api is a property of the flags argument not a property of the file descriptor (cf. [13]). Clarification for this has been requested by Eric (cf. [19]). When appropriate extensions through the flags argument are added then pidfd_send_signal() can additionally replace the part of kill(2) which operates on process groups as well as the tgkill(2) and rt_tgsigqueueinfo(2) syscalls. How such an extension could be implemented has been very roughly sketched in [14], [15], and [16]. However, this should not be taken as a commitment to a particular implementation. There might be better ways to do it. Right now this is intentionally left out to keep this patchset as simple as possible (cf. [4]).
/* naming */ The syscall had various names throughout iterations of this patchset:
- procfd_signal()
- procfd_send_signal()
- taskfd_send_signal() In the last round of reviews it was pointed out that given that if the flags argument decides the scope of the signal instead of different types of fds it might make sense to either settle for "procfd_" or "pidfd_" as prefix. The community was willing to accept either (cf. [17] and [18]). Given that one developer expressed strong preference for the "pidfd_" prefix (cf. [13]) and with other developers less opinionated about the name we should settle for "pidfd_" to avoid further bikeshedding.
The "_send_signal" suffix was chosen to reflect the fact that the syscall takes on the job of multiple syscalls. It is therefore intentional that the name is not reminiscent of neither kill(2) nor rt_sigqueueinfo(2). Not the fomer because it might imply that pidfd_send_signal() is a replacement for kill(2), and not the latter because it is a hassle to remember the correct spelling - especially for non-native speakers - and because it is not descriptive enough of what the syscall actually does. The name "pidfd_send_signal" makes it very clear that its job is to send signals.
/* zombies */ Zombies can be signaled just as any other process. No special error will be reported since a zombie state is an unreliable state (cf. [3]). However, this can be added as an extension through the @flags argument if the need ever arises.
/* cross-namespace signals */ The patch currently enforces that the signaler and signalee either are in the same pid namespace or that the signaler's pid namespace is an ancestor of the signalee's pid namespace. This is done for the sake of simplicity and because it is unclear to what values certain members of struct siginfo_t would need to be set to (cf. [5], [6]).
/* compat syscalls */ It became clear that we would like to avoid adding compat syscalls (cf. [7]). The compat syscall handling is now done in kernel/signal.c itself by adding __copy_siginfo_from_user_generic() which lets us avoid compat syscalls (cf. [8]). It should be noted that the addition of __copy_siginfo_from_user_any() is caused by a bug in the original implementation of rt_sigqueueinfo(2) (cf. 12). With upcoming rework for syscall handling things might improve significantly (cf. [11]) and __copy_siginfo_from_user_any() will not gain any additional callers.
/* testing */ This patch was tested on x64 and x86.
/* userspace usage */ An asciinema recording for the basic functionality can be found under [9]. With this patch a process can be killed via:
#define _GNU_SOURCE #include <errno.h> #include <fcntl.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include <sys/syscall.h> #include <sys/types.h> #include <unistd.h>
static inline int do_pidfd_send_signal(int pidfd, int sig, siginfo_t *info, unsigned int flags) { #ifdef __NR_pidfd_send_signal return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags); #else return -ENOSYS; #endif }
int main(int argc, char *argv[]) { int fd, ret, saved_errno, sig;
if (argc < 3)
exit(EXIT_FAILURE);
fd = open(argv[1], O_DIRECTORY | O_CLOEXEC);
if (fd < 0) {
printf("%s - Failed to open \"%s\"\n", strerror(errno), argv[1]);
exit(EXIT_FAILURE);
}
sig = atoi(argv[2]);
printf("Sending signal %d to process %s\n", sig, argv[1]);
ret = do_pidfd_send_signal(fd, sig, NULL, 0);
saved_errno = errno;
close(fd);
errno = saved_errno;
if (ret < 0) {
printf("%s - Failed to send signal %d to process %s\n",
strerror(errno), sig, argv[1]);
exit(EXIT_FAILURE);
}
exit(EXIT_SUCCESS);
}
/* Q&A
- Given that it seems the same questions get asked again by people who are
- late to the party it makes sense to add a Q&A section to the commit
- message so it's hopefully easier to avoid duplicate threads.
- For the sake of progress please consider these arguments settled unless
- there is a new point that desperately needs to be addressed. Please make
- sure to check the links to the threads in this commit message whether
- this has not already been covered. */ Q-01: (Florian Weimer [20], Andrew Morton [21]) What happens when the target process has exited? A-01: Sending the signal will fail with ESRCH (cf. [22]).
Q-02: (Andrew Morton [21]) Is the task_struct pinned by the fd? A-02: No. A reference to struct pid is kept. struct pid - as far as I understand - was created exactly for the reason to not require to pin struct task_struct (cf. [22]).
Q-03: (Andrew Morton [21]) Does the entire procfs directory remain visible? Just one entry within it? A-03: The same thing that happens right now when you hold a file descriptor to /proc/ open (cf. [22]).
Q-04: (Andrew Morton [21]) Does the pid remain reserved? A-04: No. This patchset guarantees a stable handle not that pids are not recycled (cf. [22]).
Q-05: (Andrew Morton [21]) Do attempts to signal that fd return errors? A-05: See {Q,A}-01.
Q-06: (Andrew Morton [22]) Is there a cleaner way of obtaining the fd? Another syscall perhaps. A-06: Userspace can already trivially retrieve file descriptors from procfs so this is something that we will need to support anyway. Hence, there's no immediate need to add another syscalls just to make pidfd_send_signal() not dependent on the presence of procfs. However, adding a syscalls to get such file descriptors is planned for a future patchset (cf. [22]).
Q-07: (Andrew Morton [21] and others) This fd-for-a-process sounds like a handy thing and people may well think up other uses for it in the future, probably unrelated to signals. Are the code and the interface designed to permit such future applications? A-07: Yes (cf. [22]).
Q-08: (Andrew Morton [21] and others) Now I think about it, why a new syscall? This thing is looking rather like an ioctl? A-08: This has been extensively discussed. It was agreed that a syscall is preferred for a variety or reasons. Here are just a few taken from prior threads. Syscalls are safer than ioctl()s especially when signaling to fds. Processes are a core kernel concept so a syscall seems more appropriate. The layout of the syscall with its four arguments would require the addition of a custom struct for the ioctl() thereby causing at least the same amount or even more complexity for userspace than a simple syscall. The new syscall will replace multiple other pid-based syscalls (see description above). The file-descriptors-for-processes concept introduced with this syscall will be extended with other syscalls in the future. See also [22], [23] and various other threads already linked in here.
Q-09: (Florian Weimer [24]) What happens if you use the new interface with an O_PATH descriptor? A-09: pidfds opened as O_PATH fds cannot be used to send signals to a process (cf. [2]). Signaling processes through pidfds is the equivalent of writing to a file. Thus, this is not an operation that operates "purely at the file descriptor level" as required by the open(2) manpage. See also [4].
/* References */ [1]: https://lore.kernel.org/lkml/[email protected]/ [2]: https://lore.kernel.org/lkml/[email protected]/ [3]: https://lore.kernel.org/lkml/[email protected]/ [4]: https://lore.kernel.org/lkml/[email protected]/ [5]: https://lore.kernel.org/lkml/[email protected]/ [6]: https://lore.kernel.org/lkml/[email protected]/ [7]: https://lore.kernel.org/lkml/[email protected]/ [8]: https://lore.kernel.org/lkml/[email protected]/ [9]: https://asciinema.org/a/IQjuCHew6bnq1cr78yuMv16cy [11]: https://lore.kernel.org/lkml/[email protected]/ [12]: https://lore.kernel.org/lkml/[email protected]/ [13]: https://lore.kernel.org/lkml/[email protected]/ [14]: https://lore.kernel.org/lkml/[email protected]/ [15]: https://lore.kernel.org/lkml/[email protected]/ [16]: https://lore.kernel.org/lkml/[email protected]/ [17]: https://lore.kernel.org/lkml/CAGXu5jL8PciZAXvOvCeCU3wKUEB_dU-O3q0tDw4uB_ojMvDEew@mail.gmail.com/ [18]: https://lore.kernel.org/lkml/[email protected]/ [19]: https://lore.kernel.org/lkml/[email protected]/ [20]: https://lore.kernel.org/lkml/[email protected]/ [21]: https://lore.kernel.org/lkml/[email protected]/ [22]: https://lore.kernel.org/lkml/[email protected]/ [23]: https://lwn.net/Articles/773459/ [24]: https://lore.kernel.org/lkml/[email protected]/ [25]: https://lore.kernel.org/lkml/CAK8P3a0ej9NcJM8wXNPbcGUyOUZYX+VLoDFdbenW3s3114oQZw@mail.gmail.com/
Cc: "Eric W. Biederman" [email protected] Cc: Jann Horn [email protected] Cc: Andy Lutomirsky [email protected] Cc: Andrew Morton [email protected] Cc: Oleg Nesterov [email protected] Cc: Al Viro [email protected] Cc: Florian Weimer [email protected] Signed-off-by: Christian Brauner [email protected] Reviewed-by: Tycho Andersen [email protected] Reviewed-by: Kees Cook [email protected] Reviewed-by: David Howells [email protected] Acked-by: Arnd Bergmann [email protected] Acked-by: Thomas Gleixner [email protected] Acked-by: Serge Hallyn [email protected] Acked-by: Aleksa Sarai [email protected]
(cherry picked from commit 3eb39f47934f9d5a3027fe00d906a45fe3a15fad)
Conflicts: arch/x86/entry/syscalls/syscall_32.tbl - trivial manual merge arch/x86/entry/syscalls/syscall_64.tbl - trivial manual merge include/linux/proc_fs.h - trivial manual merge include/linux/syscalls.h - trivial manual merge include/uapi/asm-generic/unistd.h - trivial manual merge kernel/signal.c - struct kernel_siginfo does not exist in 4.14 kernel/sys_ni.c - cond_syscall is used instead of COND_SYSCALL arch/x86/entry/syscalls/syscall_32.tbl arch/x86/entry/syscalls/syscall_64.tbl
(1. manual merges because of 4.14 differences 2. change prepare_kill_siginfo() to use struct siginfo instead of kernel_siginfo 3. use copy_from_user() instead of copy_siginfo_from_user() in copy_siginfo_from_user_any() 4. replaced COND_SYSCALL with cond_syscall 5. Removed __ia32_sys_pidfd_send_signal in arch/x86/entry/syscalls/syscall_32.tbl. 6. Replaced __x64_sys_pidfd_send_signal with sys_pidfd_send_signal in arch/x86/entry/syscalls/syscall_64.tbl.)
Bug: 135608568 Test: test program using syscall(__NR_pidfd_send_signal,..) to send SIGKILL Change-Id: I34da11c63ac8cafb0353d9af24c820cef519ec27 Signed-off-by: Suren Baghdasaryan [email protected] Signed-off-by: electimon [email protected] Signed-off-by: Tiktodz [email protected]
2022 Day 21 Part 2
Oh, we're solving for a variable now! My first thought was to do a brute force search for the right answer. Now that I'm typing this up I wonder if I should have tried to do a binary search or something...oh well. Anyway, I expect that z3 (which I have no experience in) could solve this super quickly but that is a no go. I tried to give the equation to Wolfram Alpha as well but that also didn't work. So unfortunately I was left solving this myself.
This essentially is a parse tree and one side was pre-evaluated (yay) so I could just unwind the tree and modify the target until I got the right answer which is nice. That took a lot of typing though, some library to solve an expression for a variable (again, z3 probably can do it easily) would have been so nice.
Anyway, I didn't leaderboard but I at least got rank 154. Fine by me, I was not prepared for this at all!
What the fuck is this shit?
2.0.18's UTF fix breaks our UTF fix. Undoing whatever this fucking fever dream is and restoring ours.
Created Text For URL [nypost.com/2022/12/20/i-told-my-boyfriend-not-to-bring-his-kids-to-my-familys-christmas-dinner/]
12-20-22 Commit v2.5.5
12-20-22 v2.5.5 12-20-22 Commit Bug fixes.
The No Teleport Zone on the east wall (by the front door) now runs from the corner behind the fireplace to the door without any gaps. This has cut off the ability to teleport out of the room anywhere around the stove.
I double checked that my hidden mat (with the Mesh Render off) was on top of the No Teleport Zone. It is.
I duplicated that mat by the punch lists so that when teleporting in a limited area, it is possible to teleport anywhere in front of any of the four punch lists to be able to easily reach this.
I double checked that my hidden mats by the punch list were back far enough and that this prevented teleporting out, it did.
I fixed the bug where when going from Continuous Motion to Teleport Anywhere and then back to Continuous Motion again in the Settings menu this kept the teleport anywhere plane turned on so that it appeared like you could teleport anywhere, even though you couldn't because you were in Continuous Motion (the teleportation provider was turned off so this gave the effect of showing the reticle even though you couldn't complete the teleportation). The fix was to set the teleportation area to be disabled whenever Continuous Motion is selected from the settings menu.
The toggle colliders for my left and right physics hands were in Select Enter and Select Exit for direct interactor and ray casting were lost in a previous save when making changes to my physics hands. Thus, colliders on those physics hands were staying on, on both left and right hand regardless of which hand picked up the item). I re-set this up for the direct interactor and for the rays.
There is still a bug that needs to be fixed in the C# code for these physics hands and I have a coding solution I can implement and test. But this will have to wait until tomorrow. The bug is both when an item is dropped and picked up again and I suspect that this same bug happens when switching items between hands (due to the timing of dropping something and then picking it back up again before the duration timer is up). The bug allows the hand colliders to be turned back on, on both hands, again in both instances while still holding an item. This causes certain items to act buggy due to collisions between the hand colliders and the interactable colliders. Implementing this change should fix this issue.
I play tested the stapler and the balls again and neither acted buggy when the hand colliders were turned off so no changes need to be made to the interactables themselves. In short, these ended up not colliding with themselves (at one point they had but I had previously fixed this and that piece is still in place) but with the hands. The above last fix should help to prevent any bugginess when picking up items.
I also increased the scale of the table by 1.15 on the z-axis. This allowed me to move the right chair over a little to make a little more room to get up to the table. I also adjusted the lamp's transform (with the baked in shadows) so that it again matched the shadows and those shadows didn't look out of place.
However, while that gap increase between chairs was needed to the user to be able to get up to the table in Continuous Motion, there is still a collision happening before reaching the table. I've disabled both the chairs and the table and play tested to confirm that collisions aren't happening with any of those three items. They are not. So I will need to investigate this further to see what other object's collider is preventing getting up to the table. That investigation will also need to be tomorrow. I play tested and found that this problem only occurs when the setting is set to Continuous Motion. This problem is non-existent when on Teleport Anywhere or Teleport (Limited Area).
I moved the invisible mat by the study over to the right a little bit more (this was inadvertently to far to the left and under the watering can).
I checked the rigidbody of my XR Rig and I tried changing the mass from 1 to .4 to see if that prevented me from being able to open the door by leaning into it. It did not. Leaning into the door causes the door to rubber band or the hinge joint to break (both are great Google search terms to use when investigating this problem further). Leaning into the door handle causes the door handle to freak out and to rapidly glitch and rotate and even clip in and out of the door. This is something I still need to investigate.
I haven't yet come up with any solutions as to why the white board marker is so glitchy when moving the marker certain directions and/or why its rotation lock doesn't always happen (per the C# code).
That's all for tonight! Most of those are fixed now with the exception of the front door leaning, the whiteboard marker (I didn't do any further troubleshooting of it this evening -- no time, but I hope to dive into it again over break) and the mysterious invisible collider in front of the table. The table collider piece I'm pretty sure I'll be able to resolve pretty easily. The front door and marker, may be much more difficult to pin down what is happening and/or a fix. I have a discord post (of the YouTuber who made the video) asking for help with the marker glitch that currently has no replies. I may post back to see if there is anyone who might have any ideas for me there. @mattdway mattdway committed on Dec 20
Renews a bunch of old roundend new reports that got lost. Plus, some roundend report QoL for cult and revs. (#71284)
A few roundend reports got lost from moving to dynamic and other prs. This PRs re-allows them to occur. Namely: "Wizard Killed" (lost in dynamic), "Blob nuked" (lost in dynamic), "Cult escaped" (lost in cult rework), and "Nuke Ops Victory" (station destroyed via nuke) (lost from, what I can see, an oversight / accidental swap of report values).
Additionally, small roundend report QOL for cult: Removes antag datums from spirit realm ghosts after being dusted, so they do not show up on the report. And in reverse, heads of staff who were dusted / destroyed in revolution rounds are now also shown in roundend reports.
Some of these reports are dead, which is is a shame because I think they're cool and fun.
🆑 Melbert qol: Successfully fending off a blob now has a cross station news report again. More pressing reports will take priority over it, though. qol: Successfully killing a wizard (and all of their apprentices) now has a cross station news report again. qol: If more than half of a cultist team manages to escape on the shuttle (rather than summoning Nar'sie), they will send a unique cross station news report. This is still a loss, by the way. Summon Nar'sie! qol: Nuclear Operatives successfully nuking the station now has its unique cross station news report again, and no longer uses the generic "The station was nuked" report. qol: Nuking the station to stop a blob infection now has a unique cross station news report again. Good luck convincing admins to allow this. qol: Cult ghosts from "Spirit Realm" no longer persist on the cult's team after being desummoned, meaning they will not show up on roundend report. qol: Heads of staff will now always show up on revolution roundend report - even if their body was fully destroyed. /🆑
- migrated reobfJar task over to ACP-Gradle. See the latest commit (cd231c8) in ACP-Gradle's repository.
- merged the "modifyJar" task into the default Gradle "jar" task.
Initially I wanted both the jar construction stuff and the reobfuscation to be in the plugin, but I had way too much trouble getting the jar constructing integrated into the ACPPlugin class properly. This was due to a number of reasons, primarily dealing with the Copy task (and its inheritors) and how it works in Java (Java has no closures, unlike Groovy, which made it far more difficult to get things configured the way I wanted). I'll chalk up most of it to inexperience on my part. Still frustrating nonetheless.
Traitor UI only shows Unlock/Failsafe Code if you have it (#72114)
There are cases in which you don't have an unlock code (if the uplink is implanted in you from the start) and you obviously don't always start with with a failsafe code (need to buy it). So, let's only fill in this fields in the UI should they exist.
There might be something to be said about wanting to ensure that people remember that they can check this UI screen to find the failsafe code should they lose it later, and I wouldn't mind changing the string to be something like "Failsafe: None" in that case. However, I just think that keeping it as:
Code:
Failsafe:
is silly and should be changed somehow.
Note: That white box isn't part of the UI, that's a part of the edit I did to the screenshot in the area where the stuff... isn't? What was i thinking
I think the UI looks a lot cleaner for those cases when you just don't have anything.
🆑 qol: The Traitor's Antagonist Panel's Unlock and Failsafe entries will only appear if there is an Unlock/Failsafe Code to display. /🆑
refreshes syndi-kits and syndicate surplus crates, introduces shared limited stock (#71869)
After all, the Syndicate loves a good throwback.
This PR does a few things with the goal of reimplementing and revitalizing syndicate traitor kits and the syndicate surplus crate. Of note is that I have added in a way for limited stock items to share their limited stock.
Following maintainer guidance the syndicate traitor kits have increased in price and as a result some of the lower value ones have been adjusted. I've given all active bundles current TC costs per item knowing full well they will be inaccurate eventually.
Changes as a result of my audit of syndikits
Recon, Spai, Stealthy, Screwed, Sniper, Nukie Meta, Implants Mad Scientist, Bees
Lord Singuloth is also unchanged and disabled, I think that it should turn into a new supermatter themed kit maybe. outside of current scope.
Replaced emag with doorjack and gave it a chameleon holster, literally moved 1 tc elsewhere
replaced emag again, no additions its a lot of tc and Just Good
added doorjack, otherwise unchanged
no changes other than adding in extra bombs it didnt have
gave him some gadgets with the freedom implant, emp flashlight, and one x4. also a cyanide pill and deck of cards for fun
Added in miner Jump Boots, smoke spell, and doorjack. dont just want it to be space ninja
Added in new lightning bolt spell granter and made the desword default to red. probably overbudget.
dehydrated carp added so you can ride it alongside the ones you grenade out. hard to imagine changing this
changed temperature gun to be cryo only so that i could give him the cryo thermal pistol. cold attacks only.
doorjack.
tl;dr theyre all about 30 tc worth of shit more or less some are more but thats what rarity should be for you can only buy from one type of syndicrate per round
Next up is the return of the surplus crate. Crate is generated, gives you gear based on your progression at the time of buying the crate, you can use it all at the start and get some chameleon kits and not a lot of dangerous weapons or wait till later. I've changed the weight on some items here and there and given weight to role and species locked items, though I will admit that latter is unimportant because I set moth lanterns to be unable to appear in these two crates.
But who cares about that your eyes instantly went to the United Surplus Crate and the United Surplus Key lets be honest.
The united surplus crate is 80 TC worth of uplink items relative to your current progression when you purchase it and gives you a locked box. It will explode if you try to break it so be careful with it. It gives you 80 TC and costs 20 TC because it is impossible to open without key. The rub of course is that the Syndicate forbids agents from buying more than one surplus item of any kind, you need to find another traitor and make them buy you a key to open your box. Or I guess you can share the box?
Regardless, if the crate is opened with any other means it doesn't spawn its contents, you need 2 traitor uplinks. Both of these items have a 30 minute timer because you don't want a crate that has 5 emp flashlights in it. You at least want one energy sword.
I did a lot of code shit and changed various things to be proc based to allow for more editing and interjection of things, as I wrote in code comments making a crate thats locked to a specific set of progression just means changing the proc that generates a list of valid uplink items to check items' progression values to a specified value instead of your characters progression.
Ok I think that goes over everything more or less????
I've heard that people liked these and I think they are quite fun, being able to go from "i dunno what to do as a traitor" to "ah, of course, I will become the Bombler" is a fun thing to be able to have, and people like to get a bunch of random shit in the mail. Some of it even feels free!!!!!!!!!!!!!!!!!!! Brain points go up!!!
The division of procs allows for more creativity with this system than existed before as well as other possibilities for interacting with the uplink handler in funny ways.
🆑 add: the syndicate is once again distributing syndi-kits, some now with new technology add: a fresh batch of syndicate surplus crates have been sent out, though they seem a bit lighter than before add: in an effort to encourage cooperation, a traitor can now purchase either the new United Surplus Syndicate Crate or its key, but not both add: lightning bolt book granter for wizard event and one syndie-kit bundle add: temperature gun that only makes things colder for one syndie-kit bundle code: it is now possible to have uplink items share limited stock bal: role-restricted items no longer can be delivered by the stray syndicate drop pod event /🆑
Minor plane cube cleanup (#72038)
Fixes area lighting not working on turf change in multiz cases
If you modify a area lit turf when using multiz, it'd end up using the wrong plane for its light, because of stupid shit on my part. Stupid shit resolved
Fixes some uses of plane masters that only specified one rather then all
We almost never only want to show SOME hidden planes. Should really make a helper for this someday
THE TOOLING MANIFESTO * I PLEDGE TO ALWAYS WRITE MINECRAFT TOOLCHAINS TO THE BEST OF MY ABILITY * I WILL ALWAYS CHOOSE QUALITY TOOLING WHENEVER POSSIBLE * I BELIEVE THAT THE DEVELOPER CAN BE CHALLENGED WITHOUT COMPROMISING ON WHAT IS "USEFUL" * I AM CREATIVE AND ORGANIZED AND THESE TRAITS ARE APPARENT IN MY CODE * I WILL NEVER REDUCE MY TOOLS TO BORING "EFFECTIVE JAVA RHETORIC" EVEN WHEN THAT IS POPULAR * I BELIEVE THAT GOOD DOCIMENTATION IS AN IMPORTANT COMPONENT OF A GOOD PROJECT * I CAN WRITE TOOLCHAINS THAT ARE FOR DEVELOPERS OF ANY EXPERIENCE LEVEL INCLUDEING THE PROS * I AM NOT AFRAID TO USE STREAMS OR A LOOP, RECURSION, OR INHERITANCE * I AM FAMILIAR WITH MODDING STYLES OF OLD AND NEW AND I CAN BRING THE BEST OF BOTH WORLDS * I WILL NOT RELEASE A MOD IF I AM NOT HAPPY WITH IT * I UNDERSTAND THAT GOOD MODS TAKE TIME TO WRITE * I DO NOT RELEASE MODS WITH THE HOPE OF BEING POPULAR BUT BECAUSE I KNOW WE NEED GOOD MODS * I WRITE MODS THE WAY I WANT TO WRITE THEM AND NOT WHAT SOMEONE ELSE THINKS * I AM WILLING TO HELP OTHERS AND BE A GOOD EXAMPLE THROUGH MY TOOLCHAINS * I UNDERSTAND THE IMPORTANCE OF ACCESSIBILITY WHICH IS WHY I MAKE TOOLCHAINS COMPATIBILE WITH ALL GRADLE AND JAVA VERSIONS * I WILL NEVER WRITE SOFTWARE THAT DOESN'T WORK UNLESS IT IS ARTISTIC * I HAVE STUDIED THE FORMAT OF FORGE AND FABRIC TOOLCHAINS AND I KNOW HOW TO MAKE THEM BETTER * I NEVER FORGET TO SET THE ARTIFACT GROUPID, NAME, OR VERSION NUMBER * I KNOW A GOOD TOOLCHAIN WHEN I SEE ONE AND I FORM MY OWN OPINIONS * I CAN WRITE TOOLCHAINS TO MAKE THE MODDERS BETTER AT DEVELOPING BECAUSE I KNOW WHAT IS GOOD FOR THEM * I WILL INCLUDE THE TOOLING MANIFESTO IN MY TOOLCHAINS TO HOLD MYSELF ACCOUNTABLE TO THE TRUTH THE INCLUSION OF THE TOOLING MANIFESTO IS A PLEDGE OF QUALITY INCLUDE THIS IN YOUR TOOLCHAINS AND MODS IF YOU AGREE THIS WAY PLAYERS AND DEVELOPERS CAN BE SURE TO PICK OUT QUALITY TOOLING SIMPLY BY LOCATING THE TOOLING MANIFESTO (CTRL+F)
build: downgrade the "delete tag and release" action
0.2.1 deletes all of the Lyricistant releases. That's pretty sad. 0.2.0 can't do that since there's not any releases to delete now! Haha! I laugh to hide my pain...
Sol is now a Subsystem, Coffins lock themselves, Bloodsuckers don't constantly die, probably (#862)
- Turns Sol into a Subsystem & Many more
Turns Sol into a subsystem and hooks Bloodsuckers onto it via signals instead of doing a ton of for() loops anywhere. This made Sol incredibly fucking fast, so I halved the speed so it only ticks every 2 seconds.
I also improved the sunlight hud to update with regular bloodsucker updates to avoid some useless proc overhead and fixed Coffins not locking by themselves.
-
Torpor now ends, moves exiting torpor to its proper place
-
round it
-
fix comment
-
fix CI
Merge pull request #14 from InbarMizrahi1/inbar_work
fuck you too
Merge pull request #13 from DolevSeri/Dolev_Work
fuck you
HM_SHOHAG - Your Cyber-Buddy!
Hey there! Are you looking for a CYBER EXPERT? Well, You are in the RIGHT PLACE!
My name is "Hossain M Shohag" (Ethical Hacker) and I'll help you in Cyber Security, Pentesting & Professional Report Making.
Not to mention that I also have skills in Web Development & Designing, Graphic Design, MS Office, Linux, Troubleshooting and Programming.
What that means my experience in this field EXTENDS beyond Ethical Hacking. I am available 24/7. You will find me RESPONSIVE AT ALL HOURS.
I GUARANTEE working with me will make you feel like an ELITE CUSTOMER. Feel free to get in touch with me!
vamp lurker strain (#955)
Adds a new strain for lurker (vampire is the name for now but i can be changed i just lack the creativity) has less health than the average lurker but its faster and slashes faster but deals less damage .
### BASE STATS health : 390 armor : 20 slash damage : 35 speed : 0.1 faster than base lurker // for reference cloaked speed is 0.2 slash speed : 2
Vamp lurker cannot cloak but has a larger kit of abilities focused on dealing damage and healing making it a high risk high reward backliner with skill based abilities rather than just stun.
Rush: Shorter version of pounce (4 tiles) instead of stunning it will daze and slightly screenshake the target . damage : 30 cooldown : 6 seconds and 3 if you land it.
Flurry: AOE attack that deals damage to the targets in front of you in a 1x3 area . if landed it will heal you by the same amount and apply a small slow for the user ( very short second slow) damage: 30 heal : 30 cooldown : 3 seconds if missed
Tail Jab: Targeted attack will deal a small amount of damage to the target and knock him away from you . if you use it on a target in critical state it will execute it healing you a LOT. damage : 30 Execution damage : 80 with penetration cooldown : 7 seconds heal : 150 critical state : this occurs when the target either paincrits or falls INCONCIOUS
Lurker lacks strains and i looked up in the Trello that Lurker strain was required . i tried to follow the indicators but kinda ended up with something else i guess but i really like how it ended so i am making this PR to see what you think about it.
🆑 diegoflores31 add: Added a new strain for lurker "Vampire". add: Vampire Lurker exchanges all of your abilities for a fast paced combat style more focused into dealing damage and mobility. add: Active 1 : Rush . Pounces for a maximun of 4 tiles and slashes the objetive once on impact . applying a screenshake and daze to the target . Landing this ability reduces the cooldown by half. (cooldown 6 seconds) add: Active 2 . Flurry : unleashes a 1X3 slash at the targeted direction that slows your enemies on impact healing you by 30 hp . (cooldown 3 seconds) add: Active 3 : Tail Jab : Attacks your enemies from a maximun of 2 tiles away while dealing a small amount of damage ( 20) and knocking them down . if you attack a enemy that is on critical state it will deal 80 damage with penetration and heal you by 150 hp. (cooldown 7 seconds) /🆑
Co-authored-by: Shad0vvs [email protected] Co-authored-by: harryob [email protected]
sniper sentries rebalance (#1951)
halves sniper sentry range reduces accuracy a bit ups firerate
being shot at from far offscreen is awful, this should make sniper sentry a bit more of a threat when it does come into play while not being able to hit you from half the map away
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 balance: halved the sniper sentry's range to 10 tiles balance: reduced the sniper sentry's accuracy by 20% balance: reduced the sniper sentry's delay between shots from 2s to 1.25s balance: reduced the plasma sentry's range to 10 tiles balance: reduced the plasma sentry's delay between shots from 10s to 7s /🆑
Co-authored-by: Stan_Albatross [email protected]
13604;The message that President Obama delivered in his speech at Notre Dame was: morality is immoral. Pro-life is the extremist position, not a moral position. Yet we should compromise and work to reduce abortions. Where's the compromise between life and death - and why work to reduce the number of them occurring if there's nothing wrong with them?;Rush Limbaugh;death
I share the belief of many of my contemporaries that the spiritual crisis pervading all spheres of Western industrial society can be remedied only by a change in our world view. We shall have to shift from the materialistic, dualistic belief that people and their environment are separate, toward a new consciousness of an all reality, which embraces the experiencing ego, a reality in which people feel their oneness with animate nature and all of creation. - Hofmann, Dr. Albert
If the thoughts are absolutely tranquil the heavenly heart can be seen. The heavenly heart lies between sun and moon (i.e. between the two eyes). It is the home of the inner light. To make light circulate is the deepest and most wonderful secret. The light is easy to move, but difficult to fix. If it is made to circulate long enought, then it crystallizes itself; that is the natural spirit body... - Yen, Lu
Added many keys for the 1.5.0 of AIdventure.
- UPDATE_CONTENT
- ITEM_URL
- YOUR_ITEMS
- SUCCESS_UPLOAD_TO_WORKSHOP
- DISPLAY_ONLY_PNG
- DOWNLOAD_
- FAILED_UPLOAD_TO_WORKSHOP
- FRIENDS_ONLY
- I_ACCEPTED_TOS
- PREVIEW_IMAGE
- PRIVATE
- PUBLIC
- READ_TOS
- SELECT_LANGUAGE
- SHARE
- SHARE_CONTENT
- TYPE_OF_FILE
- UPLOAD_TO_WORKSHOP
- VISIBILITY
- WORKSHOP_UPLOAD_ACCEPT_DIALOG
- WORKSHOP_UPLOAD_BUTTON_HINT
- 1ST_PERSON
- 2ND_PERSON
- ADVENTURE
- CYBERPUNK
- DARK
- DYSTOPIAN
- FANTASY
- FEMALE_PROTAGONIST
- HISTORICAL
- HORROR
- LGBTQ
- LOREBOOK_INCLUDED
- MALE_PROTAGONIST
- MEDIEVAL
- MODERN_ERA
- MYSTERY
- PIRATE
- POST_APOCALYPTIC
- ROMANCE
- SCIENCE_FICTION
- STEAMPUNK
- THRILLER
- UPLIFTING
- WILD_WEST
- ZOMBIE
Fixed errors in the tags and added TAG_ before the tags keys.
Fixed the following keys (French was in English and Spanish in French. Also added TAG_ before the name.
- 1ST_PERSON
- 2ND_PERSON
- ADVENTURE
- CYBERPUNK
- DARK
- DYSTOPIAN
- FANTASY
- FEMALE_PROTAGONIST
- HISTORICAL
- HORROR
- LGBTQ
- LOREBOOK_INCLUDED
- MALE_PROTAGONIST
- MEDIEVAL
- MODERN_ERA
- MYSTERY
- PIRATE
- POST_APOCALYPTIC
- ROMANCE
- SCIENCE_FICTION
- STEAMPUNK
- THRILLER
- UPLIFTING
- WILD_WEST
- ZOMBIE
Create The Chronicles of Narnia
Four kids Peter,Susan,Edmond and Lucy travel through a wardrobe to the land of Narnia. Narnia is a fantasy world of magic with mythical beasts and talking animals.While exploring the land of narnia Lucy found Mr.Tumnus the two legged stag ,and she followed it, down a narrow path .She and Mr.Tumnus became friends and he offered a cup of coffee to Lucy in his small hut.It was time for Lucy to return to her family and so she bid good bye to Mr.Tumnus and while leaving Mr.Tumnus told that it is quite difficult to find the route back as it was already dark.He told her to see the trees while returning back and said that the first tree with two digits number will help her find the way and the way to go back to her home is the sum of digits of the tree and that numbered way will lead her to the tree next to the wardrobe where she can find the others.Lucy was already confused, so pls help her in finding the route to her home....
Input Format: Input consists of an integer corresponding to the 2-digit number. Output Format: Output consists of an integer corresponding to the sum of its digits.
Sample Input 23
Sample Output 5
Proposed changed for Sida's profile
layout: profile title: "Sida Lillian" image: "assets/images/profiles/Sida-Lillian/Sida-Lillian.jpg" country: Uganda region: West Nile hub: CC4D languages: "English (Fluent spoken and written), Bari/Kakwa (Fluent spoken and spoken), Arabic (good spoken only), Lugbara (fair spoken only)" mail: [email protected] phone: "+256782739162" whatsapp: website: telegram: "+256782739162" github: github.com/sidalillian linkedin: twitter: facebook: https://www.facebook.com/profile.php?id=100074066215635 instagram: mastodon: wikifab: skills:
- {name: Web & Software, number: 1, qualification: "using platforms, basic social media experiences, software download and installation \n \n
- {name: Community & Moderation, number: 2, qualification: "connecting people, trauma healing, event facilitation and meditation \n \n
- Certificate of participation in trauma healing& meditation training \n
- She was trained and facilitated a post training on how to use Condoms under the #ASKnet project 2018"}
- {name: Data Security & Research, number: 3, qualification: "data collection and protection of personal data \n \n
- Certificate in data collection"}
Sida Lilian is a female South Sudanese refugee in Uganda.
Expert in data collection, trauma healing, mediation, event facilitation of different types.
She was trained on how to collect both qualitative and quantitative data by REACH Uganda, Danish Refugee Council, Norwegian Refugee Council Uganda and GROUND TRUTH SOLUTIONS, she was also trained and worked as frontline worker on the *BOOST FOR THE YOUNGEST by Save The Children under Dubai Cara not only that she was also trained on Social Enterprise online by Makerere University - Canada in 2018, she was trained and worked as hygiene Promoter by CEFORD Uganda and was also trained and worked as Community Development Worker (CDW) by Danish Refugee Council.
She is confident, talented and determined to transform her community.
Merge #89613 #93985 #93989
89613: gossip: remove frequent gossiping of gossip client connections r=irfansharif a=a-robinson
These gossip-clients keys make up two thirds or more of the gossip traffic in various large clusters I've inspected, consuming almost an entire CPU core in the worst case I've seen. They don't provide enough value to justify that sort of ongoing cost, so this commit removes them entirely as well as the periodic logging of the gossip network and the crdb_internal.gossip_network table, both of which relied on them.
These gossip-clients keys make up two thirds or more of the gossip traffic in various large clusters I've inspected, consuming almost an entire CPU core in the worst case I've seen. They don't provide enough value to justify that sort of ongoing cost, so this commit removes them entirely as well as the periodic logging of the gossip network and the crdb_internal.gossip_network table, both of which relied on them.
Release note (backward-incompatible change): We've stopped supporting/populating the crdb_internal.gossip_network table. It was an internal table with no API guarantees (so perhaps no meriting a release note?).
Release note (performance improvement): Significantly reduced CPU usage of the underlying gossip network in large clusters.
Informs #51838 (largely fixes it for practical purposes, although there's likely still more that could be done)
This is clearly going to break the gossip roachtest, but between @irfansharif
kindly volunteering to fix that up separately and his existing TODO in that file I've left that out of this change.
I don't know if completely removing the gossip_network table is really the best idea or if it should just be left in and only populated with the clients from the local node. For example, when run in a mixed version cluster does debug zip
run all of its sql commands against the local node or does it run some against remote nodes? If an old node ever tries to query the gossip_network
table on a different node it could have a bad time.
@irfansharif
@kvoli
93985: ui: degrade gracefully when regions aren't known r=matthewtodd a=matthewtodd
Part of #89949
Previously, when a tenant SQL instance had spun down (leaving us no way to remember which region it had been in), the SQL Activity pages would claim that statements and transactions had occurred in an "undefined" region.
This change moves from saying "undefined" to saying nothing at all, a slightly nicer user experience.
This broader problem of losing the region mapping has been described in #93268; we'll begin addressing it shortly.
Release note: None
93989: leaktest: exclude long running logging goroutines r=srosenberg a=nicktrav
The leaktest
package detects potential goroutine leaks by snapshotting the set of goroutines running when leaktest.AfterTest(t)
is called, returning a closure, and comparing the set of goroutines when the closure is called (typically defer
'd).
A race condition was uncovered in #93849 whereby logging-related goroutines that are scheduled by an init
function in pkg/util/logging
can sometimes be spawned after the AfterTest
function is run. When the test completes and the closure is run, the test fails due to a difference in the before / after goroutine snapshots.
This mode of failure is deemed to be a false-positive. The intention of the logging goroutines are that they live for the duration of the process. However, exactly when the goroutines scheduled in the init
functions actually start run, and hence show up in the goroutine snapshots, is non-deterministic.
Exclude the logging goroutines from the leaktest
checks to reduce the flakiness of tests.
Closes #93849.
Release note: None.
Epic: CRDB-20293
Co-authored-by: Alex Robinson [email protected] Co-authored-by: Matthew Todd [email protected] Co-authored-by: Nick Travers [email protected]
fix: edge case ci error exit (#62660)
so a step of the reviewer workflow always runs, good it is the actual magical step doing the hard work, but if the workflow gets canceled, the step exits with an error code, I actually knew this but me from like a day ago was like: "nah man this won't bother me in the future."
guess what; after a couple hours I was felling the pain my perfectionist subconscious was putting me through, plus odd error code exits aren't very professional or clean or pleasing I'd say, also someone may think it's weird, look into it, waste time looking at my code
title: do not draw much attention
Co-authored-by: casswedson [email protected]
a.yanin/common: Create a new common module loop
After prolonged deliberation, I've decided to create a simple event loop that would support async TCP socket operations.
The event loop design is directly inspired by libuv, with a few minor differences.
-
the extensive use of the
error
andlog
modules because I don't care about other people's use-cases -
fearless memory allocations (since I've kept avoiding them for some reason while having a machine with 16 GiB of RAM)
-
poll
instead of the clearly superiorepoll
because POSIX... at least it's notselect
, duh. -
the extensible handler interface
- they'll be responsible for juggling callbacks
-
a decoupled executor interface (now that I think of it, it looks really similar to Java's executors... that's scary.)
I'm still thinking where to put the I/O operations in this picture so that they wouldn't be a royal pain.
The goal is to have an overwhelmingly large part of the codebase shared among the 31st and 33rd labs; the only difference there being a different choice of the executor (single-threaded vs thread pool).
And since I anticipate (and actively hope) that this will be my last grand effort writing code in C, I'm going extravagant with my designs. To the detriment of the poor people who'll have to review this. To them I say this: I'm not sorry at all.
Refactored weed crossing to utilize signals and list data. (#1960)
Refactored weed slowdown to work based on a signal sent to the recipient carrying list data.
Added a variable for weed slowdown multiplier to species. Human Heroes have 0.5 weed slowdown because haha funny. Transferred Yautja's weed immunity to species.
Added an admin-only example item 'hiking boots' that halve weed slowdown.
Removed a useless define for XVX.
Screenshots & Videos
Put screenshots and videos here with an empty line between the
screenshots and the <details>
tags.
🆑 refactor: Refactored weed slowdown to work based on a signal sent to the recipient carrying list data. code: Added a variable for weed slowdown multiplier to species. Human Heroes have 0.5 weed slowdown because haha funny. Transferred Yautja's weed immunity to species. /🆑
Makes dog a basic mob [MDB IGNORE] (#70799)
About The Pull Request
Made a basic version of the pet base called /mob/living/basic/pet. It's significantly more stripped down from the old simple_animal one, because its half collar stuff and...
Made the collar slot a component that you could theoretically remove from a pet to disable the behavior, or add to any other living mob as long as you set up the icon states for the collar (or not, the visuals are optional).
The corgi's collar strippable slot is now generally the pet collar slot, and in theory could be used for other pet stripping screens.
I also gutted the extra access card code from /mob/living/basic/pet as it's only being used by corgis. Having a physical ID is now just inherent to corgis, as they're the only ones that could equip it anyway.
Ported the make_babies() function from simple_animals to a new subtree and associated behavior, called /datum/ai_planning_subtree/make_babies that uses blackboards to know the animal-specific info.
Note that it's marginally improved, as the female walks to the male first instead of bluespace reproduction.
Tweaked and improved the dog AI to work as a basic mob, including making /datum/idle_behavior/idle_dog fully functional.
Made a /datum/ai_planning_subtree/random_speech/dog that pulls the dynamic speech and emotes to support dog fashion.
I've tested base collars across multiple pet types.
For dogs, I've tested general behavior, fetching, reproduction, dog fashion, and deadchat_plays, covering all the oddities I'm aware of.
image Why It's Good For The Game
Very big mob converted to a basic mob. Changelog
cl fix: Lisa no longer uses bluespace when interacting with Ian. refactor: A large portion of dog code was re-written; please report any strange bugs. /cl
bin/rust: add program to search through SMS backups
It searches through this crazy XML dump (gigabytes big) for text messages. It doesn't extract every bit of data (particularly media), but does pull out all of the plain text.
Normally I'd try to just do this sort of thing ad hoc with grep and awk, but holy hell XML is too annoying to deal with that way. And the data is just so big that it really helps to have an easy to use presentation style.
feat: Basic setup for working with packer.nvim
After what felt like an eternity of trying to figure out how to
get packer.nvim
in as an optional package, I gave up.
What we have no is packer
installed in the way that their README
suggests. A slight difference that I am toying with, is to separate each
plugins as it's own module under the plugin folder. The
/plugins/init.lua
is what sets everything up and it does so by
iterating through every file in the plugin folder and loading them.
To make things somewhat easier, I created and autocommand that will reload all configurations whenever a write is made to a file that exists in the folder.
So far, things kinda work. Next time, I want to add a plugin, I simply write add a new plugin spec file in the plugins folder. It seems to work for now, so... fuck it.
experimental_use(promise) (#25084)
- Internal
act
: Unwrapping resolved promises
This update our internal implementation of act
to support React's new
behavior for unwrapping promises. Like we did with Scheduler, when
something suspends, it will yield to the main thread so the microtasks
can run, then continue in a new task.
I need to implement the same behavior in the public version of act
,
but there are some additional considerations so I'll do that in a
separate commit.
- Move throwException to after work loop resumes
throwException is the function that finds the nearest boundary and schedules it for a second render pass. We should only call it right before we unwind the stack — not if we receive an immediate ping and render the fiber again.
This was an oversight in 8ef3a7c that I didn't notice because it happens to mostly work, anyway. What made me notice the mistake is that throwException also marks the entire render phase as suspended (RootDidSuspend or RootDidSuspendWithDelay), which is only supposed to be happen if we show a fallback. One consequence was that, in the RootDidSuspendWithDelay case, the entire commit phase was blocked, because that's the exit status we use to block a bad fallback from appearing.
- Use expando to check whether promise has resolved
Add a status
expando to a thrown thenable to track when its value has
resolved.
In a later step, we'll also use value
and reason
expandos to track
the resolved value.
This is not part of the official JavaScript spec — think of
it as an extension of the Promise API, or a custom interface that is a
superset of Thenable. However, it's inspired by the terminology used
by Promise.allSettled
.
The intent is that this will be a public API — Suspense implementations can set these expandos to allow React to unwrap the value synchronously without waiting a microtask.
- Scaffolding for
experimental_use
hook
Sets up a new experimental hook behind a feature flag, but does not implement it yet.
- use(promise)
Adds experimental support to Fiber for unwrapping the value of a promise inside a component. It is not yet implemented for Server Components, but that is planned.
If promise has already resolved, the value can be unwrapped "immediately" without showing a fallback. The trick we use to implement this is to yield to the main thread (literally suspending the work loop), wait for the microtask queue to drain, then check if the promise resolved in the meantime. If so, we can resume the last attempted fiber without unwinding the stack. This functionality was implemented in previous commits.
Another feature is that the promises do not need to be cached between attempts. Because we assume idempotent execution of components, React will track the promises that were used during the previous attempt and reuse the result. You shouldn't rely on this property, but during initial render it mostly just works. Updates are trickier, though, because if you used an uncached promise, we have no way of knowing whether the underlying data has changed, so we have to unwrap the promise every time. It will still work, but it's inefficient and can lead to unnecessary fallbacks if it happens during a discrete update.
When we implement this for Server Components, this will be less of an issue because there are no updates in that environment. However, it's still better for performance to cache data requests, so the same principles largely apply.
The intention is that this will eventually be the only supported way to suspend on arbitrary promises. Throwing a promise directly will be deprecated.
[MIRROR] Excercise Equipment is now craftable [MDB IGNORE] (#17495)
- Excercise Equipment is now craftable (#71190)
Imagine if you will a humble chaplain who wants nothing more than for all of the spiritual folk on the station to get as massive gains as they can, after finding that they can not just make more exercise equipment and that the station does not have any in public places, they go annoy security enough to get into permabrig only to find out that they cant even unwrench the equipment and move it to the church!!!
NOT ANYMORE!!!
demonstrating unwrenching and wrenching equipment
crafting a punching bag and punching it
Now you can craft as much exercise equipment as you want! May everyone on the station get as strong as possible and not just prisoners.
Also I changed the message that plays when you try to use exercise equipment someone else is using into a balloon alert.
Access to exercise equipment on some maps is limited to static positions and is currently mostly only for prisoners as every map does not have public exercise equipment. Expanding the access means that you can have a Drill Sargent Head of Security or Captain who commands people use these or allows a psychologist to prescribe healthy exercise habits to their patients.
I think having the potential for exercise equipment on every map is more fun and also if prisoners get their hands on tools they should be allowed to mess with these to annoy security or aid in their escape.
🆑 add: the punching bag, bench press, and chest press are all able to be crafted and unanchored. add: crafting recipes for the above qol: changed a chat message into a balloon alert qol: adds screentips to equipment (thanks for suggesting i do this mothblocks!) /🆑
- Excercise Equipment is now craftable
Co-authored-by: Sol N [email protected]
Bugfixes and a drink (#4246)
- Bugfixes and a drink
- Ports Eris combat hardsuit sprites by assortedbeads (PR #7925)
- Fixes people seeing what you examine from your hud, adds tips on HUD descriptions when examined (Eris PR #7929)
- Leftover wooden STS-25 removed (sprite was the same as polymer stock, but were identical guns), replaced every intance with the original STS-25
- renames "sawn off" to "short-barreled" in cases of carbines and rifles
- Hypersleeper now consumes more power, Tricordazine removed from it as it conflicts with sleeper upgrades
- Fixes invisible hypersaw and doombringer saw when turned on, adds animated sprites when dual wielding them
- Fixes the long bug of shoes' icons getting "cleaned" from blood and oil whenever you stored a knife on them, for good
- Corrects strength values on certain drinks, a reminder that LOWER numbers mean STRONGER alcohols
- New drink: Jager bomb, made with equal parts Fernet and Claw Energy Drink
- Fixes certain alcohols not properly applying ethanol ingest procs
- Adds two bottles of cream to the church's fridge, moves the rolling pin from the fridge to the table nearby
- STS carbine refactor
To not cheat crafting menus
- RIG description fixes
It's a hardsuit, not a voidsuit Also deletes a duplicate custodian armor sprite
- ADMS and Xenobio changes
- ADMS sprite no longer just entirely purple
- Eliminates the chute from xenobio going absolutely NOWHERE
- Hyper sleeper nerf
- Locks hypersleeper board behind advanced chemistry and portable biotech research node (renamed to accomodate for it)
- Deletes hypersleeper board from CBO locker
- Many typo fixes and description fixes
- Nevermind
Turns out it's better to not have printable hypersleepers as they're meant to be "one of a kind"
- Update code/modules/reagents/reagents/food-Drinks.dm
Co-authored-by: Trilbyspaceclone [email protected]
multi-handed item component (#12523)
-
multi-handed item component
-
pretty fucking obvious missed portion of this
-
holy shit was i on crack wtf was that code
-
DEWIT RIGHT
Fixes cable merging, changes merging code just a little bit (#60997)
Makes stack code support merging two different stacks with the same mats, but different mats_per_unit numbers by implementing averages.
It's in an attempt to support the stupid efficiency shit that protolathes do. It's not great, but it ought to work alright for now. Kinda a bandaid Co-authored-by: LemonInTheDark [email protected]
hahaha Ivan is a fucking monkey he merged object_edc hahaha laugh at Ivan (#97)
Cargo ammo and ammo box mapping (re-up) (#1759)
Previous version of this PR ( #1650 ) claimed to have changed 384 files, which would be impossible to review. So re-uploading this PR with hopefully a sane amount of files changed...
When I was playing cargo I spent a good half an hour in a round just mindlessly packing ammo magazines into boxes in squad prep. It didn't put a dent in the squad prep supply, and I barely got a handful of boxes. So I thought to myself that this is pretty much a waste of time for cargo and decided to code a better solution:
https://www.youtube.com/watch?v=cnXcEYAV8P4
So now select vendors (opt-in via VEND_LOAD_AMMO_BOXES
) support ammo
consolidation. They count the number of ammo magazines you have and from
that they derive the number of magazine boxes you can vend. If you vend
a magazine, it updates the number of boxes available, and if you vend a
box, it updates the number of magazines available (as well as all
derived boxes - see the 3 pack of grenades and 25 pack box).
The item_to_box_mapping
tracks ammo boxes (minus loose ammo), grenade
boxes, grenade packets and mine boxes.
Most notable affected vendors - Requisition ammo vendor, Requisition vendor that features grenades, Squad vendors that have ammo in them.
So now Requisition will be able to easily raid Squad Vendors to stock up their ammo drops and save countless hours of mind-numbing cargo work.
This code ALSO correctly works when you're re-stocking a vendor with either individual magazines or magazine boxes. Correct amounts are updated everywhere. So you could take a magazine box, put it in a vendor and thus let people vend 16 magazines out of it seemlessly. Really useful just incase you need to restock Requisitions with individual ammo or something...
Other notes:
- Boxes of magazines are put directly under the corresponding ammo so you can vend them in larger amounts easier. Useful for 3-packs of grenades
- We should add a Shotgun Shell Box Box so we can also handle those easily...
- Nailgun ammo box had to be converted from being /smg/ since that created an invalid ammo box that nobody used.
- Nulled out a magazine type for an intermediary box that later gets used for MREs and all that
Gameplay around loading magazines into ammo boxes is not interesting, so cutting it down to minimum is for the best.
🆑 add: Added an automated ammo box management system to various vendors stocking bulk ammo and grenades. It will automatically combine ammo magazine into boxes, and divide boxes into individual magazines (or grenades, MRE packets, etc.). The boxes will appear at the bottom of the vendor (yes, this also includes the regular grenade boxes that used to be higher). qol: Cargo will no longer need to pack individual vended ammo magazines into boxes thanks to the ammo box management system. Your chains have been broken! qol: Requisitions vendor now stocks 3-packs of grenades as well as individual HEDP grenades. qol: Requisitions ammo vendor now can vend a lot more individual magazines (actual number of magazines remains unchanged, just the ammo boxes have been consolidated into magazines). qol: Requisition vendors now vend to floor when they are not vending to the front desks. This will make filling crates of ammo boxes or rappels easier. code: Minor changes to code around some ammo boxes to remove one phantom box and prevent intermediate box types from being indexed when they shouldn't be. code: Refactored the code that checks whether items are in mint enough condition to re-stock. /🆑
Update README.md
My research idea was to select fifty articles from the category of “most read articles” and make topic modeling either with LDA or on the Voyant tool. The research question was “What are the most discussed themes in those articles on Special Needs Education?”. When I downloaded the articles, I ended up having only fifteen articles as a dataset, due to the open access restriction. I changed the category from “most read” to “open access” and was able to download fifty two articles. https://www.tandfonline.com/action/showOpenAccess?journalCode=rejs20 However, LDA seemed to be challenging, I tried to give it a try and It worked as I used the code given in the following resource: https://towardsdatascience.com/end-to-end-topic-modeling-in-python-latent-dirichlet-allocation-lda-35ce4ed6b3e0 As I was planning to use Python since I have had some little experience with, I searched for some specific resources where I can use Topic modeling in Python. The article in the above link “Topic modeling in Python: LDA” was the main resource for my project along with the lesson materials. I used Jupyter Notebook for data cleaning. Data was first loaded into a Jupyter notebook and cleaned. Some specific steps followed according to the article and other resources. The punctuation, white spaces, and lower cases were removed. These are the steps used for the implementation of this project:
-
Loading data: Data was loaded to the Jupyter notebook, and all texts from 52 PDs were extracted and saved under a single list. In the next step, I convert this list to the data frame.
-
Data cleaning: In data cleaning is removing punctuation and lowercase. (Converting all texts to lowercase).
In order to visualize the data after data cleaning, the processed data, data is added to the data frame under a separate column, which I named “paper_ text_processed”. 3. Exploratory analysis: This step is used for getting an idea about the data after cleaning and before the LDA analysis. We can choose a specific number of words to visualize and see how our current data looks like after cleaning. This part could not be implemented, and the code gave an error. The reason might be due to the need for further cleaning of processing steps. Since this part is used for visualization purposes, it will not have a crucial effect on my final LDA analysis. 4. Preparing data for LDA analysis: This is the most important step of the whole pipeline as we prepare the final data for LDA training. First, NLTK(Natural Language Toolkit) “stopwords” package is used to remove the meaningless words that the search engine is programmed to ignore. We would not want these words to take up space in our database or take longer processing time. Additional to the default list that the package contains, I extended the list with a few additional stop words based on the reference. Moreover, all the sentences are converted to words using “simple_preprocess” package. As the final step, we convert the tokenized object into corpus and dictionary.
- LDA model training: We should decide the number of topics for anaylising the LDA model training. Corpus, id2words(a dictionlar that maps the word “id” to a token ), number of topics are passed as arguments to the LDA model training.The result path should be given in order to save the training results under a separate folder.
- Analyzing LDA model results; On the base of LDA model result the Topic numbers 2 and 7 are relatively relevant while topics number 5, 8,9,10, and topic number 3 and 4 grouped under the same cluster.Topic 1 and topic 6 are located far from each other as well as from all above mentioned cluster of topics.We can observe the most relevant 30 words for each “hidden” topic with moving the mouse to the specific topic in Intertopic Distance Map. Thirty most relevant terms for topic 1 contains 32,1 % of overal tokens which is the biggest topic among all. This topic centers around educational words, e.g. education, teacher, assessemt, research, school, learning, journal, student, study, special, pupils. During the analysis of topic 1 chart, I observe meaningless terms that I added to the stopword list to improve LDA results. Topic 7 lays in the same range as topic 2, which has smaller estimated term frequency. We see common and a few different terms between these two topics, while topic 7 can be considered as a subtopic of topic 2. The same case is valid for topic 3 and 4, which contains the words like work, parents, support, time, group, european, data, education e.t.c. Topic 6 is located near to topic clusters 3,4 and 5, 7,9,10 in intertopic distance map, while it is quiet far from topic 1. The relevant terms belong to this topic(6) contains only 2,2,% of total tokens. Topic 5 includes topic 8 and 10 and overlaps only with a small percentage with topic 9 that contains only 0,7% of overal tokens.This cluster contains words such as; knowledge, collaboration, results, different, inclusion, children, research. Conclusion: I would like to mention two possible obstacles that could have lead to the better results if they had been handled properly: 1)Data would need further processing for the training, e.g. extra data cleaning steps could have been implemented. 2)Since it is hard to decide which stopwords prevent good result in training, my extended list of stopwords obviously does not contain all the necessary stopwords to be removed from the text. However, according to some literature, in some cases the stopwrods have no crucial impact on results. Overall, I think the model can give a good overview throughout 10 “hidden” topics and one can observe 30 more common words for each topic as well as observe their estimated term frequency within the selected topic.