msclrhd
Joined 14 years ago
Joined 14 years ago
It's also interesting how the pronunciation is reconstructed. Looking at rhyming pairs that don't currently rhyme (e.g. loved/proved), looking at different accents of English (Irish, Scottish, American, etc.) to identify historic pronunciations, etc.
For lexer and parser tests, I tend to focus on the EBNF grammar. Do I have lexer test coverage for each symbol in a given EBNF, accepting duplicate token coverage across different EBNF symbol tests? Do I have parser tests for each valid path through the symbol? For error handling/recovery, do I have a test for a token in a symbol being missing (one per missing symbol)?
For equation/algorithm testing, do I have a test case for each value domain. For numbers: zero, negative number, positive number, min, max, values that yield the min/max representable output (and one above/below this to overflow).
I tend to organize tests in a hierarchy, so the tests higher up only focus on the relevant details, while the ones lower down focus on the variations they can have. For example, for a lexer I will test the different cases for a given token (e.g. '1e8' and '1E8' for a double token), then for the parser I only need to test a single double token format/variant as I know that the lexer handles the different variants correctly. Then, I can do a similar thing in the processing stages, ignoring the error handling/recovery cases that yield the same parse tree as the valid cases.
If you are implementing interfaces that plug into some other program (e.g. an IDE, or even different teams in a project), tests are invaluable to check that your code works as expected, and does not break when a new version of the program is released.
Yes, writing tests takes longer. Yes, writing tests makes it harder to change the code in the future. However, they have helped me identify cases in my code that I had not considered (when integrating my code with an IDE), and to prevent issues when refactoring and extending the code.
There are ways to mitigate the issues of changing the code, such as creating scaffolding to bridge the old and new code via adaptors, etc.
I don't know of an easier way to do this.
To manage the top sites (which Firefox 78 displays on address bar click or down arrow if enabled in the preferences [1]), you need to: 1) add the top sites on the home page, 2) hover over the page you want to remove, 3) click the "..." button in the top right ("Open Menu"), 4) click "unpin" if you don't want it to be kept there, but stil calculated in the ranking, 5) click "dismiss" if you don't want it displayed.
[1] This is a change in Firefox 78, as when pressing the down arrow key Firefox 77 displayed what Firefox 78 displays when pressing the space bar.
1. It is inconsistent with the behaviour of every other control, including other combobox/search/dropdown UI elements. The web search element on the new page/tab for both Firefox and Chrome only expand downward to show the results. (The one on Chrome adjusts the border radius slightly, but that is more to do with the way the border radius is calculated.)
2. I personally find it distracting, especially as it is moving in two directions at once. -- I don't like animated elements in the Windows start menu and YouTube's latest post section even more for the same reason (I notice the movement in the corner of my eye, then get distracted as it is drawing attention away from what I am doing).
3. It can happen when not user initiated, e.g. when switching to an already open tab where the focus then goes to the address bar. This further adds to the distracting "look at me!" nature of the new design, where you have to explicitly click away to get rid of. Couple that with reddit's behaviour of clicking outside a post navigating to the channels page and you have some fun times!
4. The dropdown of frequently visited pages can no longer be opened by the mouse only. You need to click on the address bar and then press the down arrow key.
I wonder if the Higgs particle could be a candidate for the force carrier in the QM representation of GR (e.g. the resulting higgs field interacts with and causes space-time curvature instead of energy-momentum doing it directly). That is speculation on my part from a lay-person perspective, so could be completely wrong.
The next standard library supports using the standard algorithms with ranges, so you can say things like `std::sort(v)` instead of `std::sort(v.begin(), v.end())`.
IIUC, views are ranges that can adapt the results of the underlying object without changing the contents of that object, such as a lower-case view, or a reversed view. These work by doing the lower-case conversion on dereference, or swapping the increment/decrement operations.
The whole programming landscape would need to be audited.
Given a single implementation, what incentive is there to develop open standards?
How do you innovate (in standards, JavaScript performance, rendering, etc.) if there is only one group working on them?
Case in point: Firefox is the only major browser to provide MathML support. Where is the incentive to get that implemented in the other browsers, especially given MathJax?
Where is the competition to innovate in things like web tools (layout analysis -- esp. for flexbox, etc., accessibility property (WCAG, WAI-ARIA) navigation/investigation) given a single implementation?