Hartree-Fock method for the helium atom by Ciro Santilli 34 Updated 2024-12-15 +Created 1970-01-01
gothinkster/realworld implementation by Ciro Santilli 34 Updated 2024-12-15 +Created 1970-01-01
Setups we've tried:
- backend:
- randyscotsmithey/feathers-realworld-example-app worked with React and Vue.js
- the React setup failed as shown at: github.com/gothinkster/react-redux-realworld-example-app/issues/187
- gothinkster/django-realworld-example-app
- the Nest.js failed on Ubuntu 20.10 as per github.com/lujakob/nestjs-realworld-example-app/issues/19
- frontend:
The heart/main innovation of GitHub!
University of Cambridge spinout company by Ciro Santilli 34 Updated 2024-12-15 +Created 1970-01-01
.data
is section 1:00000080 01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 |................|
00000090 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 |................|
000000a0 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000000b0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
- 80 0:
sh_name
=01 00 00 00
: index 1 in the.shstrtab
string tableHere,1
says the name of this section starts at the first character of that section, and ends at the first NUL character, making up the string.data
..data
is one of the section names which has a predefined meaning according to www.sco.com/developers/gabi/2003-12-17/ch4.strtab.html:These sections hold initialized data that contribute to the program's memory image.
- 80 4:
sh_type
=01 00 00 00
:SHT_PROGBITS
: the section content is not specified by ELF, only by how the program interprets it. Normal since a.data
section. - 80 8:
sh_flags
=03
7x00
:SHF_WRITE
andSHF_ALLOC
: www.sco.com/developers/gabi/2003-12-17/ch4.sheader.html#sh_flags, as required from a.data
section - 90 0:
sh_addr
= 8x00
: TODO: standard says:but I don't understand it very well yet.If the section will appear in the memory image of a process, this member gives the address at which the section's first byte should reside. Otherwise, the member contains 0.
- 90 8:
sh_offset
=00 02 00 00 00 00 00 00
=0x200
: number of bytes from the start of the program to the first byte in this section - a0 0:
sh_size
=0d 00 00 00 00 00 00 00
If we take 0xD bytes starting atsh_offset
200, we see:00000200 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 0a 00 |Hello world!.. |
AHA! So our"Hello world!"
string is in the data section like we told it to be on the NASM.Once we graduate fromhd
, we will look this up like:readelf -x .data hello_world.o
which outputs:Hex dump of section '.data': 0x00000000 48656c6c 6f20776f 726c6421 0a Hello world!.
NASM sets decent properties for that section because it treats.data
magically: www.nasm.us/doc/nasmdoc7.html#section-7.9.2Also note that this was a bad section choice: a good C compiler would put the string in.rodata
instead, because it is read-only and it would allow for further OS optimizations.- a0 8:
sh_link
andsh_info
= 8x 0: do not apply to this section type. www.sco.com/developers/gabi/2003-12-17/ch4.sheader.html#special_sections - b0 0:
sh_addralign
=04
= TODO: why is this alignment necessary? Is it only forsh_addr
, or also for symbols insidesh_addr
? - b0 8:
sh_entsize
=00
= the section does not contain a table. If != 0, it means that the section contains a table of fixed size entries. In this file, we see from thereadelf
output that this is the case for the.symtab
and.rela.text
sections.
- a0 8:
Section type:
sh_type == SHT_SYMTAB
.Common name: "symbol table".
First the we note that:
sh_link
=5
sh_info
=6
For
SHT_SYMTAB
sections, those numbers mean that:- strings that give symbol names are in section 5,
.strtab
- the relocation data is in section 6,
.rela.text
A good high level tool to disassemble that section is:which gives:
nm hello_world.o
0000000000000000 T _start
0000000000000000 d hello_world
000000000000000d a hello_world_len
This is however a high level view that omits some types of symbols and in which the symbol types . A more detailed disassembly can be obtained with:which gives:
readelf -s hello_world.o
Symbol table '.symtab' contains 7 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FILE LOCAL DEFAULT ABS hello_world.asm
2: 0000000000000000 0 SECTION LOCAL DEFAULT 1
3: 0000000000000000 0 SECTION LOCAL DEFAULT 2
4: 0000000000000000 0 NOTYPE LOCAL DEFAULT 1 hello_world
5: 000000000000000d 0 NOTYPE LOCAL DEFAULT ABS hello_world_len
6: 0000000000000000 0 NOTYPE GLOBAL DEFAULT 2 _start
The binary format of the table is documented at www.sco.com/developers/gabi/2003-12-17/ch4.symtab.html
The data is:which gives:
readelf -x .symtab hello_world.o
Hex dump of section '.symtab':
0x00000000 00000000 00000000 00000000 00000000 ................
0x00000010 00000000 00000000 01000000 0400f1ff ................
0x00000020 00000000 00000000 00000000 00000000 ................
0x00000030 00000000 03000100 00000000 00000000 ................
0x00000040 00000000 00000000 00000000 03000200 ................
0x00000050 00000000 00000000 00000000 00000000 ................
0x00000060 11000000 00000100 00000000 00000000 ................
0x00000070 00000000 00000000 1d000000 0000f1ff ................
0x00000080 0d000000 00000000 00000000 00000000 ................
0x00000090 2d000000 10000200 00000000 00000000 -...............
0x000000a0 00000000 00000000 ........
The entries are of type:
typedef struct {
Elf64_Word st_name;
unsigned char st_info;
unsigned char st_other;
Elf64_Half st_shndx;
Elf64_Addr st_value;
Elf64_Xword st_size;
} Elf64_Sym;
Like in the section table, the first entry is magical and set to a fixed meaningless values.
The ELF standard specifies multiple file formats:
- Object files (
.o
).Intermediate step to generating executables and other formats:Source code | | Compilation | v Object file | | Linking | v Executable
Object files exist to make compilation faster: withmake
, we only have to recompile the modified source files based on timestamps.We have to do the linking step every time, but it is much less expensive.
- Executable files (no standard Linux extension).This is what the Linux kernel can actually run.
- Archive files (
.a
).Libraries meant to be embedded into executables during the Linking step.
- Shared object files (
.so
).Libraries meant to be loaded when the executable starts running.
- Core dumps.Such files may be generated by the Linux kernel when the program does naughty things, e.g. segfault.They exist to help debugging the program.
In this tutorial, we consider only object and executable files.
Diffraction of Cathode Rays by a Thin Film by Thomson and Reid (1927) by Ciro Santilli 34 Updated 2024-12-15 +Created 1970-01-01
Run output is placed under
out/
:Some of the output data is stored as
.cpickle
files. To observe those files, you need the original Python classes, and therefore you have to be inside Docker, from the host it won't work.We can list all the plots that have been produced under Plots are also available in SVG and PDF formats, e.g.:
out/
withfind -name '*.png'
The output directory has a hierarchical structure of type:where:
./out/manual/wildtype_000000/000000/generation_000000/000000/
wildtype_000000
: variant conditions.wildtype
is a human readable label, and000000
is an index amongst the possiblewildtype
conditions. For example, we can have different simulations with different nutrients, or different DNA sequences. An example of this is shown at run variants.000000
: initial random seed for the initial cell, likely fed to NumPy'snp.random.seed
genereation_000000
: this will increase with generations if we simulate multiple cells, which is supported by the model000000
: this will presumably contain the cell index within a generation
We also understand that some of the top level directories contain summaries over all cells, e.g. the
massFractionSummary.pdf
plot exists at several levels of the hierarchy:./out/manual/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/000000/plotOut/massFractionSummary.pdf
./out/manual/wildtype_000000/000000/generation_000000/000000/plotOut/massFractionSummary.pdf
Each of thoes four levels of
plotOut
is generated by a different one of the analysis scripts:./out/manual/plotOut
: generated bypython runscripts/manual/analysisVariant.py
. Contains comparisons of different variant conditions. We confirm this by looking at the results of run variants../out/manual/wildtype_000000/plotOut
: generated bypython runscripts/manual/analysisCohort.py --variant_index 0
. TODO not sure how to differentiate between two different labels e.g.wildtype_000000
andsomethingElse_000000
. If-v
is not given, a it just picks the first one alphabetically. TODO not sure how to automatically generate all of those plots without inspecting the directories../out/manual/wildtype_000000/000000/plotOut
: generated bypython runscripts/manual/analysisMultigen.py --variant_index 0 --seed 0
./out/manual/wildtype_000000/000000/generation_000000/000000/plotOut
: generated bypython runscripts/manual/analysisSingle.py --variant_index 0 --seed 0 --generation 0 --daughter 0
. Contains information about a single specific cell.
Unfortunately, due to lack of one page to rule them all, the on-Git tree publication list is meager, some of the most relevant ones seems to be:
- 2021 open access review paper: journals.asm.org/doi/full/10.1128/ecosalplus.ESP-0001-2020 "The E. coli Whole-Cell Modeling Project". They should just past that stuff in a README :-) The article mentions that it is a follow up to the previous M. genitalium whole cell model by Covert lab. Only 43% of known genes modelled at this point however, a shame.
- 2020 under Science paywall: www.science.org/doi/10.1126/science.aav3751 "Simultaneous cross-evaluation of heterogeneous E. coli datasets via mechanistic simulation"
Undergraduate course of the University of Oxford by Ciro Santilli 34 Updated 2024-12-15 +Created 1970-01-01
For a detailed analysis of one transaction see: Nelson-Mandela.jpg.
Best guess so far, all in ASCII hex of output scripts:
- remove the single output value different from first one from payload, that's the change, and it is randomly placed as far as I see
- 64 bytes: hex address of top level text
- 1 byte: some random punctuation
- decimal number of bytes of some payload
- 1 byte: some random punctuation
- 64 bytes: same as the first address
- CR LF
- ends in NUL
Classification of 3-transitive groups by Ciro Santilli 34 Updated 2024-12-15 +Created 1970-01-01
The big breakthrough of the vertebrates appears to be the ability to swim around in a straight line and eat smaller species that are floating about.
Bones appear to help that a lot!
It is likely the most efficient design to travel long distances. Be thin and wiggle your tail around.
There are unlisted articles, also show them or only show them.