roebe 0.5.191 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of roebe might be problematic. Click here for more details.

Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -26
  3. data/bin/create_my_directories +2 -2
  4. data/bin/{ruby_dhcpcd → dhcpcd_wrapper} +1 -1
  5. data/doc/README.gen +12 -0
  6. data/doc/core/array.md +24 -23
  7. data/doc/core/gem_and_gemspec.md +12 -11
  8. data/doc/core/misc.md +23 -20
  9. data/doc/statistics/statistics.md +1 -0
  10. data/lib/roebe/actions/actions.rb +68 -0
  11. data/lib/roebe/base/misc.rb +14 -1
  12. data/lib/roebe/browser/output_url_then_open_in_browser.rb +8 -6
  13. data/lib/roebe/classes/alltagsgeschichte.rb +1 -1
  14. data/lib/roebe/classes/at.rb +2 -2
  15. data/lib/roebe/classes/auto_rename_file_based_on_its_creation_date.rb +24 -12
  16. data/lib/roebe/classes/books/books.rb +159 -117
  17. data/lib/roebe/classes/books/menu.rb +8 -7
  18. data/lib/roebe/classes/books/sanitize_this_book_path/sanitize_this_book_path.rb +0 -1
  19. data/lib/roebe/classes/check_yaml.rb +15 -11
  20. data/lib/roebe/classes/compile_kernel.rb +3 -1
  21. data/lib/roebe/classes/copy_kernel_config.rb +5 -3
  22. data/lib/roebe/classes/create_desktop_file.rb +1 -1
  23. data/lib/roebe/classes/create_my_directories.rb +12 -10
  24. data/lib/roebe/classes/dhcpcd/{dhcpcd.rb → dhcpcd_wrapper.rb} +137 -95
  25. data/lib/roebe/classes/dhcpcd/kill_dhcpcd.rb +2 -2
  26. data/lib/roebe/classes/do_install.rb +7 -6
  27. data/lib/roebe/classes/done.rb +1 -1
  28. data/lib/roebe/classes/downcase_extension.rb +4 -4
  29. data/lib/roebe/classes/email.rb +44 -40
  30. data/lib/roebe/classes/enable.rb +1 -1
  31. data/lib/roebe/classes/github.rb +1 -1
  32. data/lib/roebe/classes/kde/install_this_konsole_theme.rb +1 -1
  33. data/lib/roebe/classes/make_gem.rb +29 -27
  34. data/lib/roebe/classes/readme_generator/readme_generator.rb +597 -1
  35. data/lib/roebe/classes/report_how_many_files_are_in_this_directory.rb +83 -0
  36. data/lib/roebe/classes/set_background.rb +14 -0
  37. data/lib/roebe/classes/show_ten_aliases.rb +15 -3
  38. data/lib/roebe/classes/tales_from_the_crypt.rb +1 -1
  39. data/lib/roebe/classes/update.rb +2 -1
  40. data/lib/roebe/constants/array_install_these_gem_projects.rb +1 -1
  41. data/lib/roebe/constants/roebe.rb +2 -0
  42. data/lib/roebe/custom_methods/module.rb +16 -0
  43. data/lib/roebe/fonts/fonts.rb +39 -0
  44. data/lib/roebe/hello_world/hello_world.rb +0 -0
  45. data/lib/roebe/math/log10.rb +3 -3
  46. data/lib/roebe/math/the_collatz_problem.rb +104 -0
  47. data/lib/roebe/shell/shell/shell.rb +6 -6
  48. data/lib/roebe/shell_scripts/lfs/002_gcc_1.sh +13 -1
  49. data/lib/roebe/shell_scripts/lfs/003_linux_1.sh +1 -0
  50. data/lib/roebe/shell_scripts/lfs/007_ncurses_2.sh +4 -1
  51. data/lib/roebe/shell_scripts/lfs/020_xz_2.sh +5 -5
  52. data/lib/roebe/shell_scripts/lfs/021_binutils_2.sh +1 -0
  53. data/lib/roebe/shell_scripts/lfs/022_gcc_2.sh +12 -1
  54. data/lib/roebe/shell_scripts/lfs/025_ruby_2.sh +13 -0
  55. data/lib/roebe/shell_scripts/lfs/lfs_build_variables.sh +48 -8
  56. data/lib/roebe/toplevel_methods/to_mp3.rb +1 -1
  57. data/lib/roebe/version/version.rb +2 -2
  58. data/lib/roebe/wasm/README.md +7 -0
  59. data/lib/roebe/wasm/enable_simple_puts_output.rb +9 -0
  60. data/lib/roebe/wasm/wasm_examples.html +43 -0
  61. data/lib/roebe/www/RNA/RNA.cgi +42 -1
  62. data/lib/roebe/www/algorithms/algorithms.rb +22 -0
  63. data/lib/roebe/www/analytical_chemistry/content.md +3 -0
  64. data/lib/roebe/www/animals/animals.cgi +25 -0
  65. data/lib/roebe/www/bioanalytik/bioanalytik.cgi +90 -0
  66. data/lib/roebe/www/cellbiology/cellbiology.rb +16 -2
  67. data/lib/roebe/www/chemistry/S/303/244uren_Basen_und_der_pH_Wert/S/303/244uren_Basen_und_der_pH_Wert.cgi +242 -0
  68. data/lib/roebe/www/chemistry/chemistry.rb +10 -258
  69. data/lib/roebe/www/chemistry/css_rules.css +67 -0
  70. data/lib/roebe/www/chemistry/die_quantenzahlen/die_quantenzahlen.cgi +123 -0
  71. data/lib/roebe/www/chemistry/funktionelle_gruppen_in_der_chemie/funktionelle_gruppen_in_der_chemie.cgi +52 -0
  72. data/lib/roebe/www/erste_hilfe/erste_hilfe.cgi +212 -62
  73. data/lib/roebe/www/fonts/fonts.cgi +245 -0
  74. data/lib/roebe/www/hardware/computersysteme/computersysteme.rb +117 -102
  75. data/lib/roebe/www/hardware/netzteile/netzteile.cgi +94 -0
  76. data/lib/roebe/www/immunology/immunology.rb +101 -7
  77. data/lib/roebe/www/linux/antiX/antiX.rb +7 -4
  78. data/lib/roebe/www/linux/linux.rb +9 -11
  79. data/lib/roebe/www/linux/linuxmint/linuxmint.rb +33 -0
  80. data/lib/roebe/www/linux/slackware/slackware.rb +136 -27
  81. data/lib/roebe/www/lyrics/lyrics.rb +1 -1
  82. data/lib/roebe/www/microbiology/microbiology.rb +17 -2
  83. data/lib/roebe/www/mikrobielle_physiologie/mikrobielle_physiologie.cgi +1086 -2
  84. data/lib/roebe/www/mitochondria/mitochondria.cgi +16 -2
  85. data/lib/roebe/www/module_www.rb +2 -3
  86. data/lib/roebe/www/neurobiology/neurobiology.rb +20 -3
  87. data/lib/roebe/www/pdf/pdf.rb +13 -0
  88. data/lib/roebe/www/physics/physics.rb +20 -4
  89. data/lib/roebe/www/physiology/physiology.rb +5 -1
  90. data/lib/roebe/www/play_this_video_file/play_this_video_file.cgi +1 -1
  91. data/lib/roebe/www/programming_advice/programming_advice.cgi +36 -0
  92. data/lib/roebe/www/programming_advice/programming_advice.md +349 -0
  93. data/lib/roebe/www/psychologie/psychologie.rb +7 -1
  94. data/lib/roebe/www/science/science.rb +6 -0
  95. data/lib/roebe/www/sex_and_reproduction/sex_and_reproduction.cgi +18 -2
  96. data/lib/roebe/www/structural_biology/structural_biology.cgi +16 -0
  97. data/lib/roebe/www/the_cell_cycle/the_cell_cycle.cgi +27 -0
  98. data/lib/roebe/www/video/video.rb +1 -1
  99. data/lib/roebe/www/virology/virology.rb +12 -1
  100. data/lib/roebe/www/war_in_Ukraine_2022/war_in_Ukraine_2022.rb +26 -8
  101. data/lib/roebe/www/xorg/xorg.rb +3 -202
  102. data/lib/roebe/yaml/books/favourite_books.yml +6 -8
  103. data/lib/roebe/yaml/directory_structure.yml +1 -0
  104. metadata +26 -15
  105. data/lib/roebe/classes/readme_generator/constants.rb +0 -21
  106. data/lib/roebe/classes/readme_generator/initialize.rb +0 -38
  107. data/lib/roebe/classes/readme_generator/misc.rb +0 -548
  108. data/lib/roebe/classes/readme_generator/reset.rb +0 -28
  109. data/lib/roebe/classes/readme_generator/run.rb +0 -20
  110. data/lib/roebe/shell_scripts/lfs/lfs_variables.sh +0 -31
  111. data/lib/roebe/www/mikrobielle_physiologie/mikrobielle_physiologie.rb +0 -1055
  112. data/lib/roebe/www/programming_advice/programming_advice.yml +0 -31
@@ -23,7 +23,7 @@ module Roebe
23
23
  unless Object.const_defined? :MultimediaParadise
24
24
  require 'multimedia_paradise'
25
25
  end
26
- require 'multimedia_paradise/conversions/conversions.rb'
26
+ require 'multimedia_paradise/toplevel_methods/conversions.rb'
27
27
  if i.is_a? Array
28
28
  i.each {|entry| to_mp3(entry) }
29
29
  else
@@ -11,7 +11,7 @@ module Roebe
11
11
  # ========================================================================= #
12
12
  # === VERSION
13
13
  # ========================================================================= #
14
- VERSION = '0.5.191'
14
+ VERSION = '0.6.3'
15
15
 
16
16
  # ========================================================================= #
17
17
  # === Roebe.report_version
@@ -29,7 +29,7 @@ module Roebe
29
29
  # too much - it is more a "hint" as to when a last important updated
30
30
  # happened.
31
31
  # ========================================================================= #
32
- LAST_UPDATE = '31.01.2024'
32
+ LAST_UPDATE = '12.03.2024'
33
33
 
34
34
  # ========================================================================= #
35
35
  # === URL_TO_THE_DOCUMENTATION
@@ -0,0 +1,7 @@
1
+ This directory may contain code that can be used for ruby.wasm.
2
+
3
+ Right now this is very experimental as of March 2024.
4
+
5
+ To write output onto the browser, do:
6
+
7
+ JS.global[:document].write "Hello, world!"
@@ -0,0 +1,9 @@
1
+ # Ad-hoc modify class Object.
2
+ # eval(File.read('enable_simple_puts_output.rb'))
3
+ $stdout = Object.new.tap { |obj|
4
+ def obj.write(i)
5
+ JS.global[:document].write(i)
6
+ end
7
+ }
8
+
9
+ # puts "Hello, world!" # => Prints "Hello, world!" to the HTML document
@@ -0,0 +1,43 @@
1
+ <html>
2
+ <head>
3
+ <title>Wasm Examples</title>
4
+ <script src="https://cdn.jsdelivr.net/npm/@ruby/3.3-wasm-wasi@2.5.0/dist/browser.script.iife.js"></script>
5
+ <script type="text/ruby">
6
+
7
+ require 'js'
8
+
9
+ alias e puts
10
+
11
+ #JS.global[:document].write File.stat 'README.md'
12
+ #eval(File.read('enable_simple_puts_output.rb'))
13
+
14
+
15
+ class Foobar
16
+ def initialize
17
+ 'OK'
18
+ end
19
+ def result?
20
+ 'OK!!!'
21
+ end
22
+ end
23
+
24
+ JS.global[:document].write Foobar.new.result?
25
+ JS.global[:document].write 'Current directory is: '+Dir.pwd
26
+
27
+
28
+ JS.global[:document].write "<br>\n\nERM, world 2222!" # => Prints "Hello, world!" to the HTML document
29
+
30
+ JS.global[:document].write RUBY_VERSION # => Hello, world! (printed to the browser console)
31
+
32
+
33
+ pp File.directory?('/tmp')
34
+
35
+ entries = Dir['*']
36
+ JS.global[:document].write(entries.empty?.to_s)
37
+ entries.each {|entry|
38
+ JS.global[:document].write(entry+'<br>')
39
+ JS.global[:document].write('Yeah!')
40
+ }
41
+ </script>
42
+ </head>
43
+ </html>
@@ -129,12 +129,53 @@ smaller_width('mar0px pad0px s0_8em') {
129
129
  }
130
130
  fancy_spacer
131
131
  # ========================================================================= #
132
+ # === Isolierung von RNA
133
+ # ========================================================================= #
134
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/RNA/RNA.cgi#isolierung_von_rna
135
+ # ========================================================================= #
136
+ fancy3 'Isolierung von RNA - auch RNA Extraktion genannt'
137
+ p_default_le {
138
+ e 'RNA wird isoliert um zum Beispiel die Genexpression (mRNA) zu
139
+ analysieren.'
140
+ br
141
+ e 'Eine Methode zur RNA Extraktion erfolgt über modifiziertes
142
+ Guanidiniumthiocyanat - dies ist die Methode nach Piotr
143
+ Chomczynski und Nicoletta Sacchi.'
144
+ br
145
+ selfy 'https://www.ncbi.nlm.nih.gov/pubmed/2440339/'
146
+ br
147
+ e 'Eine andere Methode ist die <b>Säulchenmethode</b>, mit
148
+ verschiedenen Protokollen.'
149
+ br
150
+ e 'Alle RNA-Typen (mRNA, rRNA, siRNA, tRNA) sind
151
+ deutlich instabiler als DNA-Moleküle. Zudem sind sie gegenüber
152
+ RNasen (Endoribonukleasen RNase A, RNase H, RNase P und
153
+ so weiter) äußerst empfindlich.'
154
+ br
155
+ e 'RNasen sind Enzyme, die die Spaltung von RNA in kleinere
156
+ Fragmente katalysieren. Sie sind sehr stabil und können auch nach
157
+ Autoklavierung noch aktiv sein.'
158
+ br
159
+ e 'RNA wird durch RNasen sehr effizient abgebaut. Um RNA-Abbau zu
160
+ vermeiden, sollten RNA und RNasen frühzeitig voneinander
161
+ getrennt werden. Auch muss man verhindern, das RNasen aus der
162
+ Umgebung in die Probe gelangt - darum immer passende Handschuhe
163
+ verwenden. Alle Organismen produzieren RNasen; auch im
164
+ menschlichen Schweiß auf der Hautoberfläche können RNase
165
+ gefunden werden. Auch das verwendete Wasser sollte RNase-frei
166
+ sein.'
167
+ br
168
+ e 'Beim Zellaufschluss werden RNasen zügig denaturiert - meistents
169
+ über chaotrope Verbindungen, wie <b>Guanidiniumthiocyanat</b>.'
170
+ }
171
+ fancy_spacer
172
+ # ========================================================================= #
132
173
  # === miRNAs versus siRNAs
133
174
  # ========================================================================= #
134
175
  # http://localhost/programming/ruby/src/roebe/lib/roebe/www/RNA/RNA.cgi#miRNAs_versus_siRNAs
135
176
  # ========================================================================= #
136
177
  fancy3 'miRNAs versus siRNAs','marb1px'
137
- p_default_le(css_style: 'border: 0px dotted royalblue; margin-top: 1px;') {
178
+ p_default_le(css_style: 'border: 2px dotted royalblue; margin-top: 12px;') {
138
179
  table2('mars1em mart1px pretty_table','','',
139
180
  '<b>miRNA</b>','blocks the translation of specific mRNAs',
140
181
  '<b>siRNA</b>','degrades specific mRNA'
@@ -91,6 +91,9 @@ smaller_width('mar2px pad0px s0_6em') {
91
91
  br
92
92
  e 'It is used to <b>model the probability of different
93
93
  outcomes</b>.'
94
+ br
95
+ e 'Ein Monte-Carlo-Algorithmus ist ein Algorithmus der nur mit einer
96
+ bestimmten Wahrscheinlichkeit korrekt ist.'
94
97
  }
95
98
  # ========================================================================= #
96
99
  # === The Fibonacci algorithm
@@ -247,6 +250,25 @@ smaller_width('mar2px pad0px s0_6em') {
247
250
  br
248
251
  e 'The behaviour of some algorithms depends strongly on
249
252
  the input data.'
253
+ br
254
+ e 'Ein Algorithmus ist ein automatisierbares Verfahren, welches
255
+ einen Input zu einem Output verarbeitet.'
256
+ br
257
+ e 'Bei der Lösung eines Problems mit Hilfe eins Algorithmus
258
+ wird eine Regel angewendet, deren Vorschrift so klar ist,
259
+ dass jedermann zu jeder Zeit dieses Problem auf die
260
+ gleiche Art und Weise löst (aus <i>Krämer 1988</i>).'
261
+ br
262
+ e 'Algorithms are general step-by-step procedures for
263
+ solving problems.'
264
+ br
265
+ e 'Damit ein Computer einen Algorithmus verarbeiten kann,
266
+ muss dieser in einer Sprache verfasst sein, die der
267
+ Computer versteht.'
268
+ br
269
+ e 'A flowchart is a graphical representation of
270
+ an algorithm, workflow or process for a given
271
+ problem.'
250
272
  }
251
273
  # ========================================================================= #
252
274
  # === Links
@@ -1,2 +1,5 @@
1
1
  - The differing abilities of substances to adhere to the surface of solids can
2
2
  be used to separate mixtures - this forms the basis of chromatography.
3
+
4
+ - In volumetric analysis, for instance, classical colour reactions are
5
+ often used to find out something about the given conditions.
@@ -19,11 +19,36 @@ preferred_width('mar0px pad0px s0_8em') {
19
19
  h1 title?,
20
20
  'mart1px marb0_5em'
21
21
  # ========================================================================= #
22
+ # === Ethology
23
+ # ========================================================================= #
24
+ fancy2 'Ethology'
25
+ p_default_le {
26
+ e 'Ethology is the study of animal behavior observed
27
+ in a natural environment.'
28
+ br
29
+ e 'The process of natural selection that shapes behaviours
30
+ also influences the evolution of animal anatomy.'
31
+ }
32
+ # ========================================================================= #
22
33
  # === Slogans
23
34
  # ========================================================================= #
24
35
  h3 'Slogans'
25
36
  p_default_le {
26
37
  e 'Sessile animals have a very limited opportunity to find a mate.'
38
+ br
39
+ e 'Osmoregulation and excretion are structurally and functionally
40
+ linked in many animals.'
41
+ br
42
+ e 'Researchers concluded that the red belly of the intruding
43
+ male stickleback is a sign stimulus that releases the
44
+ aggressive behavior.'
45
+ br
46
+ e '<b>Animal behaviour</b> is studied in both the wild and
47
+ the laboratory.'
48
+ br
49
+ e 'Behavior - in animals, but also in humans - is an
50
+ essential part of acquiring nutrients and finding a
51
+ partner for sexual reproduction.'
27
52
  }
28
53
  p_default_le(css_style: 'margin-left: 1em;') {
29
54
  science_links
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/bioanalytik/bioanalytik.cgi
6
+ # =========================================================================== #
7
+ require 'cyberweb/autoinclude'
8
+
9
+ english('Bioanalytik') {
10
+ created_on '08.02.2024' # Thursday.
11
+ autoextend
12
+ ruby_favicon
13
+ default_template ''
14
+ body_css_class 'mar0px s2px padt2px VERDANAs'
15
+ body_css_style 'background-color: #d3d2d1;'
16
+ default_font_size_and_hyperlinks
17
+
18
+ preferred_width('mar0px pad0px s0_8em') {
19
+ h1 title?,
20
+ 'mart1px marb0_5em'
21
+ # ========================================================================= #
22
+ # === Molecularly imprinted polymers (MIPs)
23
+ # ========================================================================= #
24
+ fancy3 'Molecularly imprinted polymers'
25
+ p_default_le {
26
+ e '<b>Molecularly imprinted polymers</b> (MIPs) are biomimetic
27
+ materials. They can be used to design artificial receptors
28
+ with a predetermined selectivity.'
29
+ br
30
+ e 'MIPs can mimic physiologic recognition units, such as
31
+ antibodies and receptors, giving a resourceful platform for
32
+ biomedical applications.'
33
+ br
34
+ e 'MIPs can be prepared for targets lacking any available
35
+ recognizing molecules - which is rather useful.'
36
+ br
37
+ e 'MIPs have been used for many applications such as
38
+ <b>biosensors</b>. These polymers can also be paired
39
+ with a reporting system.'
40
+ br
41
+ e 'Molecularly imprinted polymers are synthetic receptors
42
+ for a targeted molecule. As such, they are analogues of
43
+ the natural antibody–antigen systems.'
44
+ br
45
+ boldbr 'Links:'
46
+ br
47
+ selfy 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3189760/'
48
+ }
49
+ # ========================================================================= #
50
+ # === Zelllyse - inklusive pflanzlicher Zellen
51
+ # ========================================================================= #
52
+ fancy3 'Zelllyse - inklusive pflanzlicher Zellen (auch <b>Zellaufschluss</b>
53
+ genannt)'
54
+ p_default_le {
55
+ e 'Zelllyse bezeichnet den Aufschluss einer Zelle, um den Zellinhalt -
56
+ das Lysat - zu gewinnen.'
57
+ br
58
+ e 'Üblicherweise wird dabei die Zellmembran oder Zellwand aufgebrochen;
59
+ das Lysat wird dadurch freigesetzt.'
60
+ br
61
+ e 'Dies geschieht zum Beispiel über mechanische Zellaufschlussverfahren,
62
+ wie mit Hilfe einer Kugelmühle, Ultraschall, Hochdruckhomogenisation
63
+ oder der French Press.'
64
+ br
65
+ e 'Pflanzliche Zellen sind robuster als tierische Zellen; daher
66
+ müssen sie länger bearbeitet werden, zum Beispiel länger
67
+ gemixtw werden.'
68
+ br
69
+ e 'Purification with higher quantities of a protein is usually
70
+ much simpler.'
71
+ }
72
+ # ========================================================================= #
73
+ # === NADH
74
+ # ========================================================================= #
75
+ fancy3 'NADH'
76
+ p_default_le {
77
+ e 'Ein wichtiges Molekül der klinischen Diagnostik, das im UV-Bereich bei
78
+ 340 nm gemessen wird, ist das <one>reduzierte Coenzym NADH</one>
79
+ (<two>Nicotinamidadenindinucleotid)</two>.'
80
+ }
81
+ # ========================================================================= #
82
+ # === Slogans
83
+ # ========================================================================= #
84
+ fancy3 'Slogans'
85
+ p_default_le {
86
+ e 'Die Extraktion - als Teil der Probenvorbereitung in der
87
+ Biaonalytik - ermöglicht eine zuverlässigere
88
+ chromatographische Analyse.'
89
+ }
90
+ }}
@@ -16,8 +16,8 @@ p.default {
16
16
  th {
17
17
  font-size: larger;
18
18
  }
19
-
20
-
19
+
20
+
21
21
  '
22
22
  body_css_class 'mar0px s2px padt1px mart0px VERDANAs'
23
23
  body_css_style 'background-color: #d3d2d1;'
@@ -1101,6 +1101,20 @@ smaller_width('pad6px s0_5em mar1px mart0px') {
1101
1101
  the chromosomes are divided up correctly.'
1102
1102
  earrow 'Cellular checkpoints are quality control
1103
1103
  measures for the cell.'
1104
+ earrow 'Dividing cells in your bone marrow continuously
1105
+ make new blood cells.'
1106
+ earrow 'Transport through channels in a cell membrane
1107
+ occurs at a much faster rate than transport mediated
1108
+ by transporters.'
1109
+ earrow 'Cell membranes allow small nonpolar molecules
1110
+ to permeate by diffusion.'
1111
+ earrow 'Lipid bilayers are essentially impermeable
1112
+ to charged molecules (ions).'
1113
+ earrow 'By forming a protein-lined pathway across the
1114
+ membrane, transport membrane proteins enable specific
1115
+ hydrophilic solutes to cross the membrane without
1116
+ coming into direct contact with the hydrophobic
1117
+ interior of the lipid bilayer.'
1104
1118
  }
1105
1119
  p('mart10px') {
1106
1120
  roebe_sitemap
@@ -0,0 +1,242 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/chemistry/S%C3%A4uren_Basen_und_der_pH_Wert/S%C3%A4uren_Basen_und_der_pH_Wert.cgi
6
+ # =========================================================================== #
7
+ require 'cyberweb/autoinclude'
8
+
9
+ german('Säuren, Basen und der pH-Wert') {
10
+ created_on '04.02.2024' # Sunday.
11
+ autoextend
12
+ ruby_favicon
13
+ default_template '
14
+ #READ_FILE ../css_rules.css
15
+ '
16
+ body_css_class 'mar0px pad0px VERDANAs'
17
+ body_css_style 'background-color: black; color: white;'
18
+ default_font_size_and_hyperlinks
19
+
20
+ set_cmd1 'lightblue marl2em BOLD'
21
+
22
+ preferred_width('mar0px pad0px s0_8em') {
23
+ # =========================================================================== #
24
+ # === The main header (aka internal title)
25
+ # =========================================================================== #
26
+ h1 title?,
27
+ 'mart0px alternative',
28
+ 'header',
29
+ 'color: palegreen;
30
+ font-weight: bold;
31
+ font-size: 100px;
32
+ padding: 5px;
33
+ border: 2px dotted gold;
34
+ padding-left: 10%;
35
+ margin-bottom: 5px;'
36
+ # ========================================================================= #
37
+ # === Säuren und Basen tag (pH tag)
38
+ #
39
+ # Dieser Abschnitt behandelt pH-Berechnungen.
40
+ # ========================================================================= #
41
+ fancy2 'Säuren und Basen - pH-Berechnungen',
42
+ 'on_hover_grow marl1em lightblue mart1em'
43
+ div_default_le {
44
+ p_default_le {
45
+ equote 'Nie das Wasser in die Säure, sonst geschieht
46
+ das Ungeheure!','gold marl2em'
47
+ }
48
+ p_default_le {
49
+ e 'Der <b>pH Wert</b> einer starken Säure kann mit Hilfe folgender
50
+ <b>Formel</b> berechnet werden:'
51
+ br
52
+ cmd ' pH = - log [H+]'
53
+ br
54
+ e 'Sehen wir uns nun hierzu ein paar Beispiele an.'
55
+ }
56
+ # ======================================================================= #
57
+ # === Beispiel #1
58
+ # ======================================================================= #
59
+ p_default_le {
60
+ e 'Beispiel #1: Wie groß ist der pH-Wert eine 5.3 * 10⁻²
61
+ molaren Salzsäure-Lösung?'
62
+ br
63
+ e '<b>Salzsäure</b> ist <b>eine starke Säure</b>; wir können somit
64
+ die <b>einfache Formel für die pH-Wert Berechnung</b> anwenden.'
65
+ br
66
+ cmd '[H₃O+] = [HCl] = 5.3 * 10**-2'
67
+ cmd 'pH = - log [H₃O]+ = -log ( 5.3 * 10**-2) = 1.28'
68
+ cmd 'Math.log10(5.3 * (10**-2))'
69
+ }
70
+ fancy_spacer
71
+ p_default_le {
72
+ e 'Berechnen wir nun den pH Wert für eine starke Base. Beginnen
73
+ wir mit Ca(OH)₂.'
74
+ br
75
+ anm 'Wir müssen uns in Erinnerung halten, das wir zuerst den
76
+ pOH Wert berechnen; erst nachdem wir diesen pOH Wert erhalten
77
+ haben können wir den pH Wert für eine starke Base berechnen.'
78
+ brbr
79
+ e 'Die Formel lautet:'
80
+ br
81
+ cmd ' pOH = -log c0(B-)'
82
+ br
83
+ e 'Wir benötigen also zuerst die Konzentration der Base. Somit
84
+ berechnen wir nun die <b>molare Masse von Ca(OH)₂</b>:'
85
+ br
86
+ e 'Ca: 40.078 u (g / mol) + 2x (16+1) =
87
+ 40 * 34 = 74.092 gramm pro mol.'
88
+ br
89
+ e 'Angenommen wir haben 3 Gramm Ca(OH)2, die in 4 Liter Wasser
90
+ gelöst werden. 3 Gramm sind 0.0404902 mol. Dies würde sich auf
91
+ 1 Liter beziehen; wir haben jedoch 4 Liter, also muss dies
92
+ reduziert werden: 0.0404902 / 4, ergibt <b>0.01012255</b>.'
93
+ br
94
+ e 'Setzen wir dies nun in die Formel ein:'
95
+ br
96
+ cmd ' pOH = -log c0(B-) = -log(0.01012255) = 1.99471.'
97
+ br
98
+ e 'Um zum pH Wert zu gelangen rechnen wir nun 14 - 1.99471 =
99
+ 12.00529; also ein pH Wert von (gerundet) 12.'
100
+ }
101
+ # ======================================================================= #
102
+ # === Beispiel #2
103
+ # ======================================================================= #
104
+ p_default_le {
105
+ e 'Beispiel #2: Wie groß ist der pH-Wert einer 7.6 * 10**-3-molaren
106
+ Kaliumhydroxid-Lösung?'
107
+ br
108
+ e 'Die chemische Formel für <b>Kaliumhydroxid</b> ist <b>KOH</b>.'
109
+ }
110
+ fancy_spacer
111
+ p_default_le {
112
+ e 'Widmen wir uns nun den schwachen Säuren, wie zum Beispiel
113
+ Essigsäure, oder die Kohlensäure im Mineralwasser. Per Definition
114
+ sind schwache Säuren Säuren, die in einer wässrigen Lösung
115
+ nicht vollständig dissoziiert vorliegen.'
116
+ br
117
+ e 'Dies bedeutet zugleich das das Gleichgewicht einer schwachen
118
+ Säure sich auf der <b>linken Seite</b> einer Gleichung
119
+ befindet: also auf der Seite des <b>Edukts</b>.'
120
+ br
121
+ e 'Gegeben seien nun <b>2,5 Gramm Essigsäure</b>. Diese Menge
122
+ wurde mit 2 Liter Wasser (pKs = 4,75) vermischt.'
123
+ br
124
+ boldbr 'Welche pH-Wert hat diese Lösung?'
125
+ br
126
+ e 'Fangen wir an mit der Essigsäure selbst. Die Formel der
127
+ Essigsäure lautet: <b>CH₃COOH</b>. Dies sind <b>60.052
128
+ Gramm pro Mol</b> (2xC = 24; 2xO = 32; 4xH = 4).'
129
+ br
130
+ e 'Wir haben 2.5 Gramm: dies sind 2.5 / 60.052 =
131
+ 0.0417 Mol. Die sind jedoch auf 2 Liter aufgeteilt,
132
+ also verdünnt; würden wir die Konzentration aus nur
133
+ einem Liter nehmen, haben wir daher nur die Hälfte
134
+ an Mol, also: 0.02085'
135
+ br
136
+ e 'Essigsäure dissoziiert in Wasser gemäß folgender Formel:'
137
+ br
138
+ dimg 'science/chemistry/formel_essigsäure_in_wasser.png',
139
+ 'marl3em black3'
140
+ br
141
+ e 'Die Formel für die pH Wert Berechnung schwacher Säuren
142
+ geht wie folgt:'
143
+ br
144
+ cmd ' pH = 0.5 * (pKs - log HA)'
145
+ br
146
+ e 'Wir können nun einsetzen:'
147
+ br
148
+ cmd 'pH = (4.75 - log [0.02085]) / 2 = 3.2154'
149
+ }
150
+ fancy_spacer
151
+ # ======================================================================= #
152
+ # === Beispiel #3
153
+ #
154
+ # Ammoniak-Beispiel.
155
+ # ======================================================================= #
156
+ p_default_le {
157
+ e 'Beispiel #3: Wie groß ist der pH-Wert einer 0,1 M NH3-Lösung
158
+ (Kb = 1.8 ⋅10-5 M)?'
159
+ br
160
+ e '<b>Ammoniak</b> ist eine <b>schwache Base</b>.'
161
+ br
162
+ e 'Der <b>Kb</b> ist 0.00018.'
163
+ br
164
+ cmd 'pKb = <b>3.755 - log(0.1)</b> = 4.744'
165
+ cmd 'Formel ist: pH = ½ (pKs - log cHA)'
166
+ br
167
+ e 'Ergibt pH = <b>11.12765</b>.'
168
+ }
169
+ # ======================================================================= #
170
+ # === Beispiel #4
171
+ #
172
+ # Essigsäure-Beispiel.
173
+ # ======================================================================= #
174
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/chemistry/chemistry.cgi#beispiel_04
175
+ # ======================================================================= #
176
+ p_default_le(id: 'beispiel_04') {
177
+ e 'Beispiel #4: Wie groß ist der pH-Wert, wenn Sie zu einem
178
+ Essigsäure/Acetat-Puffer aus je 1,1 mol 2 mol HCl dazugeben?
179
+ KA (Essigsäure): 1,76 ·10⁻⁵'
180
+ br
181
+ e 'Wir gehen systematisch vor.'
182
+ br
183
+ e 'Wir haben es hier mit einer <b>Pufferreaktion</b> zu tun.'
184
+ br
185
+ e 'Puffer können pH-Änderungen abfedern, sprich, ihnen
186
+ <b>entgegenwirken</b>.'
187
+ br
188
+ e 'Berechnen können wir sie mit Hilfe der
189
+ <b>Henderson-Hasselbalch-Gleichung</b>.'
190
+ br
191
+ }
192
+ # ======================================================================= #
193
+ # === Beispiel #5
194
+ # ======================================================================= #
195
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/chemistry/chemistry.cgi#beispiel_04
196
+ # ======================================================================= #
197
+ p_default_le(id: 'beispiel_05') {
198
+ e 'Beispiel #5: 1 g Ca(OH)₂ werden in 100 ml Wasser gelöst.
199
+ Welchen pH-Wert hat die Lösung?'
200
+ br
201
+ e 'Ca(OH)₂ ist eine <b>starke Base</b>. Der pKb beträgt von 1.37.'
202
+ br
203
+ e 'Die Molmasse von Ca(OH)₂ beträgt: 74.092. 1 Gramm bedeutet
204
+ daher nur 0.0134967 Mol. Dies verdoppeln wir nun:
205
+ 0.0269934 mol. Log ergibt: -1.5687, dann + 14 = 12.431'
206
+ e 'Volumen V = 0.1L'
207
+ }
208
+ # ======================================================================= #
209
+ # === Beispiel #6
210
+ # ======================================================================= #
211
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/chemistry/chemistry.cgi#beispiel_04
212
+ # ======================================================================= #
213
+ p_default_le(id: 'beispiel_06') {
214
+ e 'Beispiel #6: Wie groß ist der pH-Wert einer 0,1 M
215
+ Essigsäure-Lösung (pKs=4,75)?'
216
+ br
217
+ e 'Die Formel lautet:'
218
+ br
219
+ cmd ' pH = 0.5 * (pKs - log cHA)'
220
+ cmd ' pH = 0.5 * (4.75 - log(0.1))'
221
+ cmd ' pH = 0.5 * 5.75 = 2.875'
222
+ }
223
+ br
224
+ }
225
+ # ========================================================================= #
226
+ # === Alkansäuren
227
+ # ========================================================================= #
228
+ # http://localhost/programming/ruby/src/roebe/lib/roebe/www/chemistry/chemistry.cgi#alkans%C3%A4uren
229
+ # ========================================================================= #
230
+ fancy2 'Alkansäuren',
231
+ 'on_hover_grow marl1em lightblue mart1em'
232
+ div_default_le {
233
+ p_default_le {
234
+ dimg 'science/chemistry/ALKAN_SAUREN.jpg',
235
+ 'mars3em'
236
+ brbr
237
+ abr 'https://www.seilnacht.com/Lexikon/carbons.html',
238
+ content: 'Guter Link zu Carbonsäuren',
239
+ css_class: 'mars3em BOLD'
240
+ }
241
+ }
242
+ }}