first commit
BIN
assets/0729372ae057f66c4a23560a5766c896_1c6b282fb494482fb.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
4414
assets/1-s2.0-S266729522400014X-main_1745506318109_0.pdf
Normal file
1
assets/140_1725987521271_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 3}}
|
||||
BIN
assets/140_1725987521271_0.pdf
Normal file
BIN
assets/145b88993660fcc6067af51b2691269b_fd1ff7a257cd41f9b.png
Normal file
|
After Width: | Height: | Size: 461 B |
1
assets/147_1725987529229_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/147_1725987529229_0.pdf
Normal file
BIN
assets/1f78fad1b6e7b6e2df41e169b90044e7_a67ea2fbe783470c8.png
Normal file
|
After Width: | Height: | Size: 444 B |
@@ -0,0 +1,69 @@
|
||||
{:highlights [{:id #uuid "65bd3daa-f325-4ccd-920c-c5153820dfb8",
|
||||
:page 1,
|
||||
:position {:bounding {:x1 73.67708587646484,
|
||||
:y1 270.7083435058594,
|
||||
:x2 444.6940612792969,
|
||||
:y2 288.7083435058594,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 73.67708587646484,
|
||||
:y1 270.7083435058594,
|
||||
:x2 444.6940612792969,
|
||||
:y2 288.7083435058594,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 1},
|
||||
:content {:text " Cloud Strategy, Transformation, and Leadership"},
|
||||
:properties {:color "yellow"}}
|
||||
{:id #uuid "65bd3dc1-5338-452e-a005-a409084a2a14",
|
||||
:page 1,
|
||||
:position {:bounding {:x1 155.42709350585938,
|
||||
:y1 921.59375,
|
||||
:x2 379.35980224609375,
|
||||
:y2 939.59375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 155.42709350585938,
|
||||
:y1 921.59375,
|
||||
:x2 379.35980224609375,
|
||||
:y2 939.59375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 1},
|
||||
:content {:text nil},
|
||||
:properties {:color "yellow"}}
|
||||
{:id #uuid "65bd3dc3-f45a-4a27-a4a6-0b1c90b52028",
|
||||
:page 1,
|
||||
:position {:bounding {:x1 126.68144226074219,
|
||||
:y1 767.1979370117188,
|
||||
:x2 187.8962860107422,
|
||||
:y2 785.1979370117188,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 126.68144226074219,
|
||||
:y1 767.1979370117188,
|
||||
:x2 187.8962860107422,
|
||||
:y2 785.1979370117188,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 1},
|
||||
:content {:text "Security"},
|
||||
:properties {:color "yellow"}}
|
||||
{:id #uuid "65bd3dc9-c46e-4e22-9bbc-b91a54e483ae",
|
||||
:page 1,
|
||||
:position {:bounding {:x1 60,
|
||||
:y1 800.3958740234375,
|
||||
:x2 867.1305541992188,
|
||||
:y2 818.3958740234375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 60,
|
||||
:y1 800.3958740234375,
|
||||
:x2 867.1305541992188,
|
||||
:y2 818.3958740234375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 1},
|
||||
:content {:text "As part of the delivery leadership team at CTP, I was one of the co-founders of the CTP Security Guild"},
|
||||
:properties {:color "yellow"}}],
|
||||
:extra {:page 1}}
|
||||
1
assets/226_1725987598939_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 3}}
|
||||
BIN
assets/226_1725987598939_0.pdf
Normal file
1
assets/288_1725987610046_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 2}}
|
||||
BIN
assets/288_1725987610046_0.pdf
Normal file
1
assets/305_1725987615800_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/305_1725987615800_0.pdf
Normal file
1
assets/322_1725987621146_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 3}}
|
||||
BIN
assets/322_1725987621146_0.pdf
Normal file
1
assets/438_1725987627705_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 3}}
|
||||
BIN
assets/438_1725987627705_0.pdf
Normal file
1
assets/444_1725987632750_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 3}}
|
||||
BIN
assets/444_1725987632750_0.pdf
Normal file
1
assets/525_1725987641158_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/525_1725987641158_0.pdf
Normal file
1
assets/528_1725987646946_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/528_1725987646946_0.pdf
Normal file
1
assets/611_1725987651480_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 3}}
|
||||
BIN
assets/611_1725987651480_0.pdf
Normal file
BIN
assets/611_1725987657658_0.pdf
Normal file
1
assets/616_1729005527705_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/616_1729005527705_0.pdf
Normal file
1
assets/639_1725987686237_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/639_1725987686237_0.pdf
Normal file
1
assets/645_1725987690648_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/645_1725987690648_0.pdf
Normal file
1
assets/6_1725987500211_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 2}}
|
||||
BIN
assets/6_1725987500211_0.pdf
Normal file
1
assets/729_1725987698704_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/729_1725987698704_0.pdf
Normal file
@@ -0,0 +1,18 @@
|
||||
{:highlights [{:id #uuid "65bd88c7-1957-4b86-b2e7-a871f92a8932",
|
||||
:page 4,
|
||||
:position {:bounding {:x1 38.28350067138672,
|
||||
:y1 183.98958837985992,
|
||||
:x2 145.39584350585938,
|
||||
:y2 195.32291662693024,
|
||||
:width 532,
|
||||
:height 688.4705882352941},
|
||||
:rects ({:x1 38.28350067138672,
|
||||
:y1 183.98958837985992,
|
||||
:x2 145.39584350585938,
|
||||
:y2 195.32291662693024,
|
||||
:width 532,
|
||||
:height 688.4705882352941}),
|
||||
:page 4},
|
||||
:content {:text "unctional heartburn "},
|
||||
:properties {:color "yellow"}}],
|
||||
:extra {:page 4}}
|
||||
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 1}}
|
||||
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
1
assets/FIT_Guide_1745519020906_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 15}}
|
||||
BIN
assets/FIT_Guide_1745519020906_0.pdf
Normal file
BIN
assets/General_Plugin_Program_1746203171141_0.pptx
Normal file
BIN
assets/LLMAll_en-US_FINAL_1745506159045_0.pdf
Normal file
@@ -0,0 +1,70 @@
|
||||
{:highlights [{:id #uuid "680bd5d4-3165-40cc-976d-c3f0dd785ae4",
|
||||
:page 9,
|
||||
:position {:bounding {:x1 77.9453125,
|
||||
:y1 746.859375,
|
||||
:x2 896.9478759765625,
|
||||
:y2 784.53125,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 726.5549926757812,
|
||||
:y1 746.859375,
|
||||
:x2 896.9478759765625,
|
||||
:y2 765.359375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}
|
||||
{:x1 77.9453125,
|
||||
:y1 766.03125,
|
||||
:x2 239.2425537109375,
|
||||
:y2 784.53125,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 9},
|
||||
:content {:text "Cloud Security Posture Management (CSPM)"},
|
||||
:properties {:color "yellow"}}
|
||||
{:id #uuid "680bd62a-3a17-491e-991b-0870af5e72cf",
|
||||
:page 10,
|
||||
:position {:bounding {:x1 60.03125,
|
||||
:y1 743.9453125,
|
||||
:x2 919.5341186523438,
|
||||
:y2 781.609375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 241.2763671875,
|
||||
:y1 743.9453125,
|
||||
:x2 919.5341186523438,
|
||||
:y2 762.4453125,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}
|
||||
{:x1 60.03125,
|
||||
:y1 763.109375,
|
||||
:x2 506.1417236328125,
|
||||
:y2 781.609375,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 10},
|
||||
:content {:text "industry-specific and regional regulatory requirements, such as GDPR and others, to ensure customer data is handled in accordance with legal standards"},
|
||||
:properties {:color "red"}}
|
||||
{:id #uuid "680bd6e6-df41-48b8-bc1e-034f85138951",
|
||||
:page 17,
|
||||
:position {:bounding {:x1 60.03125,
|
||||
:y1 328.4140625,
|
||||
:x2 932.5658569335938,
|
||||
:y2 366.078125,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998},
|
||||
:rects ({:x1 60.03125,
|
||||
:y1 328.4140625,
|
||||
:x2 913.8855590820312,
|
||||
:y2 346.9140625,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}
|
||||
{:x1 60.03125,
|
||||
:y1 347.578125,
|
||||
:x2 932.5658569335938,
|
||||
:y2 366.078125,
|
||||
:width 1019.9999999999999,
|
||||
:height 1319.9999999999998}),
|
||||
:page 17},
|
||||
:content {:text "Authentication keys are set by HPE and can be changed by the customer at their request by accessing the local key manager (LKM) using a simple management interface. This key is required to unlock the drive when power is restored."},
|
||||
:properties {:color "green"}}],
|
||||
:extra {:page 21}}
|
||||
BIN
assets/PCE_Security_White_Paper_Version_1.0_1745518636447_0.pdf
Normal file
BIN
assets/Pasted image 20230313114700.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
assets/Pasted image 20230805200756.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
assets/Pasted image 20230805200813.png
Normal file
|
After Width: | Height: | Size: 120 KiB |
BIN
assets/Pasted image 20230805215325.png
Normal file
|
After Width: | Height: | Size: 235 KiB |
BIN
assets/Pasted image 20230807124637.png
Normal file
|
After Width: | Height: | Size: 300 KiB |
BIN
assets/Pasted image 20230807124701.png
Normal file
|
After Width: | Height: | Size: 320 KiB |
BIN
assets/Pasted image 20230913114626.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
assets/Pasted image 20230913114646.png
Normal file
|
After Width: | Height: | Size: 158 KiB |
BIN
assets/Pasted image 20230913114856.png
Normal file
|
After Width: | Height: | Size: 268 KiB |
BIN
assets/Pasted image 20240119104604.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
assets/Pasted image 20240120142638.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
assets/Pasted image 20240125132812.png
Normal file
|
After Width: | Height: | Size: 216 KiB |
BIN
assets/Pasted image 20240125133010.png
Normal file
|
After Width: | Height: | Size: 520 KiB |
BIN
assets/Pasted image 20240125133101.png
Normal file
|
After Width: | Height: | Size: 544 KiB |
BIN
assets/Pasted image 20240125133123.png
Normal file
|
After Width: | Height: | Size: 417 KiB |
BIN
assets/Pasted image 20240125133141.png
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
assets/Pasted image 20240125133147.png
Normal file
|
After Width: | Height: | Size: 244 KiB |
BIN
assets/PluginsInCirculation_1746203173713_0.xlsx
Normal file
1
assets/Result_(1)_(2)_1745519071502_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 1}}
|
||||
BIN
assets/Result_(1)_(2)_1745519071502_0.pdf
Normal file
BIN
assets/Secure_Software_Development_Lifecycle_1746453636939_0.pdf
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 4}}
|
||||
BIN
assets/Secure_Software_Development_Lifecycle_1746453636941_0.pdf
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 1}}
|
||||
BIN
assets/Up_and_Then_Down_The_New_Yorker_1707145419344_0.pdf
Normal file
BIN
assets/a23f0c2dc5cbc3a10586cd5a57654a4c_d30822759f664313b.png
Normal file
|
After Width: | Height: | Size: 438 B |
@@ -0,0 +1,147 @@
|
||||
{:highlights [{:id #uuid "65c52911-9631-4780-8669-1fedd6a83a00",
|
||||
:page 2,
|
||||
:position {:bounding {:x1 504.9271240234375,
|
||||
:y1 413.44793701171875,
|
||||
:x2 923.3995971679688,
|
||||
:y2 471.22918701171875,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998},
|
||||
:rects ({:x1 524.875,
|
||||
:y1 413.44793701171875,
|
||||
:x2 923.3995971679688,
|
||||
:y2 431.44793701171875,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.9271240234375,
|
||||
:y1 433.28125,
|
||||
:x2 923.3380737304688,
|
||||
:y2 451.28125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.9271240234375,
|
||||
:y1 453.22918701171875,
|
||||
:x2 919.152587890625,
|
||||
:y2 471.22918701171875,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}),
|
||||
:page 2},
|
||||
:content {:text "Foods rich in histamine include pickled and canned foods, matured cheeses, smoked meat products, shellfish, walnuts, beans, chocolate and other cocoa-based products, and alcohol"},
|
||||
:properties {:color "yellow"}}
|
||||
{:id #uuid "65c5292c-434c-4861-a6c6-5fa9fa08b5e7",
|
||||
:page 2,
|
||||
:position {:bounding {:x1 504.94793701171875,
|
||||
:y1 512.9791870117188,
|
||||
:x2 923.41162109375,
|
||||
:y2 650.53125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998},
|
||||
:rects ({:x1 868.9166870117188,
|
||||
:y1 512.9791870117188,
|
||||
:x2 923.366943359375,
|
||||
:y2 530.9791870117188,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 532.9271240234375,
|
||||
:x2 923.28076171875,
|
||||
:y2 550.9271240234375,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 552.8646240234375,
|
||||
:x2 923.3898315429688,
|
||||
:y2 570.8646240234375,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 572.8125,
|
||||
:x2 923.3146362304688,
|
||||
:y2 590.8125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 592.6458740234375,
|
||||
:x2 923.41162109375,
|
||||
:y2 610.6458740234375,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 612.59375,
|
||||
:x2 923.3961791992188,
|
||||
:y2 630.59375,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 632.53125,
|
||||
:x2 652.9437255859375,
|
||||
:y2 650.53125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}),
|
||||
:page 2},
|
||||
:content {:text "Antihistamines inhibit these effects by targeting histamine receptors, either H1 or H2. H1 receptors are targeted typically in treating allergic reactions and mast cell–mediated disorders. H2 antihistamines are used to treat GERD and LPR because they reduce stomach acid by blocking H2 receptors in parietal cells of the gastric mucosa"},
|
||||
:properties {:color "yellow"}}
|
||||
{:id #uuid "65c52942-57ee-48f5-a263-d5d54a99a5f9",
|
||||
:page 2,
|
||||
:position {:bounding {:x1 504.94793701171875,
|
||||
:y1 632.53125,
|
||||
:x2 923.5597534179688,
|
||||
:y2 690.4166870117188,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998},
|
||||
:rects ({:x1 661.6146850585938,
|
||||
:y1 632.53125,
|
||||
:x2 923.36865234375,
|
||||
:y2 650.53125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 652.4791870117188,
|
||||
:x2 923.5597534179688,
|
||||
:y2 670.4791870117188,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 839.8958740234375,
|
||||
:y1 669.5416870117188,
|
||||
:x2 845.4375,
|
||||
:y2 682.2083740234375,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 504.94793701171875,
|
||||
:y1 672.4166870117188,
|
||||
:x2 839.9366455078125,
|
||||
:y2 690.4166870117188,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}),
|
||||
:page 2},
|
||||
:content {:text "It has been suggested that lack of diamine oxidase cause diminished histamine degradation and leads to the development of histamine sensitivity.9"},
|
||||
:properties {:color "red"}}
|
||||
{:id #uuid "65c52961-65fc-414c-ade5-48e9b0a42d18",
|
||||
:page 3,
|
||||
:position {:bounding {:x1 527.5552368164062,
|
||||
:y1 718.5,
|
||||
:x2 923.3893432617188,
|
||||
:y2 775.03125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998},
|
||||
:rects ({:x1 527.5552368164062,
|
||||
:y1 718.5,
|
||||
:x2 923.3893432617188,
|
||||
:y2 735.166748046875,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 531.1146240234375,
|
||||
:y1 738.4271240234375,
|
||||
:x2 922.9063720703125,
|
||||
:y2 755.09375,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}
|
||||
{:x1 531.1146240234375,
|
||||
:y1 758.3646240234375,
|
||||
:x2 706.5086669921875,
|
||||
:y2 775.03125,
|
||||
:width 989.9999999999999,
|
||||
:height 1304.9999999999998}),
|
||||
:page 3},
|
||||
:content {:text "Wantke F, Gotz M, Jarisch R. The histamine-free diet. Der Hautarzt Zeitschrift fur Dermatologie, Venerologie, Verwandte Gebiete. 1993;44(8):512-516"},
|
||||
:properties {:color "red"}}],
|
||||
:extra {:page 3}}
|
||||
206
assets/bicycle_gear_calculator_withsummary_1746460243216_0.py
Normal file
@@ -0,0 +1,206 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Bicycle Gear Calculator
|
||||
|
||||
This script calculates and generates markdown tables for:
|
||||
- Gear inches for combinations of chainring and rear cog
|
||||
- Cadence for combinations of chainring and rear cog at different target speeds
|
||||
- Speeds in MPH for combinations of chainring and rear cog at different target cadences
|
||||
|
||||
The script also provides an option to save each table as a separate file.
|
||||
"""
|
||||
|
||||
import os
|
||||
import math
|
||||
|
||||
def calculate_gear_inches(chainring, cog, wheel_size, tire_width):
|
||||
"""Calculate gear inches for a given combination."""
|
||||
# Calculate wheel diameter in inches (including tire)
|
||||
wheel_diameter = wheel_size / 25.4 + 2 * tire_width / 25.4
|
||||
return (chainring / cog) * wheel_diameter
|
||||
|
||||
def calculate_speed(chainring, cog, wheel_size, tire_width, cadence):
|
||||
"""Calculate speed in MPH for a given combination and cadence."""
|
||||
# Calculate wheel circumference in meters
|
||||
wheel_diameter_m = (wheel_size + 2 * tire_width) / 1000
|
||||
wheel_circumference_m = wheel_diameter_m * math.pi
|
||||
|
||||
# Calculate distance traveled per pedal revolution in meters
|
||||
distance_per_revolution = wheel_circumference_m * (chainring / cog)
|
||||
|
||||
# Calculate speed in MPH (cadence is in RPM)
|
||||
# distance_per_minute = distance_per_revolution * cadence (meters/minute)
|
||||
# Convert to meters/hour and then to miles/hour
|
||||
meters_per_hour = distance_per_revolution * cadence * 60
|
||||
miles_per_hour = meters_per_hour / 1609.34
|
||||
|
||||
return miles_per_hour
|
||||
|
||||
def calculate_cadence(chainring, cog, wheel_size, tire_width, speed_mph):
|
||||
"""Calculate cadence in RPM for a given combination and speed."""
|
||||
# Calculate wheel circumference in meters
|
||||
wheel_diameter_m = (wheel_size + 2 * tire_width) / 1000
|
||||
wheel_circumference_m = wheel_diameter_m * math.pi
|
||||
|
||||
# Calculate distance traveled per pedal revolution in meters
|
||||
distance_per_revolution = wheel_circumference_m * (chainring / cog)
|
||||
|
||||
# Calculate cadence in RPM
|
||||
# speed_mph converted to meters/minute
|
||||
meters_per_minute = speed_mph * 1609.34 / 60
|
||||
cadence = meters_per_minute / distance_per_revolution
|
||||
|
||||
return cadence
|
||||
|
||||
def create_gear_inches_table(chainrings, cogs, wheel_size, tire_width):
|
||||
"""Create a markdown table showing gear inches for all combinations."""
|
||||
header = "| Chainring / Cog | " + " | ".join([str(cog) for cog in cogs]) + " |\n"
|
||||
separator = "| --- | " + " | ".join(["---" for _ in cogs]) + " |\n"
|
||||
|
||||
rows = ""
|
||||
for chainring in chainrings:
|
||||
row = f"| {chainring} | "
|
||||
row += " | ".join([f"{calculate_gear_inches(chainring, cog, wheel_size, tire_width):.1f}" for cog in cogs])
|
||||
row += " |\n"
|
||||
rows += row
|
||||
|
||||
return header + separator + rows
|
||||
|
||||
def create_cadence_table(chainrings, cogs, wheel_size, tire_width, speed_mph):
|
||||
"""Create a markdown table showing cadence for all combinations at a specific speed."""
|
||||
header = f"| Cadence at {speed_mph} MPH | " + " | ".join([str(cog) for cog in cogs]) + " |\n"
|
||||
separator = "| --- | " + " | ".join(["---" for _ in cogs]) + " |\n"
|
||||
|
||||
rows = ""
|
||||
for chainring in chainrings:
|
||||
row = f"| {chainring} | "
|
||||
row += " | ".join([f"{calculate_cadence(chainring, cog, wheel_size, tire_width, speed_mph):.1f}" for cog in cogs])
|
||||
row += " |\n"
|
||||
rows += row
|
||||
|
||||
return header + separator + rows
|
||||
|
||||
def create_speed_table(chainrings, cogs, wheel_size, tire_width, cadence):
|
||||
"""Create a markdown table showing speed for all combinations at a specific cadence."""
|
||||
header = f"| Speed at {cadence} RPM | " + " | ".join([str(cog) for cog in cogs]) + " |\n"
|
||||
separator = "| --- | " + " | ".join(["---" for _ in cogs]) + " |\n"
|
||||
|
||||
rows = ""
|
||||
for chainring in chainrings:
|
||||
row = f"| {chainring} | "
|
||||
row += " | ".join([f"{calculate_speed(chainring, cog, wheel_size, tire_width, cadence):.1f}" for cog in cogs])
|
||||
row += " |\n"
|
||||
rows += row
|
||||
|
||||
return header + separator + rows
|
||||
|
||||
def save_to_file(content, filename):
|
||||
"""Save content to a file."""
|
||||
with open(filename, 'w') as f:
|
||||
f.write(content)
|
||||
print(f"Saved to {filename}")
|
||||
|
||||
def create_summary_table(chainrings, cogs, wheel_size, tire_width):
|
||||
"""Create a comprehensive summary table with multiple metrics for each combination."""
|
||||
# Define reference values
|
||||
reference_speed = 20.0 # mph
|
||||
reference_cadence = 100.0 # rpm
|
||||
|
||||
header = "| Chainring | Cog | Ratio | Gear Inches | Cadence at 20mph | Speed at 100rpm |\n"
|
||||
separator = "| --- | --- | --- | --- | --- | --- |\n"
|
||||
|
||||
rows = ""
|
||||
for chainring in chainrings:
|
||||
for cog in cogs:
|
||||
# Calculate all metrics
|
||||
ratio = round(chainring / cog, 2)
|
||||
gear_inches = calculate_gear_inches(chainring, cog, wheel_size, tire_width)
|
||||
cadence_at_20mph = calculate_cadence(chainring, cog, wheel_size, tire_width, reference_speed)
|
||||
speed_at_100rpm = calculate_speed(chainring, cog, wheel_size, tire_width, reference_cadence)
|
||||
|
||||
# Format the row
|
||||
row = f"| {chainring} | {cog} | {ratio:.2f} | {gear_inches:.1f} | {cadence_at_20mph:.1f} | {speed_at_100rpm:.1f} |\n"
|
||||
rows += row
|
||||
|
||||
return header + separator + rows
|
||||
|
||||
def main():
|
||||
# User input for variables
|
||||
print("Bicycle Gear Calculator")
|
||||
print("======================\n")
|
||||
|
||||
# Get tire and wheel specifications
|
||||
tire_width = float(input("Enter tire width in mm (e.g., 23): ") or 25)
|
||||
wheel_size = float(input("Enter wheel size in mm (e.g., 622 for 700c): ") or 622)
|
||||
|
||||
# Get chainring and cog specifications
|
||||
chainring_input = input("Enter list of chainring teeth, separated by commas (e.g., 34,36,38,40): ") or "34,36,38,40,42"
|
||||
chainrings = [int(x.strip()) for x in chainring_input.split(",")]
|
||||
|
||||
cog_input = input("Enter list of rear cog teeth, separated by commas (e.g., 11,12,13,14,16,18,20,22,25,28,32): ") or "11,12,13,14,16,18,20,22,25,28,32"
|
||||
cogs = [int(x.strip()) for x in cog_input.split(",")]
|
||||
|
||||
# Get target cadences and speeds
|
||||
cadence_input = input("Enter list of target cadences in RPM, separated by commas (e.g., 80,90,100): ") or "80,90,100"
|
||||
cadences = [int(x.strip()) for x in cadence_input.split(",")]
|
||||
|
||||
speed_input = input("Enter list of target speeds in MPH, separated by commas (e.g., 15,18,20,25): ") or "15,18,20,25"
|
||||
speeds = [float(x.strip()) for x in speed_input.split(",")]
|
||||
|
||||
# Generate tables
|
||||
print("\nGenerating tables...\n")
|
||||
|
||||
# Gear inches table
|
||||
gear_inches_table = create_gear_inches_table(chainrings, cogs, wheel_size, tire_width)
|
||||
print("Gear Inches Table:")
|
||||
print(gear_inches_table)
|
||||
|
||||
# Cadence tables for each target speed
|
||||
cadence_tables = []
|
||||
for speed in speeds:
|
||||
table = create_cadence_table(chainrings, cogs, wheel_size, tire_width, speed)
|
||||
cadence_tables.append((speed, table))
|
||||
print(f"\nCadence Table for {speed} MPH:")
|
||||
print(table)
|
||||
|
||||
# Speed tables for each target cadence
|
||||
speed_tables = []
|
||||
for cadence in cadences:
|
||||
table = create_speed_table(chainrings, cogs, wheel_size, tire_width, cadence)
|
||||
speed_tables.append((cadence, table))
|
||||
print(f"\nSpeed Table for {cadence} RPM:")
|
||||
print(table)
|
||||
|
||||
# Summary table with multiple metrics
|
||||
summary_table = create_summary_table(chainrings, cogs, wheel_size, tire_width)
|
||||
print("\nSummary Table (all metrics):")
|
||||
print(summary_table)
|
||||
|
||||
# Option to save tables
|
||||
save_option = input("\nDo you want to save tables to files? (y/n): ").lower().strip()
|
||||
if save_option == 'y':
|
||||
# Create a directory for the files if it doesn't exist
|
||||
output_dir = "gear_tables"
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir)
|
||||
|
||||
# Save gear inches table
|
||||
gear_inches_filename = os.path.join(output_dir, "gear_inches.md")
|
||||
save_to_file(gear_inches_table, gear_inches_filename)
|
||||
|
||||
# Save cadence tables
|
||||
for speed, table in cadence_tables:
|
||||
cadence_filename = os.path.join(output_dir, f"cadence_at_{speed}mph.md")
|
||||
save_to_file(table, cadence_filename)
|
||||
|
||||
# Save speed tables
|
||||
for cadence, table in speed_tables:
|
||||
speed_filename = os.path.join(output_dir, f"speed_at_{cadence}rpm.md")
|
||||
save_to_file(table, speed_filename)
|
||||
|
||||
# Save summary table
|
||||
summary_filename = os.path.join(output_dir, "summary_table.md")
|
||||
save_to_file(summary_table, summary_filename)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
BIN
assets/c023144c0c8d78c053c3b2d3877586ea.png
Normal file
|
After Width: | Height: | Size: 589 KiB |
BIN
assets/c9e1d852b4d287027fe76f794e506878_67fa980ca9e340b48.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
assets/cef758a5224048b0d27ed41e2d224312_04222a7afff94a1c8.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
assets/cf7bb08a18427da2e4d5952a39cd091a.png
Normal file
|
After Width: | Height: | Size: 436 KiB |
272
assets/ctg201532a_1707079941062_0.edn
Normal file
@@ -0,0 +1,272 @@
|
||||
{:highlights [{:id #uuid "65bff94f-c6f4-4d7e-b7f3-846f059c3db5",
|
||||
:page 3,
|
||||
:position {:bounding {:x1 508.0625,
|
||||
:y1 130.9479217529297,
|
||||
:x2 906.7697143554688,
|
||||
:y2 330.1666717529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998},
|
||||
:rects ({:x1 508.0625,
|
||||
:y1 130.9479217529297,
|
||||
:x2 906.6722412109375,
|
||||
:y2 147.6145782470703,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 691.40625,
|
||||
:y1 146.5520782470703,
|
||||
:x2 906.5989990234375,
|
||||
:y2 157.8854217529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 149.1979217529297,
|
||||
:x2 691.3969116210938,
|
||||
:y2 165.8645782470703,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 715.4166870117188,
|
||||
:y1 149.1979217529297,
|
||||
:x2 906.5989990234375,
|
||||
:y2 165.8645782470703,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 167.3229217529297,
|
||||
:x2 906.6212158203125,
|
||||
:y2 183.9895782470703,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 185.7083282470703,
|
||||
:x2 906.7425537109375,
|
||||
:y2 202.37501525878906,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 203.96876525878906,
|
||||
:x2 906.7655029296875,
|
||||
:y2 220.6354217529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 566.8958740234375,
|
||||
:y1 219.7083282470703,
|
||||
:x2 906.7326049804688,
|
||||
:y2 231.0416717529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 222.21876525878906,
|
||||
:x2 567.068603515625,
|
||||
:y2 238.8854217529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 580.2916870117188,
|
||||
:y1 222.21876525878906,
|
||||
:x2 906.7326049804688,
|
||||
:y2 238.8854217529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 240.4791717529297,
|
||||
:x2 906.7569580078125,
|
||||
:y2 257.1458282470703,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 258.7291717529297,
|
||||
:x2 906.7697143554688,
|
||||
:y2 275.3958282470703,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 276.9895782470703,
|
||||
:x2 906.75537109375,
|
||||
:y2 293.65626525878906,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 295.37501525878906,
|
||||
:x2 906.6832275390625,
|
||||
:y2 312.0416717529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 508.0625,
|
||||
:y1 313.50001525878906,
|
||||
:x2 605.8724975585938,
|
||||
:y2 330.1666717529297,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}),
|
||||
:page 3},
|
||||
:content {:text "Non-acid reflux. Non-acid GER involves the reflux of gastric contents with a pH 44.13 Esophageal hypersensitivity involves the perception of “not-abnormal reflux,” which may include episodes of non-acid reflux; these may be influenced by the degree of esophageal distension and/or higher reflux volumes.7 Duodenogastroesophageal reflux (DGER) is the reflux of duodenal contents into the esophagus, which can potentially be diagnosed by measuring the bilirubin level in the refluxate, 13 although accurate measurement is problematic. Bile reflux is uncommon, accounting for only 10–15% of non-acid reflux"},
|
||||
:properties {:color "green"}}
|
||||
{:id #uuid "65bff973-502b-4ef6-94c6-2910b604a133",
|
||||
:page 4,
|
||||
:position {:bounding {:x1 153.47726440429688,
|
||||
:y1 715.375,
|
||||
:x2 245.57781982421875,
|
||||
:y2 732.0416870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998},
|
||||
:rects ({:x1 153.47726440429688,
|
||||
:y1 715.375,
|
||||
:x2 245.57781982421875,
|
||||
:y2 732.0416870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}),
|
||||
:page 4},
|
||||
:content {:text "Rome criteria"},
|
||||
:properties {:color "red"}}
|
||||
{:id #uuid "65bff9b3-a93b-490b-b6f9-12bf50fddd46",
|
||||
:page 5,
|
||||
:position {:bounding {:x1 79.76042175292969,
|
||||
:y1 1062.6146640777588,
|
||||
:x2 478.5605926513672,
|
||||
:y2 1207.0729160308838,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998},
|
||||
:rects ({:x1 79.76042175292969,
|
||||
:y1 1062.6146640777588,
|
||||
:x2 478.34881591796875,
|
||||
:y2 1079.2812900543213,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1080.7396640777588,
|
||||
:x2 478.39256286621094,
|
||||
:y2 1097.4062900543213,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1098.9896640777588,
|
||||
:x2 478.36021423339844,
|
||||
:y2 1115.6562900543213,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1117.3854160308838,
|
||||
:x2 478.1787109375,
|
||||
:y2 1134.0521640777588,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1135.6354160308838,
|
||||
:x2 478.49815368652344,
|
||||
:y2 1152.3021640777588,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1153.8959140777588,
|
||||
:x2 478.28900146484375,
|
||||
:y2 1170.5625400543213,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1172.1459140777588,
|
||||
:x2 478.5605926513672,
|
||||
:y2 1188.8125400543213,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 79.76042175292969,
|
||||
:y1 1190.4062900543213,
|
||||
:x2 222.16781616210938,
|
||||
:y2 1207.0729160308838,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}),
|
||||
:page 5},
|
||||
:content {:text "Extraesophageal symptoms. GERD symptoms can be divided into esophageal/typical symptoms, such as regurgitation and heartburn, or extraesophageal/atypical symptoms, such as globus, chronic cough, and/or hoarseness. The Montreal Consensus has acknowledged links between GERD and these extraesophageal symptoms; however, despite multiple epidemiological studies identifying a link, causality cannot be concluded. "},
|
||||
:properties {:color "purple"}}
|
||||
{:id #uuid "65bffa39-81f5-49d1-9ec2-e4ab3b214105",
|
||||
:page 6,
|
||||
:position {:bounding {:x1 86.3125,
|
||||
:y1 496.3125305175781,
|
||||
:x2 485.11285400390625,
|
||||
:y2 604.3854370117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998},
|
||||
:rects ({:x1 86.3125,
|
||||
:y1 496.3125305175781,
|
||||
:x2 173.6041717529297,
|
||||
:y2 512.9791870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 184.7291717529297,
|
||||
:y1 496.3125305175781,
|
||||
:x2 208.625,
|
||||
:y2 512.9791870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 219.85418701171875,
|
||||
:y1 496.3125305175781,
|
||||
:x2 322.5208435058594,
|
||||
:y2 512.9791870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 333.0520935058594,
|
||||
:y1 496.3125305175781,
|
||||
:x2 377.6875,
|
||||
:y2 512.9791870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 388.51043701171875,
|
||||
:y1 496.3125305175781,
|
||||
:x2 449.5208435058594,
|
||||
:y2 512.9791870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 460.4375,
|
||||
:y1 496.3125305175781,
|
||||
:x2 484.9871826171875,
|
||||
:y2 512.9791870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 86.3125,
|
||||
:y1 514.5625305175781,
|
||||
:x2 484.98431396484375,
|
||||
:y2 531.2291870117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 86.3125,
|
||||
:y1 532.8229370117188,
|
||||
:x2 484.84429931640625,
|
||||
:y2 549.4895935058594,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 86.3125,
|
||||
:y1 551.0729370117188,
|
||||
:x2 485.1063232421875,
|
||||
:y2 567.7395935058594,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 86.3125,
|
||||
:y1 569.3333435058594,
|
||||
:x2 485.11285400390625,
|
||||
:y2 586.0000305175781,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}
|
||||
{:x1 86.3125,
|
||||
:y1 587.7187805175781,
|
||||
:x2 355.1630859375,
|
||||
:y2 604.3854370117188,
|
||||
:width 992.1266666666666,
|
||||
:height 1322.8349999999998}),
|
||||
:page 6},
|
||||
:content {:text "Esophageal pH monitoring. A widely available and accepted test for measuring esophageal acid exposure remains ambulatory pH monitoring.39,40 Prolonged (48–96 h) wireless pH monitoring as compared with the catheter-based systems increases the likelihood of detecting reflux disease in patients undergoing symptom evaluation"},
|
||||
:properties {:color "blue"}}
|
||||
{:id #uuid "65bffaa1-3c7b-4554-82e9-7892f4f52b87",
|
||||
:page 8,
|
||||
:position {:bounding {:x1 145,
|
||||
:y1 1631.8646240234375,
|
||||
:x2 814.8333740234375,
|
||||
:y2 1659.8646240234375,
|
||||
:width 1666.7727999999997,
|
||||
:height 2222.3628},
|
||||
:rects ({:x1 145,
|
||||
:y1 1631.8646240234375,
|
||||
:x2 814.8333740234375,
|
||||
:y2 1659.8646240234375,
|
||||
:width 1666.7727999999997,
|
||||
:height 2222.3628}),
|
||||
:page 8},
|
||||
:content {:text " any data about its role in non-responders. However, it is"},
|
||||
:properties {:color "blue"}}],
|
||||
:extra {:page 4}}
|
||||
BIN
assets/ctg201532a_1707079941062_0.pdf
Normal file
BIN
assets/e3d068d71c2d923a82ad6d48db8f94f1_0254085634924ac0b.png
Normal file
|
After Width: | Height: | Size: 450 B |
BIN
assets/ecef50f445faeab01bbc1e6155e5f639_7bd6258e035042259.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
1
assets/ijms-26-05587_1749669741214_0.edn
Normal file
@@ -0,0 +1 @@
|
||||
{:highlights [], :extra {:page 7}}
|
||||
BIN
assets/ijms-26-05587_1749669741214_0.pdf
Normal file
BIN
assets/image-1024x761_28f2e5c7c2ba4f3db8b59fa7d16f0a18.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
assets/image-1_74786ad710a048b39590b8ace23adafb.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/image-2_2a8f48340d1f42f89ad8b8d6625a29dd.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
assets/image-3_8778e665dd1a429e87934030ecb94eb4.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
assets/image-4_d87892a6dbf14972b7671eea665fc69d.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
assets/image-5_517e6d50503d4170a05242d0c43d98da.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |