topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • Sunday April 28, 2024, 4:12 am
  • Proudly celebrating 15+ years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Shades [ switch to compact view ]

Pages: prev1 2 3 4 5 6 [7] 8 9 10 11 12 ... 117next
151
Over here I have a Lenovo Yoga 500-something (it is a 2-in-1 model, just like you have). 6 screws are required to remove the bottom half of the laptop and that is it, full access to RAM, HD. Could hardly be any easier.

However, I do think that when a complete disassembly is required, the hardware is oriented more optimally for getting rid of generated heat when the device is in operation. Or at least less constricted by solid parts the block the natural rise of heat. The cooling fan inside your laptop should have to work less hard than then when hardware is oriented in my Lenovo.

Replacing the (original) HDD for a simple SATA model hard drive is the best thing you can do for your HP device. I did the same with my laptop and although it isn't a speed demon by any means, it is much more pleasant to work with. However, Windows 10 migration from Windows 8.1 (the original OS) made the laptop very slow after some 30 minutes of use. Only a browser with 2 or 3 tabs open and it became slow immediately. It also took between 48 and 72 hours before the battery was fully charged and regardless of this, the laptop screen would dim an get brighter whenever it thought it was charging/on battery. Which was even more irritating than the laptop not "waking up" properly after closing the lid.

Re-installed Windows 10 from scratch (using the method on the Microsoft site for installing Win 10), same problems. Very frustrated I figured I had nothing to lose to try Linux (ended up with: Pop_OS! from System76).
No more dimming, battery charged to 100% in a pretty short period, resulting in the screen not dimming every few seconds anymore, opened browser with 10+ tabs, while listening to internet radio, actively using VPN for remote working and opened document in the LibreOffice word processor. All without a hitch for any period of time. Laptop is "waking up" much more reliably than it ever did under Windows 10 too.

If you are not squeamish about Linux and you wish to give your HP device a second lease of life, it might be something to consider for you too. In a lot of ways the Gnome interface of Pop_OS! is a drastic improvement on the mess that Windows 10 can be (when you need to configure computer settings).

Sorry for repeating the Linux story from my laptop. Just thought I should mention it as an consideration.

If you want to expand your RAM, the manual states that 8 GByte is the maximum. So if you have 2 RAM slots, you can use 2 x 4 GByte RAM modules to get to 8 GByte. It is possible that the 4 GByte you currently have in that laptop are 2 x 2 GByte modules. In that case you will need to replace both of them. Maybe you are lucky if you can get rid of your old RAM modules, but don't expect to get much for them.

But you might be fortunate and have only 1 RAM slot occupied with a 4 GByte RAM module. You could gamble and buy another 4 GByte RAM module. Pay very good attention to the type of RAM you are buying, else you'll end up with the wrong type. RAM modules that use DDR 3 technology come in two types. If you'll get the wrong type, your laptop won't boot.

Even if you get the correct type, there might still be the possibility that both RAM modules are incompatible in combination with each other, while working just fine separately. Best way to go get a new set of 2 x 4 GByte RAM modules (same brand/make/model) of the correct type and Windows 10 will perform quite a lot better. Your old single 4 GByte RAM module is much easier to flip and for a higher price too.

Still, while you will notice the effect of increased RAM capacity in your laptop, it pales in comparison with exchanging the standard HDD with an SSD. That is an order of magnitude more noticeable. Depending on the storage capacity of the SSD, it is cheaper too. The price difference allows you to buy an empty external HDD enclosure and you can build your current HDD into that enclosure. You haven't lost any data this way, you have sped up your device considerably and you gained an external drive with storage capacity you were already used to. Hook that external drive up to one of your USB 3.0 ports and it will be faster than whatever SD card you wish to use and you won't be bothered by that 32 GB limit.

152
EDIT: Shades snuck in before me :P


Only because of my laziness to look up the SD standards conversion tables for names given out by standard committees and names given out by manufacturer's marketing departments.....  :D

153
The service manual from your device states the card reader is made by RealTek. The HP driver download website tells me that the most modern driver for your device is: Realtek Card Reader Driver 10.0.10125.21277 Rev.C.

You can download a slightly newer driver from the RealTek downloads section of their website, but there is likely not much to gain by that. Anyway, On the Realtek website I found that set of chips they use for card readers is labelled: RTS5169

There is where you will find any and all formats the SD card reader supports. But from what I gather on the last link, no support for the fastest SD card models. TBH, couldn't be arsed into looking up what speeds it does support as SD card manufacturers and their standards committee make almost as bad a mess as the fools that man the current USB standards committee. Both are equally deserving of being taken behind the shed for disposal...in a similar painful way as well, if you'd ask me. And I know you didn't.

Also, your device is sporting a 6th generation Intel CPU. And not the best ones available in that generation, so you shouldn't expect too much from your card reader regardless. As always, when you have high I/O demands, you better have a powerful CPU (with equally powerful supportive chipset) capable of processing that amount of I/O. Especially a problem in low- and mid-range budget laptops which by definition need to compromise on hardware, because of cooling limitations, battery-life and parts prices. On a side note: the current Intel CPU family is designated as 11th generation, so a 6th generation CPU is getting a bit long in the tooth in 'hardware years', which is quite similar to the concept of 'dog years'.

154
Depending on how airflow is managed inside your laptops, there might be heat related issues popping up when you keep the lid closed.

Some designs use holes in the bottom plate of the keyboard as vents to let hot air out. And their efficiency will be drastically reduced when covered with a closed lid, which may generate heat of its own.

Some designs have openings in their chassis when the lid is open, but those same openings are covered when the lid is closed (as protection against picking up debris inside carrying cases).

If desk space is such an issue, you better trade one laptop in for a Intel NUC model. Those don't take up very little room and are designed to be (passively) cooled, while still packing a considerable "punch" given their size.

155
Because a KVM switch was not asked for. And no, no expensive routers or anything were required with the software solutions provided here.

Sometimes I wonder why I even bother.

156
The Windows file system is actually quite similar to a database. And databases are know to have queries that take much more time than expected. This is also know as an "expensive" query.

If the data inside the filesystem is somehow damaged or stored on slow(er) data blocks from the hard disk, getting something as simple as a menu can take quite some time. It might prove useful to open the command-line and type in there:
CHKDSK C: /F

The command-line version of the Check disk functionality in Windows is much more powerful than the option in Windows itself. The command-line version will ask you to reboot your system. During reboot, your computer will ask if the test should be interrupted. Select here 'No'. After that you will need patience until it is finished. How much patience? That depends on the storage capacity of the drive, the state of the drive, the available resources in your computer etc.

If available, Windows will move file system data around onto faster data blocks as part of the repairs it can execute. And that improves the opening of menus in Windows, because queries have become much "cheaper".

But sometimes a drive has gotten so slow-(ish) that CHKDSK won't help anymore. Tools like 'HD Sentinel Standard' (often offered for free) take a look at the state of your hard disk using S.M.A.R.T., which is functionality built into all hard drives of any type that have been produced the last 20 years or even longer. There are alternative programs for Windows that do the same for free or a small fee.

Still, if your computer is doing tasks in the background, those tasks do consume resources that can make the opening of menus a lot slower as well. It is always a good idea to take a look at what software is running in the background. The Task Manager in Windows 10 has improved a lot when compared with the task manager of previous Windows versions. But there are many freely available alternatives for that as well. None of them can hold a candle against 'Process Explorer' from Sysinternals. It keeps track of many, many things, which may appear to look chaotic in the eyes of someone who is not accustomed to this kind of tool. But when you get your head around it, it is a very good companion in finding out what is bugging your computer. Best of all, it's free.

Process Explorer shows you the load on the CPU, RAM, Network (part of I/O) and drive(s) (also part of the I/O).

High I/O loads seriously slow down any computer. Another test you could try is to kill all running tasks running in the front and background (except Process Explorer) and let the computer 'idle' while keeping an eye on resource usage in Process Explorer. If there is still a high I/O load, you are likely having a piece of hardware in your computer that has degraded. If it is disk I/O, you should consider buying a new drive, if it is network I/O it may be a degraded network module or your system may be infected with a rootkit.

   



157
Depends....by indicating to be living in Paraguay (South America) as I do, calls are non-existent. Barely get an email message about new products from Embarcadero/Idera. I'll guess that they don't see this country (or the whole of Central and South America) as an interesting prospect.

Use that if you don't want to be bothered by phone/mail.

158
The electrical grid in Paraguay is flawed, to put it mildly. The office where I work is in an area. if you go to the second floor, you can see the outer wall of a power relay station from the national grid. Still, even there it is bad.

Anyway, these last few years there was only one company that could connect the office using a cable connection and because of that crappy grid we went through a lot of modems. Almost 2 years ago a similar problem like the one from the OP happened to the current modem. Being fed up with our ISP simply replacing the modem as a "solution" (and the configuration headache that gives me), the power supply was changed. Originally the modem comes with a "wall wart" power supply. As my boss is playing around with self build 3D-printers, there was a spare power supply for a heat-bed available and I used that instead of the original power supply. Volt output on both supplies were practically matching, the heat-bed power supply is capable of delivering more amps, but is "smart" and detects what amps are needed and only delivers what is needed.

Modem, till this day, works perfectly again.

My take on it is that the original power supply is made as cheaply as possible and electronics do degrade over time. The original power supply just couldn't deliver the required volts/amps reliably enough anymore, which introduced all kinds of weird behavior, including the need to reboot/power-cycle the modem once a day.

Still, if you need to do a power-cycle once per 24 hours, you could consider a much more basic (but very reliable) method, like programmable outlets:
APC-P4GC-Wall-Surge-Protector
GE-Programmable-Grounded-Intervals

Very cheap, very reliable.

Or if you want an analog one:
NSi-Industries-TORK-RTN312-Incandescent

Or one you can control by voice (if you have an Alexa):
LINGANZH-Required-Wireless-Remotely-Anywhere

159
I have been playing with Apache Guacamole. Only available for Linux but runs happily in a VM.

With Apache Guacamole you can setup RDP, VNC and SSH type of connections. Furthermore you can make any set of these connections available per user (and/or user group) that is created within this software. But if you are already running a different solution for user management in your network, Guacamole has support for (a few of) those as well. You can also add 2FA to it. You can also link it to an RDP gateway. You can allow access only between a configurable set of hours per day. Or a period. Manually terminating open sessions from the session overview is easy. Sessions are logged as well.

After it is setup, the only thing you need to do is to point your (HTML5) browser to the Guacamole server, login and select which RDP, VNC and/or SSH connection made available to you and you'll be managing the selected system from within your browser, using HTTPS. So, no need to open up extra ports on your firewall, while having all the goodness of RDP at your fingertips.

If you run this in your own home network, you hardly need to learn much about it, while it would make using 2 (or more) computers with one screen, mouse and keyboard easy. However, it will act as a very nice step-stone server in a commercial environment. From what I have seen behind the link provided by 40hz (thanks for that, btw), the tools and configuration screens it showed, were very sparse with configuration options for RDP connections.

Guacamole comes with a boatload of options to configure most, if not all, features built into the RDP protocol. It is an open source project, so you can use it for free, even in commercial environments. All these features might not make it the most easy option out there, but it sure is mighty.

You can get a pre-configured Apache Guacamole VM on the Bitnami website to quickly test it out. On-premise or in the Cloud.

160
Teapot's interface feels like a spreadsheet. An old fashion spreadsheet. So I am not sure how well you would like that.

But it is free, tiny, portable and CSV is only one of the formats it supports. According to the included manual it can supports more file formats from old software like Lotus-1-2-3.

The manual:
Code: Text [Select]
  1. Teapot User Guide
  2. Michael Haardt, Jörg Walter
  3. http://www.syntax-k.de/projekte/teapot
  4.  
  5. For ages, spread sheet programs have been closely associated with finan-
  6. cial calculations done by typical end-users. But it has shown that there
  7. is also hacker’s work which can be done with them, like calculate monitor
  8. timings for various resolutions, produce convincing time statistics which
  9. justify the lack of documentation or the need for a budget increase to your
  10. employer. This first part of this user guide explains how the various func-
  11. tions of teapot are used, whereas the second part gives an introduction to
  12. spread sheets and explains the expression evaluator and its functions.
  13.  
  14. Contents
  15. 1 Copyright, Contributors and License 2
  16. 2 Introduction to Spread Sheets 2
  17. 2.1 General Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
  18. 2.2 The First Steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
  19. 2.3 Differences Between User Interfaces . . . . . . . . . . . . . . . . . . . . . . 5
  20. 3 Command Mode 5
  21. 4 The Line Editor 7
  22. 5 Interactive Functions 7
  23. 5.1 Cell Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  24. 5.1.1 Precision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  25. 5.1.2 Exponential / Decimal . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  26. 5.1.3 Adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  27. 5.1.4 Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  28. 5.1.5 Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  29. 5.1.6 Ignore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  30. 5.1.7 Transparent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  31. 5.1.8 Shadow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  32. 5.1.9 Column Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  33. 5.2 Block Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  34. 5.2.1 Copy/Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  35. 5.2.2 Fill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  36. 5.2.3 Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  37. 5.2.4 Insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  38. 5.2.5 Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  39. 5.2.6 Sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  40. 5.2.7 Mirror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
  41. 5.3 Saving and Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
  42. 5.3.1 File names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
  43. 5.3.2 File Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
  44. 5.4 Other Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  45. 5.4.1 Goto Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  46. 5.4.2 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
  47. 5.4.3 Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
  48. 5.4.4 Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
  49. 6 Batch functions 13
  50. 7 Expressions 14
  51. 7.1 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
  52. 7.2 Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
  53. 7.3 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
  54. 7.4 Expression Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
  55. 8 Frequently Asked Questions 19
  56. 8.1 Why is 1.0 unequal 1.0? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
  57. 8.2 How do I hide intermediate results? . . . . . . . . . . . . . . . . . . . . . . 19
  58. 8.3 Why is there no conditional evaluation? . . . . . . . . . . . . . . . . . . . . 19
  59.  
  60. 2 INTRODUCTION TO SPREAD SHEETS
  61. 1 Copyright, Contributors and License
  62. TEAPOT (Table Editor And Planner, Or: Teapot), is copyrighted 1995–2006 by Michael
  63. Haardt, and 2009–2010 by Jörg Walter.
  64.  
  65. The implementation of clocked expressions is modeled after the description of clocked
  66. evaluation in the PhD work of Jörg Wittenberger at the University of Technology in
  67. Dresden, Germany. The trigonometric functions were inspired by Koniorczyk Mátyás.
  68. The context output format was contributed by Marko Schuetz.
  69. The (currently unused) message catalogs were contributed by Guido Müsch, Wim
  70. van Dorst, and Volodymyr M. Lisivka.
  71.  
  72. This program is free software: you can redistribute it and/or modify it under the
  73. terms of the GNU General Public License as published by the Free Software Founda-
  74. tion, either version 3 of the License, or (at your option) any later version.
  75. This program is distributed in the hope that it will be useful, but WITHOUT ANY
  76. WARRANTY; without even the implied warranty of MERCHANTABILITY or FIT-
  77. NESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
  78. details.
  79.  
  80. You should have received a copy of the GNU General Public License along with this
  81. program. If not, see <http://www.gnu.org/licenses/>.
  82.  
  83. 2 Introduction to Spread Sheets
  84.  
  85. 2.1 General Introduction
  86. A spread sheet consists of cells formed by rows and columns. Additionally, in many
  87. spread sheets you have a third dimension, which you can imagine as various sheets
  88. laying on top of each other. The third dimension allows you to hide intermediate re-
  89. sults, show you additional results you do not want to appear in the “official” tables,
  90. keep sheets per time period (like 12 sheets for each month in a year) while allowing
  91. you to make calculations over the entire time interval and much more. Figure 1 shows
  92. the three dimensions:
  93. x
  94. y
  95. z
  96.  
  97. Figure 1: Three-Dimensional Spread Sheet Layout
  98.  
  99. You can think of cells as variables, which value is the value of an associated expres-
  100. sion. The expression may be constant, like 1.23, or it may be a function of other cell
  101. values. The advantage compared to a programmable calculator is that if you change
  102. a number, you directly see all changes in other cells caused by that. Often this allows
  103. you to get a feeling how much you may change basic sizes with still getting satisfying
  104. results without having to solve the problem analytically.
  105.  
  106. 2.2 The First Steps 2 INTRODUCTION TO SPREAD SHEETS
  107. Spread sheets offer many editing functions in order to modify, clear, copy and move
  108. cells or blocks of cells. Besides the usual mathematical functions, there are functions
  109. which work on blocks of cells, like calculating the sum of a block or counting all non-
  110. empty elements. Further there are functions working on character strings, because
  111. most likely you also want text besides numbers. The next section will introduce you to
  112. some of these by examples.
  113.  
  114. teapot is a traditional spread sheet and a typical UNIX program, because it does
  115. just one thing: Calculations. It does not include any graphics functions and never will,
  116. but it allows to export data in many formats, so you can use your favourite graphics
  117. software.
  118.  
  119. 2.2 The First Steps
  120. Now that you should have an idea, it is probably a good time to make your first steps.
  121. This section will show you how to create and save a sheet which contains two numbers
  122. and their sum. Start the program without any arguments 1 :
  123. teapot
  124.  
  125. You see an empty sheet with the cell cursor being at the upper left corner. Further, the
  126. status line tells you that this cell is really empty:
  127. E @(0,0,0)=
  128. The E means that you can edit the sheet. A V would mean that you could only view
  129. its contents. The meaning of @() will be explained soon. You are now in the command
  130. mode of teapot. Press the Enter key to edit this cell. A complete list of command mode
  131. functions will be given later. A prompt will appear below the status line:
  132. Cell contents: 1
  133.  
  134. Now the cell at position 0,0,0 has the integer constant 1. The status line shows you
  135. the cell contents, whereas in the sheet you see its value. Since constants are identical
  136. with their values, both are 1. Now move the cell cursor down one row and edit that
  137. cell, giving it the integer constant 41.
  138.  
  139. Now that you have two numbers, move the cell cursor to cell 0,2,0 and give that cell
  140. the following contents:
  141. Cell contents: @(0,0,0)+@(0,1,0)
  142. If you were confused about the difference between contents and value of a cell, it should
  143. become more clear now: The status line shows the contents, which is the arithmetic
  144. expression to calculate the sum of two cells, whereas in the sheet you see the value
  145. of that expression: 42, which was to be expected. @(x,y,z) is a function which takes
  146. three coordinates and returns the value of the cell at the given position.
  147.  
  148. As you can see, the arithmetic expression is not too readable. If you would move cells
  149. around, it would not even work any more. For these reasons, you can use symbolic
  150. 1 If you are using the graphical version of teapot, please see section 2.3 on page 5.
  151.  
  152. 2.2 The First Steps 2 INTRODUCTION TO SPREAD SHEETS
  153. names instead of coordinates, called labels. When used in an expression, a label is
  154. like a pointer to a cell, its data type is location. Move to cell 0,0,0 and use / (slash) in
  155. command mode to get into the main menu. Depending on your screen size, you may
  156. not see all of it. In this case, move the highlighted block right (or left) to scroll through
  157. it and to see all items. Now change its label attribute: A)ttributes, L)abel:
  158. Cell label: Paper
  159.  
  160. Then go one cell down and change its label to Tapes. After, move again one cell down
  161. and change the expression to:
  162. Cell contents: @(Paper)+@(Tapes)
  163.  
  164. As you see, you can call the function @ with three integer values or with one location
  165. value. Now the expression is more understandable, at least to you. To someone else,
  166. the sheet only contained three numbers, so a little text should be added.
  167.  
  168. To accomplish that, a new column needs to be inserted: B)lock, I)insert, C)olumn,
  169. W)hole column. The last menu item means that you want to insert a whole new column,
  170. not only a partial column. If you move the cursor around, you will see that everything
  171. is still fine, because you used labels. Go to cell 0,0,0 and edit it:
  172. Cell contents: "Paper:"
  173.  
  174. This is how you enter strings. A string is a data type on its own, don’t confuse this
  175. with labels. If you feel like it, leave the quotes and the colon away, and you will see
  176. the difference, because the result will not be a string, but the value of the label Paper,
  177. which is &(1,0,0).
  178.  
  179. Now change the cells below to "Tapes:" and "Result:". This is something that is
  180. understandable to others, too.
  181.  
  182. As the last step, save your work sheet to a file: F)ile, S)ave. The native file format
  183. is XDR, so choose that. Up to now, your sheet does not have a name, so you will be
  184. prompted for one:
  185. New file name: firststep
  186. Unless you see an error message after, your sheet is written to a file.
  187.  
  188. If you have come this far, quit (from the main menu) and you have successfully
  189. completed your first steps on using teapot.
  190.  
  191. Now you know cells, the difference between contents and values, you learned that
  192. labels are a good thing and you can do simple cell modifications as well as saving
  193. your work. This is enough for most applications.
  194.  
  195. If the capabilities described in the next section confuse you, then it is unlikely that
  196. you need them really. Just skip that section and don’t worry about it.
  197. You may wonder what happens if you have circular dependencies, i.e. you have a
  198. cell which evaluates to its own value plus one.
  199.  
  200. Well, the answer is that it depends on the order in which you create this cell. If you
  201. first give it the value 1 and after edit it to contain the expression which refers to
  202. itself plus 1, then you will find that each recalculation, like after editing other cells,
  203. will increase the value. While this may be funny, it is certainly not useful as you can
  204. not reset the cell and you have little control of its development.
  205.  
  206. 2.3 Differences Between User Interfaces 3 COMMAND MODE
  207. What you really want is a base value and an iterative expression along with a way
  208. to control the recalculations. teapot supports this by allowing two expressions per cell.
  209.  
  210. The expressions you have used so far are the ones which evaluate to the base values.
  211. Each time you edit a cell, the whole sheet will be reset, which means that all results
  212. are recalculated using the base values. After, you can clock the sheet, which is why the
  213. iterative part is also called clocked expression.
  214.  
  215. A clock is an atomic operation, which means that all cell results will be recalculated in a
  216. way that the new result will only show after the entire recalculation.
  217.  
  218. An examples will demonstrate how to make use of this feature. The notation x ->
  219. y means that x is the base expression and y is the clocked expression. Don’t let this
  220. confuse you, as both are entered separately: teapot does not have an -> operator, but
  221. it displays the cell contents this way for increased overview.
  222.  
  223. So, give the cell a base expression of 1 and a clocked expression of @(0,0,0)+1 (using
  224. ESC-Enter or Meta-Enter) and you will see:
  225. @(0,0,0)=1 -> @(0,0,0)+1
  226.  
  227. The sheet is currently in reset condition and the result is 1. Now clock it and you will
  228. see how the value increases.
  229.  
  230. After this introductional chapter, you should be familiar with the basic concepts in
  231. spread sheets. The next chapters explain all functions available in detail. You should
  232. read them to get an overview of the possibilities offered by teapot.
  233.  
  234. Finally, we will come back to using teapot by showing some common problems and
  235. their solutions.
  236.  
  237. 2.3 Differences Between User Interfaces
  238. TEAPOT comes in two flavours: A mouse-and-keyboard operated graphical application
  239. and a traditional console-based program. Large parts of this manual were written
  240. when the GUI version didn’t exist, so there may be occasional inconsistencies.
  241.  
  242. Most notably, a few key bindings don’t exist. If something doesn’t work as described
  243. in here, refer to the pull-down menus, where all functionality can be found.
  244.  
  245. In addition to the common keys, the GUI variant has extended mouse and keyboard
  246. bindings that work similarly to other GUI applications. There are not yet documented,
  247. but should “just work” as expected.
  248.  
  249. 3 Command Mode
  250. Right after starting teapot, you are in the command mode. Many functions from the
  251. command mode are also available from menus, but using keys is faster and some
  252. things, like moving the cell cursor, are only available through keys. Table 1 on the
  253. next page lists all available key bindings 2 .
  254.  
  255. . (Period) marks blocks: The first time it marks the beginning of a block, which is
  256. then extended by moving the cell cursor. The next time, it marks the end of the block
  257. which lets you move the cell cursor after without changing the block. The third time,
  258. it removes the block marks again.
  259.  
  260. 2 If you are using the graphical version of teapot, please see section 2.3.
  261.  
  262. 3 COMMAND MODE
  263. Function Key ASCII Key Function
  264. Next Line Ctrl-N Cursor down
  265. Previous Line Ctrl-P Cursor up
  266. Begin Ctrl-A Cursor to column 0
  267. End Ctrl-E Cursor to last column
  268. + Cursor to next layer
  269. - (Dash) Cursor to previous layer
  270. < Cursor to line 0
  271. > Cursor to last line
  272. _ (Underscore) Cursor to layer 0
  273. * Cursor to last layer
  274. Ctrl-X < One page left
  275. Ctrl-X > One page right
  276. F10 / Main menu
  277. F2 Save menu
  278. F3 Load menu
  279. Ctrl-X Ctrl-R Load file
  280. Enter Ctrl-J, Ctrl-M Edit cell contents
  281. “, @, digit, letter Overwrite cell contents
  282. Meta-Enter Esc Ctrl-J, Esc Ctrl-M Edit clocked cell contents
  283. Backspace Ctrl-H Edit cell contents
  284. . (Period) Mark block
  285. Ctrl-L Redraw screen
  286. Ctrl-Y Paste block
  287. Ctrl-R Reset sheet
  288. F9 Ctrl-S Clock sheet
  289. Esc z Save and quit
  290. Ctrl-X Ctrl-C Quit
  291. Next Page Ctrl-V One page down
  292. Previous Page Meta-V One page up
  293. Cancel Ctrl-G, Ctrl-C Abort current action
  294. Table 1: Key Bindings in Command Mode
  295.  
  296. 5 INTERACTIVE FUNCTIONS
  297. Function Key ASCII Key Function
  298. Previous Character Ctrl-B Move cursor left
  299. Next Character Ctrl-F Move cursor right
  300. Begin Ctrl-A Move cursor to column 0
  301. End Ctrl-E Move cursor to last column
  302. Enter Ctrl-J, Ctrl-M Finish editing
  303. Ctrl-L Redraw screen
  304. Ctrl-T Transpose characters
  305. Ctrl-\ Go to matching paren
  306. Cancel Ctrl-G, Ctrl-C Abort editing
  307. Backspace Ctrl-H Delete previous character
  308. Delete Ctrl-?, Ctrl-D Delete current character
  309. Insert Toggle insert mode
  310. Table 2: Key Bindings for the line editor
  311.  
  312. 4 The Line Editor
  313. Many functions in teapot require editing a line of text, e.g. editing cell contents, typing
  314. file names and the line. Similar to the command mode, all things can be reached by
  315. control codes and most by function keys. Table 2 lists all available key bindings 3 .
  316.  
  317. Besides the regular line editor functions, you may use Ctrl-O (Tab in the GUI ver-
  318. sion) to temporarily leave the editor in order to move around in the sheet if you are
  319. editing cell contents. Another Ctrl-O (resp. Tab) brings you back to the line editor.
  320.  
  321. While moving around in the sheet, you can insert the value (v) or position (p) at the
  322. cursor position in the edited cell. Clicking on a cell while editing has the same effect
  323. as moving to that cell and pressing (p).
  324.  
  325. Aborting line editing means that you will get right back to command mode, whatever
  326. you started doing will have no effect.
  327.  
  328. 5 Interactive Functions
  329. Most actions are available through the menu. Most of these will be applied to all cells
  330. within a block if a block of cells is marked.
  331.  
  332. 5.1 Cell Attributes
  333. Cells can have several attributes:
  334. • A cell label, which is useful because it avoids to directly address cells by their
  335. position. A cell label must be different from function names.
  336. • The cell adjustment, which determines if the cell value is printed left adjusted,
  337. right adjusted or centered.
  338.  
  339. These only apply to the console version. The GUI version has input fields that work
  340. like all other input fields.
  341.  
  342. 5.1 Cell Attributes 5 INTERACTIVE FUNCTIONS
  343. • The precision for the output of floating point values. The default is 2 digits after
  344. the dot.
  345. • If floating point numbers should be printed in scientific notation (0.123e1) or as
  346. decimal number (1.23). It only affects the output, if the cell value is a floating
  347. point number.
  348. • If the cell is shadowed by its left neighbor. This means that the left neighbor
  349. cell additionally uses the room of the shadowed cell.
  350. • If the cell is locked which prevents to accidentally edit or clear it. Note that
  351. block operations override this attribute, because when you deal with blocks, you
  352. usually know what you are doing.
  353. • If special characters for e.g. roff and L
  354. A T E X should be quoted (default) or not. Not
  355. quoting them allows special effects (if you know roff or L
  356. A T E X), but is of course not portable.
  357.  
  358. 5.1.1 Precision
  359. The precision only changes what is printed, teapot always uses the maximum precision
  360. for calculations. It also only affects the output if the cell value is a floating point
  361. number. Entering an empty precision means to set it to the default value.
  362.  
  363. 5.1.2 Exponential / Decimal
  364. Forces exponential notation for numbers in a cell. Decimal mode will prefer plain
  365. decimal numbers unless the result is very big or very small.
  366.  
  367. 5.1.3 Adjustment
  368. Cells contents can be aligned to the left, right or centered. By default, text is left
  369. adjusted and numbers are right adjusted.
  370.  
  371. 5.1.4 Label
  372. This function lets you edit the cell label of the current cell. Further it changes all
  373. occurrences of it in the cell contents to the new value, unless you erased the cell label.
  374. If a block has been marked by the time you edit the cell label, all occurrences of the
  375. label in contents of cells in that block will be changed.
  376.  
  377. 5.1.5 Lock
  378. You can lock cells to protect them from accidental editing. Note that this protects
  379. you from modifying single cells. If you modify a block of cells which contains locked
  380. cells, those will be modified as well. This has been done because when using block
  381. commands, you usually know what you are doing.
  382.  
  383. 5.2 Block Functions 5 INTERACTIVE FUNCTIONS
  384. 5.1.6 Ignore
  385. Ignored cells will be completely ignored. They appear as empty cells on screen and
  386. during calculations. This is useful for temporarily disabling parts of your calculation,
  387. as the former content reappears when the ignore is removed again.
  388.  
  389. 5.1.7 Transparent
  390. Usually, values are quoted as needed so that you get the exact same output as on
  391. screen. Transparent cells will be exported as-is into display-oriented file formats (L
  392. A T E X, etc.) so that you can embed commands for subsequent processing in cell
  393. values.
  394.  
  395. 5.1.8 Shadow
  396. Shadowed cells are effectively nonexistent. Instead, their left neighbor cell extends
  397. into the shadowed cell, so that longer text can be displayed. You may think of shadow-
  398. ing as a way to get multi-column cells.
  399.  
  400. 5.1.9 Column Width
  401. The column width only affects the screen display, not the formatting of the final output
  402. (except formatted text files). It is intended to let you make better usage of the screen
  403. for more overview. If the width is too small to display the cell value, a placeholder will
  404. be displayed.
  405.  
  406. 5.2 Block Functions
  407. 5.2.1 Copy/Move
  408. To copy a block of cells, mark it, then move the cell cursor to where the upper left
  409. corner of the copy should be and issue the copy command. Moving works similar, just
  410. use the move command. Of course you can mark three-dimensional blocks and copy
  411. them anywhere in the three-dimensional sheet, but doing so requires a good three-
  412. dimensional imagination to get what you want.
  413.  
  414. 5.2.2 Fill
  415. To fill a block of cells, first mark a the block it should be filled with. This may be just
  416. one cell! Then move the cell cursor to where the upper left corner of the block to be
  417. filled should be and issue the fill command. You will be prompted for how often the
  418. marked block should be repeated in each dimension. For example, you may to repeat
  419. a cell 9 times below. Mark it, then move down one row. Issue the fill command and
  420. answer 1 to the number of column repetitions, 9 to rows and 1 to layers.
  421.  
  422. 5.2.3 Clear
  423. Clearing means to delete the cell contents and set all attributes to the default value. If
  424. you want to preserve the attributes, just edit the contents of a cell and delete them.
  425.  
  426. 5.2 Block Functions 5 INTERACTIVE FUNCTIONS
  427. 5.2.4 Insert
  428. Since work sheets can be three-dimensional, you can insert cells in all three dimen-
  429. sions, too. The inserted cells will be empty and their attributes have the default values.
  430. Cells will always be moved away from the front upper left corner to make room for the
  431. inserted cells. If no block is marked, you will be asked if you really only want to insert
  432. a cell of if you want to insert a whole row, line or sheet.
  433.  
  434. 5.2.5 Delete
  435. Deleting works contrary to inserting. The deleted cells will be filled by moving neigh-
  436. bour cells to their positions. You will be prompted for the direction from where those
  437. cells will be taken. Deleting an entire column column-wise is done by marking the
  438. column, use the delete command and chose X direction.
  439.  
  440. 5.2.6 Sort
  441. Marked blocks of cells can be sorted after one or multiple keys, either column-wise,
  442. row-wise or depth-wise. Sorting a two dimensional block row-wise will sort lines, but
  443. if a three dimensional block is sorted row-wise, then horizontal layers will be sorted.
  444. The sort key is specified as vector which is orthogonal to the sorted elements, either
  445. in ascending or descending order. The following example illustrates the sort function.
  446.  
  447. The upper left part of the screen should look like this:
  448. 0 0 1
  449. 0 1 one
  450. 1 2 two
  451. 2 3 three
  452. 3 4 four
  453.  
  454. The box shows you which block to mark. Now this block should be sorted row-wise,
  455. with the sort key being the numbers in descending order, i.e. we want the lines being
  456. numbered 4,3,2,1. Go to the block menu, then select sort. Use R)ow, because that is
  457. how we want to sort this block. The X position of the sort key vector is 0, because
  458. the column 0 contains the numbers. The Z position is 0, too, because those numbers
  459. are on sheet 0. Now chose D)escending as direction. At this point, you could add
  460. a secondary key or decide to sort the block by the keys entered so far. Use S)ort
  461. region to sort it.
  462.  
  463. That’s it, the screen should look like this now:
  464. 0 0 1
  465. 0 4 four
  466. 1 3 three
  467. 2 2 two
  468. 3 1 one
  469.  
  470. 5.2.7 Mirror
  471. Mirroring a marked block of cells can be done in three directions: Left/right, up-
  472. side/down and front/back.
  473.  
  474. 5.3 Saving and Loading 5 INTERACTIVE FUNCTIONS
  475. 5.3 Saving and Loading
  476. 5.3.1 File names
  477. Usually, you want to overwrite the loaded file. For this reason, the loaded file name is
  478. remembered. If the sheet doesn’t have a file name, like after starting an empty sheet,
  479. you will be asked for a name when saving.
  480.  
  481. Occasionally, you may want to rename a sheet, like before making critical changes
  482. or when you load an existing sheet to have a start for making a new one. The Save As
  483. function allows you to save the file under a new name.
  484.  
  485. 5.3.2 File Formats
  486. XDR (.tp) XDR (eXternal Data Representation) is a standard invented by Sun Mi-
  487. crosystems which defines a canonical way of storing/transporting data on external me-
  488. dia. Its advantage is that it is widely available and that it defines a portable floating
  489. point number format.
  490.  
  491. The native teapot file format uses XDR so it is portable across different machine
  492. architectures and operating systems. The advantage of this over the portable ASCII
  493. format is that due to the (usually) missing conversion calculations any floating point
  494. constants will be saved/loaded exactly without conversion errors.
  495.  
  496. ASCII (.tpa) The ASCII file format allows easy generation/modification of saved sheets
  497. by shell scripts. Due to binary/ASCII conversion, there may be conversion errors in
  498. floating point constants. The default extension is .tpa.
  499.  
  500. CSV (.csv) CSV (comma seperated value) files only contain the data, not the expres-
  501. sions calculating it. Many spread sheets can generate this file format and many graph-
  502. ics programs like gnuplot(1) can read it. The field separator usually is a tab or comma,
  503. strings may be enclosed in double quotes and decimal numbers have a dot to mark
  504. the fractional part.
  505.  
  506. One popular variation uses semicolons for separating fields and a decimal comma
  507. instead of a decimal point, which teapot tries to autodetect.
  508.  
  509. On load, strings without quotes and with a 0x prefix followed by hexadecimal digits
  510. will be converted to integers. When loading CSV files, the sheet will not be cleared and
  511. the data will be load relative to the current cursor position.
  512.  
  513. SC SpreadsheetCalculator (.sc) teapot can load simple SC sheets to convert them
  514. to teapot’s native format. While loading, teapot converts all references to absolute cell
  515. positions to labels. This allows to insert and delete in such sheets without screwing
  516. the whole sheet up. teapot can not save sheets in SC format, because SC lacks many
  517. features. For now, only the most basic SC features are supported.
  518.  
  519. Lotus 1-2-3 (.wk1) teapot can load simple WK1 sheets to convert them to teapot’s
  520. native format. By default, 1-2-3 cell references are relative, so don’t be surprised by a
  521. big amount of relative references in the resulting teapot sheet. For now, only the most
  522. basic 1-2-3 features are supported.
  523.  
  524. 5.4 Other Functions 5 INTERACTIVE FUNCTIONS
  525. Formatted ASCII (.txt) The generated formatted ASCII files contain about what you
  526. see on the screen. If your sheet has more than one layer, then the various layers will
  527. be saved separated by form feeds.
  528.  
  529. Troff tbl (.tbl) teapot can generate tbl(1) table bodies in single files which are supposed
  530. to be used like this:
  531. .TS
  532. options;
  533. .so filename
  534. .TE
  535.  
  536. You will have to use soelim(1) to eliminate the .so requests before the tbl run. The
  537. options; are optional. If you use GNU roff, you will need to eliminate .lf requests,
  538. because this GNU roff extension confuses GNU tbl:
  539. soelim file | grep -v ’^\.lf’
  540.  
  541. Alternatively, you can generate a stand-alone document, which needs no further op-
  542. erations to format and print. Note: If no block is marked, the whole sheet will be
  543. saved.
  544.  
  545. L A T E X (.latex)
  546. If you generate L A T E X2 ε tables in single files, you include them in documents
  547. using the \include command. Alternatively, you can generate a stand-alone document,
  548. which needs no further operations to format and print. Note: If no block is marked,
  549. the whole sheet will be saved.
  550.  
  551. ConT E Xt (.tex) Analogous to L A T E X output, this generates input suitable to the
  552. ConT E Xt macro package.
  553.  
  554. HTML (.html) You can generate html table bodies in single files which could be used
  555. in combination with server-side includes. This feature differs between the various
  556. servers, so refer to the manual for your web server for details, please.
  557.  
  558. Alternatively, you can generate a stand-alone document. Note: If no block is marked,
  559. the whole sheet will be saved.
  560.  
  561. 5.4 Other Functions
  562. 5.4.1 Goto Location
  563. Sometimes, you directly want to go to a specific position, either to change its contents
  564. to see which cell a location expression refers to. This function lets you enter an expres-
  565. sion, which must evaluate to a value of the type location. If so, the cursor is positioned
  566. to that location. For example, you could enter &(10,2) to go to cell 10,2 of the current
  567. layer or you could enter the name of a label you want to go to. Relative movements are
  568. no problem, either.
  569.  
  570. 5.4.2 Shell
  571. Start a sub shell. Exiting from that sub shell will bring you back into teapot. This
  572. function does not exist in the GUI version.
  573.  
  574. 5.4.3 Version
  575. teapot will display its version number and copyright statement.
  576.  
  577. 5.4.4 Help
  578. If teapot was built with the integrated help viewer, you can access this manual from
  579. within teapot itself.
  580.  
  581. 6 BATCH FUNCTIONS
  582. Besides interactive facilities, teapot has a batch mode. Using this batch mode, shell
  583. scripts can generate output from teapot sheets. This is handy if you use make(1) to
  584. generate a bigger document containing tables, because you don’t have to generate a tbl
  585. or L A T E X file each time you modified a sheet: make will do so.
  586.  
  587. In batch mode, teapot reads batch commands from standard input. The following
  588. commands are available:
  589. goto location Go to the specified location.
  590. from location Start marking a block.
  591. to location End marking a block.
  592. sort-x d|a y z [ d|a y z ... ]
  593. sort-y d|a x z [ d|a x z ... ]
  594. sort-z d|a x y [ d|a x y ... ] Sorts the marked block as described in section 5.2.6 on
  595. page 10, column-wise, row-wise or depth-wise, respectively. "d" or "a" specify the
  596. sort order to be descending or ascending. x, y and z specify the position of the sort
  597. key relative to the first cell of the marked block. Up to eight sort keys can be
  598. specified.
  599.  
  600. This example reproduces the result from section 5.2.6:
  601. echo "
  602. from &(1,1,0)
  603. to &(2,4,0)
  604. sort-y d 0 0
  605. save-csv result_num.txt
  606. " | teapot -b doc/unsorted
  607. save-tbl file
  608. save-csv file
  609. save-latex file
  610. save-context file
  611. save-html file Save the marked block in the specified format as file.
  612. load-csv file Load file in the specified format to the last goto location. This is the
  613. same functionality as the interactive load described in subsection 5.12.4.
  614.  
  615. 7 Expressions
  616. Cells consist of a base (reset) expression, a clocked expression, and a current value. If
  617. the sheet is currently in the reset state (the default), all cells display their base value
  618. as current value.
  619.  
  620. When the sheet is clocked (see Table 1), the clocked expression is evaluated, using the
  621. current value of referenced cells. The new current value is the result of that evaluation.
  622.  
  623. 7.1 Data Types
  624. In teapot, each value has an associated data type. The following data types exist:
  625. Empty Empty cells have 0, 0.0 or “” as value, depending on context.
  626. String A string is a sequence of characters enclosed by double quotes: "This is a
  627. string".
  628.  
  629. A double quote can be part of the string, if it is quoted using a backslash: “\””.
  630. If you want the backslash to appear in the output instead of quoting the next
  631. character, use it to quote itself: “\\”.
  632.  
  633. Floating Point Floating point values are inexact, their precision and range depends on
  634. the implementation of the C type double on your system. An example is: 42.0
  635. Integer Integer values are exact, their range depends on the C type long on your sys-
  636. tem. An example is: 42
  637.  
  638. Location Cell labels and the &() function have this type, but there are no location
  639. constant literals.
  640.  
  641. Error Syntactical or semantical (type mismatch) errors cause this value, as well as
  642. division by 0 and the function error(). An error always has an assigned error
  643. message.
  644.  
  645. Functions and operators, when applied to a value of the type error,
  646. evaluate to just that value. That way, the first error which was found deep inside
  647. a complicated expression will be shown.
  648.  
  649. 7.2 Operators
  650. Unlike other spread sheets, the operators in teapot check the type of the values they
  651. are applied to, which means the try to add a string to a floating point number will result
  652. in an type error.
  653.  
  654. The following operators are available, listed in ascending precedence:
  655. x<y evaluates to 1 if x is less than y. If x or y are empty, they are considered to be 0 if
  656. the other is an integer number, 0.0 if it is a floating point number and the empty
  657. string if it is a string.
  658.  
  659. 7.3 Functions
  660. x<=y evaluates to 1 if x is less than or equal to y.
  661. x>=y evaluates to 1 if x is greater than or equal to y.
  662. x>y evaluates to 1 if x is greater than y.
  663. x==y evaluates to 1 if x is equal to y.
  664. x=y evaluates to 1 if the floating point value x is almost equal to the floating point
  665. value y. Almost equal means, the numbers are at most neighbors.
  666. x!=y evaluates to 1 if x is not equal to y.
  667. x+y evaluates to the sum if x and y are numbers. If x and y are strings, the result is
  668. the concatenated string. There is no dedicated logical OR operation, so use + for
  669. that.
  670. x-y evaluates to the difference if x and y are numbers.
  671. x * y evaluates to the product if x and y are numbers. There is no dedicated logical AND
  672. operation, so use * for that.
  673. x/y evaluates to the quotient if x and y are numbers.
  674. x%y evaluates to the remainder of the division if x and y are numbers.
  675. x^y evaluates to x to the power of y.
  676. -x evaluates to -x if x is a number. If x is empty, the result will be empty, too.
  677. (expression) evaluates to the expression.
  678. function(argument,...) evaluates to the value of the function applied to the values
  679. resulting from evaluating the argument expressions.
  680.  
  681. 7.3 Functions
  682. This section documents all available functions in alphabetical order. The functions are
  683. given in a C-like notation, so use @(0,0,0) instead of @(integer 0, integer 0,
  684. integer 0). If no type is given for the result of a function, it means the result type
  685. depends on the arguments. Brackets mark optional arguments.
  686. @([int x][,[int y][,[int z]]])
  687. @(location l) returns the value of the cell at position x, y, z. If any of x, y or z is
  688. omitted, the coordinate of the cell is used.
  689. location &([int x][, [int y][, [int z]]]) returns a pointer to the cell at location x, y, z. If z
  690. is omitted, the z position of the current cell is used. If y is missing as well, the y
  691. position (row) of the cell is used.
  692. string $(string env) evaluates to the contents of the specified environment variable. If
  693. the variable does not exist, then an empty string will be returned.
  694. float abs(float x)
  695. int abs(int x) evaluates to the absolute value of x.
  696. float acos(float|int x) evaluates to the arc cosine of x, where x is given in radians.
  697. float arcosh(float|int x) evaluates to the arc hyperbolic cosine of x, where x is given
  698. in radians.
  699. float arsinh(float|int x) evaluates to the arc hyperbolic sine of x, where x is given in
  700. radians.
  701. float artanh(float|int x) evaluates to the arc hyperbolic tangent of x, where x is given
  702. in radians.
  703. float asin(float|int x) evaluates to the arc sine of x, where x is given in radians.
  704. float atan(float|int x) evaluates to the arc tangent of x, where x is given in radians.
  705. clock(integer condition,[location[,location]) conditionally clocks the specified cell if
  706. the condition is not 0. If two locations are given, all cells in that range will be
  707. clocked. The return value of clock is empty.
  708. float cos(float|int x) evaluates to the cosine of x, where x is given in radians.
  709. float cosh(float|int x) evaluates to the hyperbolic cosine of x, where x is given in ra-
  710. dians.
  711. float deg2rad(float|int x) evaluates to the degrees that are equivalent to x radians.
  712. float e() evaluates to the Euler constant e.
  713. error error(string message) evaluates to an error with the specified message.
  714. eval(location) evaluates to the value of the expression in the cell at the given location,
  715. but evaluated in the context of the cell using eval(). This function may not be used
  716. nested any deeper than 32 times.
  717. float float(string s) converts the given string into a floating point number.
  718. float frac(float x) evaluates to the fractional part of x.
  719. int int(float x[,integer neg, integer pos]) converts x to an integer value by cutting off
  720. the fractional part. If given, the value of neg and pos determines how negative
  721. and non-negative numbers will be converted:
  722. neg/pos Result
  723. < -1 next smaller integer value
  724. -1 round downward
  725. 0 cut fractional part off (default)
  726. 1 round upward
  727. > 1 next larger integer value
  728. int int(string s) converts s to an integer number.
  729. string len(string s) evaluates to the length of s.
  730. float log(float|int x[,float|int y) evaluates to the logarithm of x. If y is specified, the
  731. result will be the natural logarithm, otherwise it will be the logarithm to the base
  732. of y.
  733. location max(location l1, location l2) evaluates to the maximum in the same way
  734. min does for the minimum.
  735. location min(location l1, location l2) evaluates to the location of the minimum of all
  736. values in the block marked by the corners pointed to by l1 and l2. Note that the
  737. empty cell is equal to 0, 0.0 and "", so if the first minimum is an empty cell, the
  738. result will be a pointer to this cell, too. If you are not interested in the location of
  739. the minimum but the value itself, use @(min(l1, l2)).
  740. int n(location l1, location l2) evaluates to the number of non-empty cells in the block
  741. marked by the corners pointed to by l1 and l2.
  742. poly(float|integer x, float|integer cn[, ...]) evaluates the polynome c n ·x n +...+c 0 ·x 0 .
  743. float rad2deg(float|int x) evaluates to the radians that are equivalent to x degrees.
  744. float rnd() evaluates to a pseudo-random number between 0.0 and 1.0.
  745. float sin(float|int x) evaluates to the sine of x, where x is given in radians.
  746. float sinh(float|int x) evaluates to the hyperbolic sine of x, where x is given in radians.
  747. string strftime(string f [, integer t]) evaluates to the time t formatted according to the
  748. format specified in f. Times in t are counted in seconds since epoch (1970-1-1
  749. 0:00). If t is empty or 0, the actual time is used. For the format specifications con-
  750. sult the man page of your c library, strftime (3). Example: @(now)=int(strftime("%s"))
  751. sets the field with label now to the actual time.
  752. string string(location l)
  753. string string(integer x)
  754. string string(float x[, [integer precision][, integer scientific]]) evaluates to a string con-
  755. taining the current value of the given cell at location l, or to the numeric value x
  756. with the given precision. The scientific flag determines if decimal (0) or scientific
  757. (unequal 0) representation is used.
  758. int strptime(string f, string datetime) evaluates to the seconds since epoch (1970-1-1
  759. 0:00) of the datetime string, parsed according to the format specified in f. For the
  760. format specifications consult the man page of your c library, strptime (3).
  761. string substr(string s,integer x,integer y) evaluates to the substring of s between x and
  762. y, which start at 0.
  763.  
  764. 7.4 Expression Grammar
  765. sum(location l1, location l2) evaluates to the sum of all values in the block marked
  766. by the corners pointed to by l1 and l2.
  767. float tan(float|int x) evaluates to the tangent of x, where x is given in radians.
  768. float tanh(float|int x) evaluates to the hyperbolic tangent of x, where x is given in
  769. radians.
  770. int x([location l])
  771. int y([location l])
  772. int z([location l]) evaluate to the x, y and z position of the given location, of the cur-
  773. rently updated cell if none is given. These functions are usually used in combination
  774. with the @ function for relative relations to other cells.
  775. digit::= 0 | .. | 9
  776. hex_digit::= 0 | .. | 9 | a | .. | f
  777. octal_digit::= 0 | .. | 7
  778. decimal_integer::= digit { digit }
  779. hex_integer::= 0x hex_digit { hexdigit }
  780. octal_integer::= 0 octal_digit { octdigit }
  781. integer::= decimal_integer | hex_integer | octal_integer
  782. float::= digit { digit } [ . ] { digit } [ e | E [ + | - ] digit { digit } ]
  783. quoted_character::= \ any_character
  784. character::= any_character | quoted_character
  785. string::= " { character } "
  786. identifier_character::= _ | @ | & | . | $ | alpha_character
  787. identifier::= identifier_character { identifier_character | digit }
  788. function::= identifier ( [ term ] { , [ term ] } )
  789. label::= identifier
  790. parenterm::= ( term )
  791. negterm::= - primary
  792. primary::= function | label | parenterm | negterm
  793. powterm::= primary { ˆ primary }
  794. mathterm::= powterm { / | * | % powterm }
  795. factor::= mathterm { + | - mathterm }
  796. term::= factor {< | <= | >= | > | == | != factor }
  797.  
  798. 8 Frequently Asked Questions
  799. 8.1 Why is 1.0 unequal 1.0?
  800. If your machine uses binary floating point arithmetic, and chances are that it does, you
  801. may eventually find yourself in the following situation:
  802. 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1
  803. You expect to see 1.0 as result, and indeed that is what you get. Now you compare this
  804. result to the constant 1.0, but surprisingly for many users, the result is 0. Apparently,
  805. 1.0 is unequal 1.0 for teapot.
  806.  
  807. This is not a bug in teapot, in fact it is not a bug at all. The problem is, that 0.1
  808. (1.0/10.0) does not have an exact representation in binary floating point arithmetic,
  809. similar to how 1.0/3.0 does not have an exact representation in decimal arithmetic (or
  810. binary, for that matter).
  811.  
  812. As such, a value very close to 0.1 is used, but when displaying it, it will be rounded to
  813. 0.1. The result is obvious, adding this number which is a little different from 0.1 ten
  814. times leads to a result very close to but not quite 1.0. Since it is so close, displaying it
  815. rounded to only a few digits precision shows 1.0.
  816.  
  817. To solve the comparison problem, teapot has the operator = (in contrast to the op-
  818. erator ==), which compares two floating point values apart from the last significant
  819. bit. Use this operator to compare the two values from above and the result will be 1,
  820. meaning they are about equal. Don’t assume that a number which can be expressed
  821. with a finite number of decimal digits will be represented exactly in binary floating
  822. point arithmetic.
  823.  
  824. 8.2 How do I hide intermediate results?
  825. If you used flat, two-dimensional spread sheets before, you are probably used to hidden
  826. cells which contain intermediate results, global constants, scratch areas and the like.
  827. teapot has no way to hide cells, but you have three dimensions. Just use one or more
  828. layers for such cells and give each cell a label in order to reference and find it easily.
  829.  
  830. 8.3 Why is there no conditional evaluation?
  831. There is no special operator or function for conditional evaluation. I could add one
  832. easily, but then next someone would ask for loops and someone else for user-defined
  833. functions, variables and so on. If you need a programming language, you know where
  834. to find it.
  835.  
  836. But don’t worry. The answer is, that conditional evaluation comes for free with
  837. teapot’s orthogonal cell addressing. As an example, depending on the cell labelled X
  838. being negative or not, you want the result to be the string "BAD or "GOOD".
  839.  
  840. This is the solution:
  841. eval(&((@(X)>=0)+x(BAD),y(BAD),z(BAD)))
  842.  
  843. The cell labelled BAD contains the string "BAD", its right neighbor contains the string
  844. "GOOD". If you have nested conditions, you could weight them with 1, 2, 4 and so
  845. on to address a bigger range of cells. Alternatively, you could make use of all three
  846. dimensions for nested conditions.

161
Directory Opus is capable of doing practically anything you ask in your requirements. But is far from free. Or open source.

And why does a file manager have to keep track of indexed files and their content? Database software is designed to do just this. A file manager would become unwieldy quick if it would have to keep track of indexed content. The only thing a file manger needs is an easy way to access the data stored in the index. Tools like Everything are way better/faster at finding files with specific content.

Besides the unwieldiness, how often does this index needs to be updated? On a system where not much happens regarding files, the need of creating/updating a file content index isn't high. On a system where lots of file changes occur, an index would obsolete very quickly. Indexing normally puts quite a strain on your drive. Even SSD's suffer in performance when creating/updating a file content index.

A file manager really isn't the optimum tool to manage indexes.

Directory Opus and Total Commander allow for scripting, so you can create your own options/buttons to have access to indexed content. With the other tools in the set you consider, I'm not sure if scripting is even an option.

Total Commander is also not free or open source. Multi Commander comes quite close in features regarding Directory Opus/Total Commander and is free. Last time I used it, the quirks encountered were enough to make me stop using it. So, it might not be such a great option for you too. Still, its feature-set is really impressive. And it has been at least a year since I tried it last.

** edit **
There used to be a quite usable forum available on that website, but the links are currently mangled. The forum links point to a subdomain that doesn't appear to exist anymore. Manually replacing the subdomain in link: forum.multicommander.com/forum   to   www.multicommander.com/forum    will show the content of the forum, but in a very messy way.

** edit 2 **
Diffing file content is also out of the scope from any file manager. While it may sound logical that a file manager should be able to do diff file content, diffing file content is actually very difficult to do. Sure, very basic text files are not too big of a deal. Although when text files become larger and have the same content, but in different order, it trips even the best Diffing software. Diffing other file types, that usually entails the diff software to convert that file format to a simple text format, before the actual diff occurs. Conversions often end up in content that is in the incorrect order, tripping the actual diff up.

Haven't seen much improvement with this over the years in software like Beyond Compare, ExamDiff Pro or WinMerge (free). And this is dedicated software, made by knowledgeable people for their living. The maintainer(s) from file managers don't have that expertise, so whatever diff capability they mange to add to their file manager, it will be a pretty poor implementation. And you'll likely just go back to the tool you always have been using to do diffs. Resulting in unnecessary cruft inside the file manager.

162
https://www.syntax-k.de/projekte/teapot/

Seems to be able to do what you ask. But is from 2012, so rather old.

163
PopUp Wisdom / Re: New books wanted!
« on: January 25, 2021, 09:25 PM »
I have already published an ebook on Amazon.com, and I would like to add a few modest revisions to it.

Likely the copy from Amazon you plan to download includes DRM. You'll have to get rid of that first, before you can edit it again.

Perhaps a diff program can help you find which it the most correct(ed) version. Normally that is tool programmers use to find out changes in code, when those changes occurred and by who (if more than one person works on the same code). Diff tools come in different "shapes and sizes", but there are a few good, open source ones. Code is usually done in some form of text file and a Word document is far removed from being a text format. Not all diff tools work so well with the proprietary format that Word documents use.

Version control functionality in Word...it ain't good. But better than nothing, I'll guess.

I would suggest to use better version control tools. Those can either run on your own computer or you can use a Cloud solution for that. Solutions like GitHub/GitLab (in combination with Git) are not intended to be used for tracking changes in Word documents, but it would not be impossible to use those for that purpose. You could also consider to convert your best Word document into MarkDown (or AsciiDoc). You will need to get your head around the syntax, but that isn't too difficult. Once converted, you have your book in a text-based format. There are many free MarkDown editors that make working with these documents very easy. And because of the text-based format, diff tools and version control software work way, way better for tracking changes you made (and when/why those changes were made).

It is also very easy to revert to a previous version of your document, in case you would need that (for whatever reason).

Besides, MarkDown (or AsciiDoc) documents are very easy to convert to Word (or .PDF or .HTML or .EPUB or .Mobi) documents. So, however the publisher likes to receive revised versions, you can accommodate them.

This might sound like a really big change, but you'll soon find that in the period you are getting to grips with this, you'll be wondering why you didn't do this earlier. And guess what? Most, if not all, tools can be used for free. Text based formats also have no expire date, like Word does. MarkDown (or AsciiDoc) documents you make now, will be just as readable now as they will be 20 years from now.

Markown (or AsciiDoc) documents also have built-in TOC's, different types of headers, spacers, separation lines, quote sections, you can link to/from information inside your document. Or other MarkDown/AsciiDoc documents that reside on your computer or in your favorite Cloud solution. Or other types of documents (local and online). Initially, MarkDown/AsciiDoc documents may not look like much, but once you get the hang of them, they are just as capable as Word.

Word count is also no problem in MarkDown/AsciiDoc, just as grammar and spelling-checks. In case you were wondering.

164
General Software Discussion / Re: Batch Word Text Replacer
« on: January 25, 2021, 08:43 PM »
So I would like a tool tested and running with word 2010.

Just a note: Office 2010 is not supported anymore by Microsoft, in the same way that Windows 7 isn't supported anymore. It is Office 2013 or bust (in the eyes of Microsoft). For the next 2 years still, after that no more support for Office 2013 either. 

165
Tracert is a command-line tool that is built into Windows. Although it is useful for the task, there are many ways to improve on it. If you want to spend money and have a GUI version, which does a lot more than just show you just the dry numbers that 'tracert' does, use a tool called: PingPlotter. I found the output from that tool (when trialing it) to be very helpful and much better to understand. But thought the price tag didn't match the features.

However, then there was:  TraceRoute NG (from SolarWinds). This is also a command-line tool, hasn't got all the extra features of PingPlotter, but it does have a similar output overview as PingPlotter has and it is free. On the SolarWinds website is a short but very descriptive video that shows you what it does and how the output looks.

Both PingPlotter and TraceRoute NG repeat their tests and generate a log from these results. Send this type of logging to the helpdesk of your ISP and you will get very different responses from them, as they have a log with data-points to take action on.

Regarding AdGuard:
Better buy a RaspBerry Pi (about 35 USD) and install Pi-Hole (free) on it. Then adjust the DNS settings from all your networking devices to use the Raspberry Pi as their DNS server instead of the DNS server you currently use (usually the DNS server(s) from your ISP). Now you will see that most, if not all ads are gone from your computer(s), tablets, phones, smart TV(s) etc.

If that is too much of a stretch, there is software (for Windows) that does the same. Technitium DNS is one example. Although this type of software makes this part of DNS management pretty simple, it isn't hard to imagine that it isn't everyone's cup of tea.

An alternative of sorts exists for FireFox and Chrome/Chromium-based browsers. It is called: uMatrix.  This extension will not execute any background script (from other websites than the one you are visiting), not load images or cookies and lots more things. While that all sounds great, it does affect the look and functionality of websites. With some it only a little, with others severely. But it does get rid of ads.

However, when it is loading a page the extension does keep track of what it loads and doesn't load. At any time you can access a matrix where you can easily see what has been loaded (green matrix slot) and what isn't loaded (red matrix slot). You can enable red matrix slots one by one or all at once. You can store your specific setup, so every time you visit this website again, it will use those settings again.

But as many people visit many different websites, setting up uMatrix for each site is getting old very quickly. And if a website makes a change 'under the hood', you will need to repeat setting up uMatrix again. Which makes it only an alternative of sorts. However, if you can stomach working with uMatrix, you will see dramatic speed increase in loading your favorite websites. And ads free too.

Be warned though. if uMatrix is enabled and you visit Twitter you will see a practically empty page in your browser. FaceBook does the same. There will be more examples of this. Personally, I don't care one iota about FaceBook or Twitter, so it isn't a problem for me. Just mentioning it.

Another disadvantage is that you need to repeat this for every browser you use, on any device you use. So there is the possibility that uMatrix becomes more of a headache than it is worth.

166
Looks like your network only supports older WiFi standards. As it is quite over the place. Your upload speed is higher than your download speed, which is usually a clear indicator that the problem is located in your own network at home.

Next to that, the contract between you and your ISP is always that they make a best effort to provide the agreed upon connection to your modem and their own network. Whatever you after that in your own network is really your problem. And if you go outside of their network onto the internet, whatever you get is whatever you get. Because that is out of their control, so not their problem.

Do you use a laptop? If it has a network connector you should be able connect it directly onto your modem. Then do the speed test again. Now you should see the most "pure" speed your connection has to offer.

Are there WiFi extenders (also known as repeaters) in your network? If so, in the best of cases you lose 50% of your total bandwidth. But more often than not it is more. 

167
Here is an example screenshot of my desktop (1920x1080p resolution) accessing my local server without a monitor (default resolution becomes 1024x768). All on the same monitor. It is a better experience when both systems make use of the same resolution, whatever that may be. But if that is not the case, AnyDesk will either scale or shrink, depending on how you will setup the connection between laptops.

AnyDesk.example.kalos.jpg

168
As long as both laptops can connect to the internet, whether you use a wire to connect one or both laptops or just WiFi, AnyDesk will establish the connection between your laptops. There is very little, if any, lags between local computers. After AnyDesk confirms both local computers, no more traffic goes through the internet anymore, everything is directed through the local network.

If WiFi at your home is crap, you are likely using a channel that is occupied by other WiFi networks in your neighborhood. Better use a lesser used channel. The best channels to use are channels 1, 6 and 11. In your home WiFi network are, I hope, no WiFi repeaters? Or WiFi extenders (same thing as a repeater, just a different name)? Because those introduce all kinds of issues, like stealing 50% of your available bandwidth or more, extra latency etc. You call it lag, but the proper name for what you experience in your network is latency.

So, if you have the option to connect a network cable to one or both laptops, I would suggest you do that. That eliminates most, if not all, of your latency problems. Network Cables, also known as 'UTP' cable or 'Cat 5e' cable (or 'Cat 6'), may never be longer than 100 meters. But that length gives you more than enough opportunity to hide the cable in nooks and crannies of your house, out of sight of your partner/visitors.

Or do what I did, used an opening in the wall of an AC unit (split) to make the cable "travel" around the house and entered the cable back into the house using the hole in the wall from a different AC unit (split). I currently occupy a house that has 9 AC units installed (a 10 meter by 45 meter house with 2 floors, so 900 square meters). But no-one complains about the cable that runs outside the house and instead enjoy good WiFi throughout the whole house and garden with only 2 WiFi routers.

Because the cable is outside, I could place the WiFi routers optimally, which really makes a big difference. That and hard-coded channels, because the auto-configuration of channels of your WiFi equipment, while many other WiFi networks in the neighborhood are active, is always messy and everyone ends up with a sub-optimal selection of channels, so lots of cross-talk between devices, badly affecting range, bandwidth and latency.

WiFi 6 only comes in new (and not the cheapest models of) laptops. And it requires the routing device in your network to support WiFi 6 as well. So, you'll need to purchase that as well. And isn't the WiFi 6 standard still not completely ratified? You can get WiFi 6 equipment all right, but you'll get equipment where manufacturers have filled in the "gaps" of the WiFi 6 standard with what they themselves think fits. It is unlikely that you'll buy a dud for WiFi 6 equipment (from reputable manufacturers), but as far as I know the WiFi 6 standard isn't finished. They sure take their sweet time with that.

169
You can use AnyDesk to work on two computers at once. At least that is what I understand from your request.

AnyDesk has a free and commercial license, but you can use it freely if the amount of computers you connect to is low. Never tested to see how much computers you can connect to before reaching the free/commercial tipping point, but there are 8 computers in my "address book" and AnyDesk doesn't complain.

You should install it on both machines. Remember the automatically generated AnyDesk ID (or an alias you created yourself) of the machine you want to connect to and fill that in the appropriate field on the machine you use to connect to the other machine. It usually takes only a few seconds to establish connection is established, you can enable the option 'full screen view' and you'll think you are working on the other laptop. Afterwards you switch instantly between machines.

It is a 3 or 4 MByte download, installing is done in a minute and it works wonderfully well. With AnyDesk it is also possible to control both your laptops on a computer outside your own home network. For ease and comfort, I do not know a better solution than AnyDesk.

170
Have used that method in the past, had to do a performance test with Oracle DB software on Windows/Linux and Intel/AMD. Using BIOS/UEFI to boot from different drives made that a lot easier (and the test results lees prone to interpretation).

Spoiler
And if you were dying to know...Oracle on Windows was only a little bit faster, but the Intel system did not have patches for SPECTRE, while the AMD system did. Speed was the only performance counter that mattered for the companies that wanted this particular test done.


171
1 WiFi networking device in your computer or laptop? 1 WiFi connection is possible, not 2 simultaneously.

However, if you mean that these 2 WiFi signals come from 2 different ISPs, then you better purchase a decent router device that can combine these two ISP signals into 1, the combined signal can then be used by the only WiFi network controller in your laptop. Or desktop.

In other words, if you have a need to bundle the signals from 2 (or more) ISPs you do not do this on your laptop or desktop, but in the routing device of your home/company network. The concept is called 'bundling' and requires you to read up on networking. You can do this with OPNSense, pfSense and other software-based firewallson a PC, which needs at least 3 network cards in it. One network card for one ISP, the second network card for the other ISP and one network card for your internal network.

If you go the PC route, you'll need network cards (Intel is the preferred brand here). That hardware isn't free, the OPNSense and pfSense software is, but you'll need time to set these up properly or pay someone to do that for you.

You can also get specific routers with this functionality already built-in. That is usually much more expensive, but easier to maintain.

172
Living Room / Saying goodbye to the old year with a cheer!
« on: December 30, 2020, 03:52 PM »
And 2020 most certainly deserves this video:

https://www.youtube..../watch?v=fn3KWM1kuAw

 :Thmbsup:

173
Living Room / Re: Gadget WEEKENDS
« on: December 30, 2020, 03:30 PM »
It is easier to setup than VNC. AnyDesk and similar software take care of routing, port-forwarding etc.

Installing VNC is not difficult either, but when a WAN is introduced, it becomes more complicated. From your posts in this forum, I believe you are capable to do all those changes in your home network, but everyone can appreciate how easy AnyDesk makes it.

Next to that, you can enable 2FA on the AnyDesk connection and creating of (reverse) TCP tunnels becomes extremely simple too. 

174
Living Room / Re: Gadget WEEKENDS
« on: December 30, 2020, 03:25 PM »
As long as both devices are connected to the internet, you can install software like NoMachine, AnyDesk, TeamViewer, etc. on each device. Then you can start the software on the device that is intended as the display and "connect" through your (local) network to the other device.

Works like a charm on Windows and Linux. AnyDesk is by far the easiest, you can use it for free and hardly nags at you. When both devices are in your own LAN (same subnet), you can watch video with audio without synchronization problems. Tried that myself. If you care about synchronization issues, AnyDesk is less ideal to watch videos with audio on a computer that is not in your own network. But for office work/coding etc. it still works excellent.


175
N.A.N.Y. 2021 / Re: NANY 2021 Entry: The Lightning Bolt Quiz
« on: December 26, 2020, 10:15 PM »
But, in an effort to bring a lighter tone to this thread, check out this link to a fun and musical intermezzo, made by Google. However, you can create your own compositions as well.

The similarity between the music behind this link and Gregorian chant music is quite high. Especially the latter I find "soothing" on many levels , but the Google project comes quite close. Let's hope the link does the same for other participants in this thread.


Pages: prev1 2 3 4 5 6 [7] 8 9 10 11 12 ... 117next