27.xhtml 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!--
  3. h t t :: / / t /
  4. h t t :: // // t //
  5. h ttttt ttttt ppppp sssss // // y y sssss ttttt //
  6. hhhh t t p p s // // y y s t //
  7. h hh t t ppppp sssss // // yyyyy sssss t //
  8. h h t t p s :: / / y .. s t .. /
  9. h h t t p sssss :: / / yyyyy .. sssss t .. /
  10. <https://y.st./>
  11. Copyright © 2016 Alex Yst <mailto:copyright@y.st>
  12. This program is free software: you can redistribute it and/or modify
  13. it under the terms of the GNU General Public License as published by
  14. the Free Software Foundation, either version 3 of the License, or
  15. (at your option) any later version.
  16. This program is distributed in the hope that it will be useful,
  17. but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19. GNU General Public License for more details.
  20. You should have received a copy of the GNU General Public License
  21. along with this program. If not, see <https://www.gnu.org./licenses/>.
  22. -->
  23. <!DOCTYPE html>
  24. <html xmlns="http://www.w3.org/1999/xhtml">
  25. <head>
  26. <base href="https://y.st./en/weblog/2016/11-November/27.xhtml" />
  27. <title>I figured out how to get include.d&apos;s new URI API implemented. &lt;https://y.st./en/weblog/2016/11-November/27.xhtml&gt;</title>
  28. <link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png" />
  29. <link rel="stylesheet" type="text/css" href="/link/basic.css" />
  30. <link rel="stylesheet" type="text/css" href="/link/site-specific.css" />
  31. <script type="text/javascript" src="/script/javascript.js" />
  32. <meta name="viewport" content="width=device-width" />
  33. </head>
  34. <body>
  35. <nav>
  36. <p>
  37. <a href="/en/">Home</a> |
  38. <a href="/en/a/about.xhtml">About</a> |
  39. <a href="/en/a/contact.xhtml">Contact</a> |
  40. <a href="/a/canary.txt">Canary</a> |
  41. <a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
  42. <a href="/en/opinion/">Opinions</a> |
  43. <a href="/en/coursework/">Coursework</a> |
  44. <a href="/en/law/">Law</a> |
  45. <a href="/en/a/links.xhtml">Links</a> |
  46. <a href="/en/weblog/2016/11-November/27.xhtml.asc">{this page}.asc</a>
  47. </p>
  48. <hr/>
  49. <p>
  50. Weblog index:
  51. <a href="/en/weblog/"><abbr title="American Standard Code for Information Interchange">ASCII</abbr> calendars</a> |
  52. <a href="/en/weblog/index_ol_ascending.xhtml">Ascending list</a> |
  53. <a href="/en/weblog/index_ol_descending.xhtml">Descending list</a>
  54. </p>
  55. <hr/>
  56. <p>
  57. Jump to entry:
  58. <a href="/en/weblog/2015/03-March/07.xhtml">&lt;&lt;First</a>
  59. <a rel="prev" href="/en/weblog/2016/11-November/26.xhtml">&lt;Previous</a>
  60. <a rel="next" href="/en/weblog/2016/11-November/28.xhtml">Next&gt;</a>
  61. <a href="/en/weblog/latest.xhtml">Latest&gt;&gt;</a>
  62. </p>
  63. <hr/>
  64. </nav>
  65. <header>
  66. <h1>I figured out how to get include.d&apos;s new <abbr title="Uniform Resource Identifier">URI</abbr> <abbr title="application programming interface">API</abbr> implemented.</h1>
  67. <p>Day 00631: Sunday, 2016 November 27</p>
  68. </header>
  69. <img src="/img/CC_BY-SA_4.0/y.st./weblog/2016/11/27.jpg" alt="A small, flowered plant with an interesting leaf pattern" class="weblog-header-image" width="811" height="480" />
  70. <h2 id="general">General news</h2>
  71. <p>
  72. Vanessa&apos;s package arrived.
  73. While I can&apos;t say that I&apos;m a fan of Amazon and their business practices, I can say this: unlike the Blair Candy Company, Amazon delivers what you order.
  74. </p>
  75. <p>
  76. One of the shift leaders tried to get me to cover a closing shift tomorrow, which because I already have an opening shift, would have meant that I would be working from open to close.
  77. I agreed to take the shift, despite not wanting such long hours, because I can&apos;t really afford to turn down hours when they come my way.
  78. However, the shift that needed to be covered had come from a shift leader.
  79. The other closing shift leader didn&apos;t want to replace that shift leader with a lower-ranking crew member, so I am off the hook.
  80. </p>
  81. <p>
  82. My <a href="/a/canary.txt">canary</a> still sings the tune of freedom and transparency.
  83. </p>
  84. <h2 id="dreams">Dream journal</h2>
  85. <p>
  86. I woke up in the middle of the night from a dream about horrific situations in emergency rooms and ambulances.
  87. Critical medical supplies were depleted, and patients had no hope of survival.
  88. However, due to quick thinking and improvisation, paramedics and other medical professionals were able to save these people anyway and prevent permanent damage to them.
  89. </p>
  90. <p>
  91. I went back to bed, and my alarm woke me from another dream.
  92. This time, President-elect Donald Trump was &quot;down-voting&quot; negative comments about themself online.
  93. However, it was heavily implied that by &quot;down-voting&quot;, what was really meant was censoring and outright deleting.
  94. </p>
  95. <h2 id="include.d"><a href="https://git.volatile.ch./y.st./include.d/releases">include.d</a></h2>
  96. <p>
  97. I figured out what I needed to do with include.d&apos;s <abbr title="Uniform Resource Identifier">URI</abbr>-handling <abbr title="application programming interface">API</abbr>.
  98. Mostly, at least.
  99. I needed to have the constructor method set the properties directly instead of relying on other methods to do that.
  100. I also needed to replace those methods with normalization/validation methods that return the normalized value (or throw an exception if the string is invalid) instead of setting the value.
  101. I then needed to have child classes rely on the parent&apos;s constructor to set the properties.
  102. The tricky part was be getting the child class to perform its scheme-specific normalizations and validations while still allowing the parent class&apos;s constructor to do its thing.
  103. The child class&apos;s constructor needs to have already parsed the data to normalize it before allowing the parent class to touch it.
  104. Converting the data back to a string and passing it to the parent class to reparse it seems counterproductive.
  105. Likewise, I cannot simply have the child class overwrite the normalization/validation methods.
  106. After all, the parent class must <strong>*always*</strong> verify that the data conforms to <abbr title="Request for Comments">RFC</abbr> 3986.
  107. That functionality must not be allowed to be overwritten.
  108. I could have the parent class call both the child&apos;s normalization method and its own, but that means either always checking to see if a second normalizer exists or normalizing twice using the same method when using the parent class directly.
  109. I ended up setting up dummy normalization methods that do nothing, calling them every time, and allowing child classes to overwrite <strong>*those*</strong> without actually touching the parent&apos;s own normalization methods.
  110. </p>
  111. <p>
  112. I was planning to work on include.d tomorrow and work exclusively on my course essay today, but I couldn&apos;t resist trying to flesh out my new ideas for <code>\st\y\uri</code>&apos;s <abbr title="application programming interface">API</abbr> to see if they were even feasible.
  113. I still have the <code>\st\y\uri\gopher</code> class to rewrite though.
  114. The rest of the rewrite was a success, and I don&apos;t anticipate any problems with this class.
  115. </p>
  116. <h2 id="apartment">Apartment hunting</h2>
  117. <p>
  118. I finally tested my cellular telephone&apos;s voice mailbox using a telephone at work, to make sure that messages can be left.
  119. No voicemail setup was necessary.
  120. Now, I can safely use this number while apartment hunting to avoid using the Google Voice number that might be disappearing on me next month.
  121. Tomorrow, I should try to update my application with the apartments that I&apos;ve already submitted an application to.
  122. </p>
  123. <hr/>
  124. <p>
  125. Copyright © 2016 Alex Yst;
  126. You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
  127. If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
  128. My address is in the source comments near the top of this document.
  129. This license also applies to embedded content such as images.
  130. For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
  131. </p>
  132. <p>
  133. <abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
  134. This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F11-November%2F27.xhtml"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.1</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2016%2F11-November%2F27.xhtml"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
  135. </p>
  136. </body>
  137. </html>