61 Matching Annotations
  1. Aug 2020
  2. Jul 2020
    1. Oracle didn’t seem very interested in OpenOffice.org, and the community of volunteers developing it formed The Document Foundation back in 2010. They called on Oracle to participate and donate the OpenOffice.org name and brand to the community. Oracle never did, and the resulting forked office suite has been named LibreOffice since then.
    2. Yes, there are two big open-source office suites. Blame Oracle. Sun controlled the OpenOffice.org project, and Oracle acquired control of it when it purchased Sun back in 2010.
    3. Developers have almost all moved to LibreOffice, the spiritual successor to OpenOffice. But OpenOffice continues to be operated as its own project, seeing little development and only drawing potential LibreOffice users to a defunct piece of software.
    4. In 2011, Oracle laid off OpenOffice’s paid developers and donated the OpenOffice software to the Apache Foundation, rather than The Document Foundation. It’s remained there since, a project in slow but steady decline.
    1. This works as expected (using r for making it an exact Rational): p Time.utc(2007, 11, 1, 15, 25, 0, 123456.789r) # => 2007-11-01 15:25:00.123456789 UTC
    2. These seem to be better reasons to support sub-nanosecond resolution. I think either storing picoseconds or storing sec fraction as 64-bit integer are better approaches than storing a rational. However, either change would be very invasive, and it seems unlikely to be worth the effort.
    1. JSON parsing is always pain in ass. If the input is not as expected it throws an error and crashes what you are doing. You can use the following tiny function to safely parse your input. It always turns an object even if the input is not valid or is already an object which is better for most cases.

      It would be nicer if the parse method provided an option to do it safely and always fall back to returning an object instead of raising exception if it couldn't parse the input.

    1. In the Set class we already called this - and difference, which it is ok but not really accurate because of the previous explanation, but probably not worthwhile to change it.

      Is this saying that the name difference is inaccurate?

      Why is it inaccurate? You even called it the "theoretic difference" above.

      Is that because "relative complement" would be better? Or because the full phrase "theoretic difference" [https://en.wiktionary.org/wiki/set-theoretic_difference] is required in order for it to be accurate rather than just "difference"?

    1. VII, after the map block, consider arr.each_with_object([]) do |(converted_val, orig_val),uniques|...end.
    2. Creating and calling a default proc is a waste of time, and Cramming everything into one line using tortured constructs doesn't make the code more efficient--it just makes the code harder to understand.

      The nature of this "answer" is a comment in response to another answer. But because of the limitations SO puts on comments (very short length, no multi-line code snippets), comment feature could not actually be used, so this user resorted to "abusing" answer feature to post their comment instead.

      See

  3. Jun 2020
    1. However, a ActiveRecord::Rollback within the nested transaction will be caught by the block of the nested transaction, but will be ignored by the outer transaction, and not cause a roll back! To avoid this unexpected behaviour, you have to explicitly tell rails for each transaction to indeed use proper nesting: CopyActiveRecord::Base.transaction(joinable: false, requires_new: true) do # inner code end This is a safer default for working with custom transactions.
  4. May 2020
    1. Not merge the values of the keys.

      This is one of the biggest limatations of <<: *anchor: it overwrites values of keys. It's too heavy-handed and therefore of limited use. You can only use it if you don't mind keys getting overwritten (such as if you are going to overwrite the keys below the <<:.).

    1. Note that this will pull the container if it exists. Pulling even the small alpine is quite an overhead just to get that information. Not mentioning the several GB-Image one often has in CI-Environments.
    1. '

      because it's in YAML

      but this means you can't use any ' in the actual script line

      or you have to use different delimiters if you do

      bottom line is it makes it harder to write/include your script than simply creating a separate shell script file.

    1. A "tag" is a snippet of code that allows digital marketing teams to collect data, set cookies or integrate third-party content like social media widgets into a site.

      This is a bad re-purposing of the word "tag", which already has specific meanings in computing.

      Why do we need a new word for this? Why not just call it a "script" or "code snippet"?

    1. the i18n object with all the strings

      They don't require supplying all keys for other objects that can be overridden, such as banner: the default value is used for whatever keys are not provided within the banner object. In other words, values are merged, with the supplied values overriding the defaults. The i18n object should work the same way. Often you only need/want to override a couple phrases/translations, not all of them.

      See: https://www.iubenda.com/en/help/1205-how-to-configure-your-cookie-solution-advanced-guide

    1. I just noticed that git svn clone has an optional --log-window-size parameter, though, and it lets you determine how many log entries are scanned at a time. The default is 100, but if you bump it up to 5000, then it only takes a few minutes to clone the plugin, making git-svn a viable option.
    2. I dismissed the idea, though, because I thought that cloning even part of a repository with git-svn required scanning every commit in the entire repository, in order to build the local history. With almost 1.5 million commits in the plugin repository, that would take roughly 4 hours to clone a plugin.
    1. Make it clear that signing up is optional. Consent must be “freely given”; you may not coerce users into joining your mailing list or make it appear as if joining the list is mandatory. For this reason, you must make it clear that signing up is optional. This is especially relevant in cases where you offer free white-papers (or e-books) for download. While the user’s email address is required for the delivery of the service, signing up for your newsletter is not. In such a case, you must not make it appear as if signing-up to the newsletter list mandatory and must make it clear that it is optional.

      Question (answer below)

      Are they saying that it's not allowed to make signing up for a mailing list a precondition/requirement for anything? This was surprising to me.

      So if you have a newsletter sign-up page that sends a digital bonus gift (like an e-book) to new subscribers, are required to completely change/repurpose your "newsletter sign-up page" into a "download e-book page" (that has an optional checkbox to also sign up for the newsletter, if you want)? That seems dumb to me, since it requires completely reversing the purpose of the page — which was, in my mind, primarily about signing up for the newsletter, with a bonus (an essentially optional one) thrown in for those who do so. Are you required to either repurpose it like that or remove the free bonus offer that would be sent to new subscribers?

      The irony of this is that it requires websites that have a newsletter sign-up page like that to change it into a "newsletter sign-up page" where the newsletter sign-up part is optional. Which make you look kind of stupid, making a page that claims to be one thing but doesn't necessarily do what it says it's for.

      Does this mean, in effect, that you may not lawfully provide any sort of incentive or reward for signing up for something (like a mailing list)? As long as it's very clear that some action is required before delivery of some thing, I don't see why this sort of thing should not be permitted? Would this fall under contract law? And as such, wouldn't such a contract be allowed and valid? Are mailing lists a special class of [service] that has special requirements like this? Or is it part of a broader category to which this requirement applies more generally?

      Why is requiring the user to provide an email address before they can download a digital reward allowed but not requiring signing up to a mailing list? Why isn't it required that even the email address be optional to provide? (To answer my own question, probably because it's allowed to allow a user to request a specific thing to be sent via email, and an email address is required in order to fulfill that request. But...) It seems that the website could just provide a direct link to download it via HTTP/FTP/etc. as an option for users that chose not to provide an email address. (But should they be required to provide that option anytime they / just because they provide the option to have the same thing delivered via email?)

      Answer

      Looks like my question was answered below:

      Explicit Form (where the purpose of the sign-up mechanism is unequivocal). So for example, in a scenario where your site has a pop-up window that invites users to sign up to your newsletter using a clear phrase such as: “Subscribe to our newsletter for access to discount vouchers and product updates!“, the affirmative action that the user performs by typing in their email address would be considered valid consent.

      So the case I described, where it is made very clear that the incentive that is offered is conditional on subscribing, is listed as an exception to the general rule. That's good; it should be allowed.

  5. Apr 2020
    1. The issue I see is that the browser agent might be smart enough to learn the autocomplete attribute and apply it next time it sees the form. If it does do this, the only way I can see to still get around the problem would be to dynamically change the autocomplete attribute value when the page is generated.
    1. If you are signed in to Chrome with the a Google account and try to sign it to that Google account on a web page, Chrome will not offer to save that password.

      You have to "disconnect" your Google Account from Chrome, which to me is an unfortunate workarounds.

      They should just give the option to people who want to both have the accounts connected and save that password.

    1. Suddenly even linking to data was an excuse to get raided by the FBI and potentially face serious charges. Even more concerning is that Brown linked to data that was already public and others had already linked to.
    2. The key change here is the removal of an intent to defraud and replacing it with willfully; it will be illegal to share this information as long as you have any reason to know someone else might use it for unauthorized computer access.It is troublesome to consider the unintended consequences resulting from this small change.
    3. The problem is that it is that the laws themselves change the very definition of a criminal and put many innocent professionals at risk.
    4. This principle equally applies to the laws of our country; we should never violate basic rights even if the consequences aren’t immediately evident.
    1. if you're using the GNU version of find, the texinfo page for find has a more detailed explanation than its manpage (as is true for most GNU utilities).

      This is unfortunate because I (and I assume most users) don't know how to or aren't in the habit of accessing the info page. We're more in the habit of just doing man command. It's confusing that there are 2 separate manuals. It seems like it would be better to just everything in the man page. But maybe that would be too big to put in a single "page". Git (for example) circumvents that issue by having separate man pages for each subcommand (like man git log).

    1. In the early 1990s, the creators of Netscape apparently built a function that enabled each web page to be annotated by those visiting it, as a way for viewers to discuss the page’s content. But according to a [1] produced in 2013 by a nonprofit called [Hypothesis][2], the feature was turned off.
  6. Mar 2020
    1. Ruby's current handling of Dates and Times is all over the map. We have Date, Time, DateTime, ParseDate, and more, not to mention all the other common extensions running around out there. Ruby needs an improved class that incorporates them all.
    1. The easiest solution I found for this was simply to make small tweaks to avoid it altogether, e.g. “From: New York” instead of “From New York”. en.yml1 from_x: "From: %{x}" sv.yml1 from_x: "Från: %{x}" fi.yml1 from_x: "Lähettäjä: %{x}" Apparently this is enough to avoid inflecting the place name. Consult a speaker of the target language and see if you can come up with a workaround similar to this.
    1. To accomplish this, Logic Hop adds the CSS class .logichop-render-hide with the parameter opacity: 0 !important; to the <body> element. After the container is ready and Logic Hop has processed your personalizations the CSS class is automatically removed and the page is displayed. The Anti-Flicker Timeout setting is the time in milliseconds until page is automatically displayed (in the unlikely event Logic Hop takes too long to load).
    2. While caching is great for speed and performance, it bypasses Pre-page Level and Page Level processing and the default Logic Hop functionality. Logic Hop has a Javascript Mode feature which allows the use of any cache Plugin while keeping the benefit of the page view tracking, goal tracking and page redirects.
    1. Output to STDERR for processes run through the Rack interface is directed to the master Apache error log file rather than the domain/subdomain specific log file. You do not have direct access to the master log file. This limitation can make debugging initialization errors (in particular syntax errors and gem resolution issues) tricky. Passenger will often produce an error output webpage including a stack traceback. However, in some cases it does not. If you have a persistent problem and Passenger is not producing sufficiently useful error output, you can try contacting the DreamHost support staff and ask them to examine the master log file for you
  7. Feb 2020
    1. The .ignore file , from what I can tell, needs to exist in the directory you're targeting for it to be recognized, not the current directory. If you're searching in .src, the file would need to be there for it to work.
  8. Jan 2020
    1. before_destroy callbacks should be placed before dependent: :destroy associations (or use the prepend: true option), to ensure they execute before the records are deleted by dependent: :destroy.
    1. ssh doesn't let you specify a command precisely, as you have done, as a series of arguments to be passed to execvp on the remote host. Instead it concatenates all the arguments into a string and runs them through a remote shell. This stands out as a major design flaw in ssh in my opinion... it's a well-behaved unix tool in most ways, but when it comes time to specify a command it chose to use a single monolithic string instead of an argv, like it was designed for MSDOS or something!
  9. Dec 2019
    1. The Internet permission is only used to display the Google Map, which is only displayed once on creating a new location. Meaning, once you created all your needed locations, you can deactivate the Internet permission and still use the location based reminders (Note: Most devices don't allow you to revoke this permission, sorry).
    1. Directly on the Switch: Some third-party games including Fortnite and Overwatch don’t need a separate app. You just connect a standard headset to the single 3.5 mm audio jack on your Switch and chat without the app, just like a smartphone. Again, Nintendo’s own games won’t work with this.

      This seems like the obvious solution. Why would Nintendo make you get a separate app on a separate platform (Android) when they could just let you chat directly via the Switch device like these games do?

    1. Basically, the standard said something, interpreters ignored it because the standard seemed illogical, but now interpreters like Bash have really confusing semantics, and no-one wants to fix it.
    1. Note: Users must log out and back in to gain rvm group membership because group memberships are only evaluated by the operating system at initial login time.
    1. The IdentitiesOnly yes is required to prevent the SSH default behavior of sending the identity file matching the default filename for each protocol. If you have a file named ~/.ssh/id_rsa that will get tried BEFORE your ~/.ssh/id_rsa.github without this option.
    1. Arguably, the rails-team's choice of raising ArgumentError instead of validation error is correct in the sense that we have full control over what options a user can select from a radio buttons group, or can select over a select field, so if a programmer happens to add a new radio button that has a typo for its value, then it is good to raise an error as it is an application error, and not a user error. However, for APIs, this will not work because we do not have any control anymore on what values get sent to the server.
  10. Nov 2019
    1. I often wish for this. I don't understand why this hasn't been added.

      Ugly workaround for now:

      # Note, even though we don't need or use arguments passed to this selector, you *must* pass in an
      # argument to prevent it from matching the :id selector and giving a "Unable to find id :parent (Capybara::ElementNotFound)" error.
      # Example: el.first(:parent, 1)
      # You may also need match: first if el matches multiple elements to avoid Capybara::Ambiguous
      Capybara.add_selector(:parent) do
        xpath { ".//.." }
      end
      
  11. developer.mozilla.org developer.mozilla.org
    1. Using with is not recommended, and is forbidden in ECMAScript 5 strict mode. The recommended alternative is to assign the object whose properties you want to access to a temporary variable.