docs: Convert many http URLs to https.

Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
Anders Kaseorg 2020-03-26 17:32:21 -07:00 committed by Tim Abbott
parent 586f78cb32
commit 7ff9b22500
65 changed files with 149 additions and 149 deletions

View File

@ -101,5 +101,5 @@ This Code of Conduct is adapted from the
[Citizen Code of Conduct](http://citizencodeofconduct.org/) and the [Citizen Code of Conduct](http://citizencodeofconduct.org/) and the
[Django Code of Conduct](https://www.djangoproject.com/conduct/), and is [Django Code of Conduct](https://www.djangoproject.com/conduct/), and is
under a under a
[Creative Commons BY-SA](http://creativecommons.org/licenses/by-sa/4.0/) [Creative Commons BY-SA](https://creativecommons.org/licenses/by-sa/4.0/)
license. license.

View File

@ -47,7 +47,7 @@ don't require touching the codebase at all. We list a few of them below:
* [Translating](https://zulip.readthedocs.io/en/latest/translating/translating.html) * [Translating](https://zulip.readthedocs.io/en/latest/translating/translating.html)
Zulip. Zulip.
* [Outreach](#zulip-outreach): Star us on GitHub, upvote us * [Outreach](#zulip-outreach): Star us on GitHub, upvote us
on product comparison sites, or write for [the Zulip blog](http://blog.zulip.org/). on product comparison sites, or write for [the Zulip blog](https://blog.zulip.org/).
## Your first (codebase) contribution ## Your first (codebase) contribution
@ -333,7 +333,7 @@ have been using Zulip for a while and want to contribute more.
about a technical aspect of Zulip can be a great way to spread the word about a technical aspect of Zulip can be a great way to spread the word
about Zulip. about Zulip.
We also occasionally [publish](http://blog.zulip.org/) long-form We also occasionally [publish](https://blog.zulip.org/) long-form
articles related to Zulip. Our posts typically get tens of thousands articles related to Zulip. Our posts typically get tens of thousands
of views, and we always have good ideas for blog posts that we can of views, and we always have good ideas for blog posts that we can
outline but don't have time to write. If you are an experienced writer outline but don't have time to write. If you are an experienced writer

View File

@ -69,7 +69,7 @@ You might be interested in:
programs](https://zulip.readthedocs.io/en/latest/overview/contributing.html#outreach-programs)** programs](https://zulip.readthedocs.io/en/latest/overview/contributing.html#outreach-programs)**
like Google Summer of Code. like Google Summer of Code.
You may also be interested in reading our [blog](http://blog.zulip.org/) or You may also be interested in reading our [blog](https://blog.zulip.org/) or
following us on [twitter](https://twitter.com/zulip). following us on [twitter](https://twitter.com/zulip).
Zulip is distributed under the Zulip is distributed under the
[Apache 2.0](https://github.com/zulip/zulip/blob/master/LICENSE) license. [Apache 2.0](https://github.com/zulip/zulip/blob/master/LICENSE) license.

View File

@ -330,7 +330,7 @@ def setup(app: Any) -> None:
}, True) }, True)
# Enable `eval_rst`, and any other features enabled in recommonmark_config. # Enable `eval_rst`, and any other features enabled in recommonmark_config.
# Docs: http://recommonmark.readthedocs.io/en/latest/auto_structify.html # Docs: https://recommonmark.readthedocs.io/en/latest/auto_structify.html
# (But NB those docs are for master, not latest release.) # (But NB those docs are for master, not latest release.)
app.add_transform(AutoStructify) app.add_transform(AutoStructify)

View File

@ -40,11 +40,11 @@ with many of the WCAG guidelines. Here are some of the more useful ones:
* [aXe](https://www.deque.com/products/axe/) An open source Chrome and Firefox * [aXe](https://www.deque.com/products/axe/) An open source Chrome and Firefox
extension which runs a somewhat different set of checks than Google's Chrome extension which runs a somewhat different set of checks than Google's Chrome
extension. extension.
* [Wave](http://wave.webaim.org/) This web application takes a URL and loads * [Wave](https://wave.webaim.org/) This web application takes a URL and loads
it in a frame, reporting on all the issues it finds with links to more it in a frame, reporting on all the issues it finds with links to more
information. Has the advantage of not requiring installation, but requires information. Has the advantage of not requiring installation, but requires
a URL which can be directly accessed by an external site. a URL which can be directly accessed by an external site.
* [Web Developer](http://chrispederick.com/work/web-developer/) This browser * [Web Developer](https://chrispederick.com/work/web-developer/) This browser
extension has many useful features, including a convenient link for opening extension has many useful features, including a convenient link for opening
the current URL in Wave to get an accessibility report. the current URL in Wave to get an accessibility report.
@ -70,16 +70,16 @@ If you want to help make Zulip more accessible, here is a list of the
For more information about making Zulip accessible to as many users as For more information about making Zulip accessible to as many users as
possible, the following resources may be useful. possible, the following resources may be useful.
* [Font Awesome accessibility guide](http://fontawesome.io/accessibility/), * [Font Awesome accessibility guide](https://fontawesome.com/how-to-use/on-the-web/other-topics/accessibility),
which is especially helpful since Zulip uses Font Awesome for its icons. which is especially helpful since Zulip uses Font Awesome for its icons.
* [Web Content Accessibility Guidelines (WCAG) 2.0](https://www.w3.org/TR/WCAG/) * [Web Content Accessibility Guidelines (WCAG) 2.0](https://www.w3.org/TR/WCAG/)
* [WAI-ARIA](https://www.w3.org/WAI/intro/aria) - Web Accessibility Initiative * [WAI-ARIA](https://www.w3.org/WAI/intro/aria) - Web Accessibility Initiative
Accessible Rich Internet Application Suite Accessible Rich Internet Application Suite
* [WebAIM](http://webaim.org/) - Web Accessibility in Mind * [WebAIM](https://webaim.org/) - Web Accessibility in Mind
* The [MDN page on accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility) * The [MDN page on accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility)
* The [Open edX Accessibility Guidelines][openedx-guidelines] for developers * The [Open edX Accessibility Guidelines][openedx-guidelines] for developers
[chrome-webstore]: https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb [chrome-webstore]: https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb
[openedx-guidelines]: http://edx.readthedocs.io/projects/edx-developer-guide/en/latest/conventions/accessibility.html [openedx-guidelines]: https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/conventions/accessibility.html
[accessibility-issues]: https://github.com/zulip/zulip/issues?q=is%3Aissue+is%3Aopen+label%3A%22area%3A%20accessibility%22 [accessibility-issues]: https://github.com/zulip/zulip/issues?q=is%3Aissue+is%3Aopen+label%3A%22area%3A%20accessibility%22

View File

@ -187,7 +187,7 @@ the maintainer time and get the PR merged quicker.
We also strongly recommend reviewers to go through the following resources. We also strongly recommend reviewers to go through the following resources.
* [The Gentle Art of Patch Review](http://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/) * [The Gentle Art of Patch Review](https://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/)
article by Sarah Sharp article by Sarah Sharp
* [Zulip & Good Code Review](https://www.harihareswara.net/sumana/2016/05/17/0) * [Zulip & Good Code Review](https://www.harihareswara.net/sumana/2016/05/17/0)
article by Sumana Harihareswara article by Sumana Harihareswara

View File

@ -22,8 +22,8 @@ The Vagrant setup process runs this for you.
`lint` runs many lint checks in parallel, including `lint` runs many lint checks in parallel, including
- JavaScript ([ESLint](http://eslint.org/)) - JavaScript ([ESLint](https://eslint.org/))
- Python ([Pyflakes](http://pypi.python.org/pypi/pyflakes)) - Python ([Pyflakes](https://pypi.python.org/pypi/pyflakes))
- templates - templates
- Puppet configuration - Puppet configuration
- custom checks (e.g. trailing whitespace and spaces-not-tabs) - custom checks (e.g. trailing whitespace and spaces-not-tabs)
@ -154,9 +154,9 @@ Always declare JavaScript variables using `const` or `let` rather than
### JavaScript and TypeScript `for (i in myArray)` ### JavaScript and TypeScript `for (i in myArray)`
Don't use it: Don't use it:
[[1]](http://stackoverflow.com/questions/500504/javascript-for-in-with-arrays), [[1]](https://stackoverflow.com/questions/500504/javascript-for-in-with-arrays),
[[2]](https://google.github.io/styleguide/javascriptguide.xml#for-in_loop), [[2]](https://google.github.io/styleguide/javascriptguide.xml#for-in_loop),
[[3]](http://www.jslint.com/help.html#forin) [[3]](https://www.jslint.com/help.html#forin)
### Translation tags ### Translation tags
@ -187,7 +187,7 @@ syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operat
and so on. Our Babel configuration automatically transpiles and and so on. Our Babel configuration automatically transpiles and
polyfills these using [`core-js`](https://github.com/zloirock/core-js) polyfills these using [`core-js`](https://github.com/zloirock/core-js)
when necessary. We used to use the when necessary. We used to use the
[Underscore](http://underscorejs.org/) library, but that should be [Underscore](https://underscorejs.org/) library, but that should be
avoided in new code. avoided in new code.
## More arbitrary style things ## More arbitrary style things

View File

@ -54,7 +54,7 @@ materials](https://developers.google.com/open-source/gsoc/resources/manual).
need help learning, and time-saving tricks. need help learning, and time-saving tricks.
- If you need feedback from the community / decisions made, ask in the - If you need feedback from the community / decisions made, ask in the
appropriate public stream on [chat.zulip.org](http://chat.zulip.org). Often appropriate public stream on [chat.zulip.org](https://chat.zulip.org). Often
someone can provide important context that you need to succeed in your someone can provide important context that you need to succeed in your
project. project.

View File

@ -126,7 +126,7 @@ don't have a favorite, here are some suggestions:
* [atom](https://atom.io/) * [atom](https://atom.io/)
* [emacs](https://www.gnu.org/software/emacs/) * [emacs](https://www.gnu.org/software/emacs/)
* [vim](http://www.vim.org/) * [vim](https://www.vim.org/)
* [spacemacs](https://github.com/syl20bnr/spacemacs) * [spacemacs](https://github.com/syl20bnr/spacemacs)
* [sublime](https://www.sublimetext.com/) * [sublime](https://www.sublimetext.com/)
@ -220,7 +220,7 @@ Two editors often available by default on Linux systems are:
recommended it for quick edits to things like configuration files. Launch by recommended it for quick edits to things like configuration files. Launch by
running command `nano <filename>`. Exit by pressing *control-X*. running command `nano <filename>`. Exit by pressing *control-X*.
* **[Vim](http://www.vim.org/)**: A very powerful editor that can take a while * **[Vim](https://www.vim.org/)**: A very powerful editor that can take a while
to learn. Launch by running `vim <filename>`. Quit Vim by pressing *escape*, to learn. Launch by running `vim <filename>`. Quit Vim by pressing *escape*,
typing `:q`, and then pressing *return*. Vim comes with a program to learn it typing `:q`, and then pressing *return*. Vim comes with a program to learn it
called `vimtutor` (just run that command to start it). called `vimtutor` (just run that command to start it).

View File

@ -750,7 +750,7 @@ If this is already enabled in your BIOS, double-check that you are running a
64-bit operating system. 64-bit operating system.
For further information about troubleshooting vagrant timeout errors [see For further information about troubleshooting vagrant timeout errors [see
this post](http://stackoverflow.com/questions/22575261/vagrant-stuck-connection-timeout-retrying#22575302). this post](https://stackoverflow.com/questions/22575261/vagrant-stuck-connection-timeout-retrying#22575302).
#### Vagrant was unable to communicate with the guest machine #### Vagrant was unable to communicate with the guest machine
@ -1016,10 +1016,10 @@ If at any time you wish to revert back to the default settings, simply
remove the `GUEST_CPUS` and `GUEST_MEMORY_MB` lines from remove the `GUEST_CPUS` and `GUEST_MEMORY_MB` lines from
`~/.zulip-vagrant-config`. `~/.zulip-vagrant-config`.
[cygwin-dl]: http://cygwin.com/ [cygwin-dl]: https://cygwin.com/
[vagrant-dl]: https://www.vagrantup.com/downloads.html [vagrant-dl]: https://www.vagrantup.com/downloads.html
[vbox-dl]: https://www.virtualbox.org/wiki/Downloads [vbox-dl]: https://www.virtualbox.org/wiki/Downloads
[vmware-fusion-dl]: http://www.vmware.com/products/fusion.html [vmware-fusion-dl]: https://www.vmware.com/products/fusion.html
[vagrant-vmware-fusion-dl]: https://www.vagrantup.com/vmware/ [vagrant-vmware-fusion-dl]: https://www.vagrantup.com/vmware/
[install-advanced]: ../development/setup-advanced.md [install-advanced]: ../development/setup-advanced.md
[rtd-git-guide]: ../git/index.md [rtd-git-guide]: ../git/index.md

View File

@ -229,7 +229,7 @@ above.
"fixture"). The easiest way to do this is add an appropriate print "fixture"). The easiest way to do this is add an appropriate print
statement (usually `json.dumps(result, indent=4, sort_keys=True)`), statement (usually `json.dumps(result, indent=4, sort_keys=True)`),
and then run `tools/test-api`. You can also use and then run `tools/test-api`. You can also use
<http://jsonformatter.curiousconcept.com/> to format the JSON <https://jsonformatter.curiousconcept.com/> to format the JSON
fixtures. Add the fixture to the `example` subsection of the fixtures. Add the fixture to the `example` subsection of the
`responses` section for the endpoint in `responses` section for the endpoint in
`zerver/openapi/zulip.yaml`. `zerver/openapi/zulip.yaml`.

View File

@ -1,6 +1,6 @@
# OpenAPI configuration # OpenAPI configuration
The [OpenAPI](http://swagger.io/specification/) (formerly known as The [OpenAPI](https://swagger.io/specification/) (formerly known as
Swagger) specification is a standardized way to describe how an API Swagger) specification is a standardized way to describe how an API
functions. This description then can then be used by any tool that functions. This description then can then be used by any tool that
supports the standard. supports the standard.
@ -14,7 +14,7 @@ may contain other objects, or reference objects defined
elsewhere. Larger API specifications may be split into multiple elsewhere. Larger API specifications may be split into multiple
files. There are more types of objects than mentioned here, you can files. There are more types of objects than mentioned here, you can
find the complete details at find the complete details at
[Swagger/OpenAPI specification page](http://swagger.io/specification). [Swagger/OpenAPI specification page](https://swagger.io/specification/).
This library isn't in production use yet, but it is our current plan This library isn't in production use yet, but it is our current plan
for how Zulip's API documentation will work. for how Zulip's API documentation will work.
@ -52,16 +52,16 @@ info:
### Endpoint definitions ### Endpoint definitions
The [Paths Object](http://swagger.io/specification/#pathsObject) The [Paths Object](https://swagger.io/specification/#pathsObject)
contains contains
[Path Item Objects](http://swagger.io/specification/#pathItemObject) [Path Item Objects](https://swagger.io/specification/#pathItemObject)
for each endpoint. It describes in detail the methods and parameters for each endpoint. It describes in detail the methods and parameters
the endpoint accepts and responses it returns. the endpoint accepts and responses it returns.
There is one Path Item Object for each supported method, containing a There is one Path Item Object for each supported method, containing a
[Parameters Definition Object](http://swagger.io/specification/#parametersDefinitionObject) [Parameters Definition Object](https://swagger.io/specification/#parametersDefinitionObject)
describing the required and optional inputs. A describing the required and optional inputs. A
[Response Object](http://swagger.io/specification/#responseObject) [Response Object](https://swagger.io/specification/#responseObject)
similarly specifies the content of the response. They may reference similarly specifies the content of the response. They may reference
schemas from a global Definitions Object (see [Schemas](#schemas), schemas from a global Definitions Object (see [Schemas](#schemas),
below.) below.)
@ -69,9 +69,9 @@ below.)
Example: Example:
The `/users/{user}/presence` endpoint (defined in a The `/users/{user}/presence` endpoint (defined in a
[Path Item Object](http://swagger.io/specification/#pathItemObject)) [Path Item Object](https://swagger.io/specification/#pathItemObject))
expects a GET request with one expects a GET request with one
[parameter](http://swagger.io/specification/#parameterObject), HTTP [parameter](https://swagger.io/specification/#parameterObject), HTTP
Basic authentication, and returns a JSON response containing `msg`, Basic authentication, and returns a JSON response containing `msg`,
`result`, and `presence` values. `result`, and `presence` values.
@ -109,7 +109,7 @@ Basic authentication, and returns a JSON response containing `msg`,
### Schemas ### Schemas
The The
[Definitions Object](http://swagger.io/specification/#definitionsObject) [Definitions Object](https://swagger.io/specification/#definitionsObject)
contains schemas referenced by other objects. For example, contains schemas referenced by other objects. For example,
`MessageResponse`, the response from the `/messages` endpoint, `MessageResponse`, the response from the `/messages` endpoint,
contains three required parameters. Two are strings, and one is an contains three required parameters. Two are strings, and one is an
@ -151,13 +151,13 @@ characters are not permitted. If your editor has an option to replace
tabs with spaces, this is helpful. tabs with spaces, this is helpful.
You can also use the You can also use the
[Swagger Editor](http://swagger.io/swagger-editor), which validates [Swagger Editor](https://swagger.io/swagger-editor), which validates
YAML and understands the Swagger specification. Download and run it YAML and understands the Swagger specification. Download and run it
locally, or use the online version. If you aren't using a YAML-aware locally, or use the online version. If you aren't using a YAML-aware
editor, make small changes and check your additions often. editor, make small changes and check your additions often.
Note: if you are working with Note: if you are working with
[Swagger UI](http://swagger.io/swagger-ui/) in a local development [Swagger UI](https://swagger.io/swagger-ui/) in a local development
environment, it uses an online validator that must be able to access environment, it uses an online validator that must be able to access
your file. You may see a red "ERROR" button at the bottom of your API your file. You may see a red "ERROR" button at the bottom of your API
docs page instead of the green "VALID" one even if your file is docs page instead of the green "VALID" one even if your file is

View File

@ -31,9 +31,9 @@ These three systems are documented in detail.
What you are reading right now is part of the collection of What you are reading right now is part of the collection of
documentation targeted at developers and people running their own documentation targeted at developers and people running their own
Zulip servers. These docs are written in Zulip servers. These docs are written in
[Commonmark Markdown](http://commonmark.org/) with a small bit of rST. [Commonmark Markdown](https://commonmark.org/) with a small bit of rST.
We've chosen Markdown because it is We've chosen Markdown because it is
[easy to write](http://commonmark.org/help). The source for Zulip's [easy to write](https://commonmark.org/help/). The source for Zulip's
developer documentation is at `docs/` in the Zulip git repository, and developer documentation is at `docs/` in the Zulip git repository, and
they are served in production at they are served in production at
[zulip.readthedocs.io](https://zulip.readthedocs.io/en/latest/). [zulip.readthedocs.io](https://zulip.readthedocs.io/en/latest/).

View File

@ -58,7 +58,7 @@ And, if none of the above are to your liking, try [one of these][gitbook-guis].
[gitbook-setup]: https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup [gitbook-setup]: https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup
[gitbook-other-envs-bash]: https://git-scm.com/book/en/v2/Git-in-Other-Environments-Git-in-Bash [gitbook-other-envs-bash]: https://git-scm.com/book/en/v2/Git-in-Other-Environments-Git-in-Bash
[gitbook-other-envs-zsh]: https://git-scm.com/book/en/v2/Git-in-Other-Environments-Git-in-Zsh [gitbook-other-envs-zsh]: https://git-scm.com/book/en/v2/Git-in-Other-Environments-Git-in-Zsh
[gitgui-gitcola]: http://git-cola.github.io/ [gitgui-gitcola]: https://git-cola.github.io/
[gitgui-gitg]: https://wiki.gnome.org/Apps/Gitg [gitgui-gitg]: https://wiki.gnome.org/Apps/Gitg
[gitgui-gitk]: https://git-scm.com/docs/gitk [gitgui-gitk]: https://git-scm.com/docs/gitk
[gitgui-gitx]: https://github.com/gitx/gitx/ [gitgui-gitx]: https://github.com/gitx/gitx/

View File

@ -61,4 +61,4 @@ Here are the top things to know:
current branch with `git commit`. current branch with `git commit`.
[gitbook-basics]: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics [gitbook-basics]: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics
[understanding-git]: http://web.mit.edu/nelhage/Public/git-slides-2009.pdf [understanding-git]: https://web.mit.edu/nelhage/Public/git-slides-2009.pdf

View File

@ -69,7 +69,7 @@ Components
Zulip is primarily implemented in the Zulip is primarily implemented in the
[Django](https://www.djangoproject.com/) Python web framework. We [Django](https://www.djangoproject.com/) Python web framework. We
also make use of [Tornado](http://www.tornadoweb.org) for the also make use of [Tornado](https://www.tornadoweb.org) for the
real-time push system. real-time push system.
Django is the main web application server; Tornado runs the Django is the main web application server; Tornado runs the

View File

@ -50,7 +50,7 @@ using a "transactional email" service like
[Mailgun](https://documentation.mailgun.com/en/latest/quickstart-sending.html#send-via-smtp), [Mailgun](https://documentation.mailgun.com/en/latest/quickstart-sending.html#send-via-smtp),
[SendGrid](https://sendgrid.com/docs/API_Reference/SMTP_API/integrating_with_the_smtp_api.html), [SendGrid](https://sendgrid.com/docs/API_Reference/SMTP_API/integrating_with_the_smtp_api.html),
or, for AWS users, or, for AWS users,
[Amazon SES](http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html). [Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-smtp.html).
These services are designed to send email from servers, and are by far These services are designed to send email from servers, and are by far
the easiest way to get outgoing email working reliably (Mailgun has the easiest way to get outgoing email working reliably (Mailgun has
the best documentation). the best documentation).

View File

@ -54,6 +54,6 @@ zxcvbn rarely underestimates the strength of a password too severely,
and only about 10% of users do worse than this without prompting. and only about 10% of users do worse than this without prompting.
[zxcvbn]: https://github.com/dropbox/zxcvbn [zxcvbn]: https://github.com/dropbox/zxcvbn
[BHOS15]: http://www.cl.cam.ac.uk/~fms27/papers/2015-BonneauHerOorSta-passwords.pdf [BHOS15]: https://www.cl.cam.ac.uk/~fms27/papers/2015-BonneauHerOorSta-passwords.pdf
[zxcvbn-paper]: https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_wheeler.pdf [zxcvbn-paper]: https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_wheeler.pdf
[Bon12]: http://ieeexplore.ieee.org/document/6234435/ [Bon12]: https://ieeexplore.ieee.org/document/6234435

View File

@ -23,7 +23,7 @@ browsers, but not others and not the Zulip mobile and desktop apps.
The desktop apps support [configuring a custom CA][desktop-certs] to The desktop apps support [configuring a custom CA][desktop-certs] to
allow validation of certificates generated by an internal CA. allow validation of certificates generated by an internal CA.
[nginx-chains]: http://nginx.org/en/docs/http/configuring_https_servers.html#chains [nginx-chains]: https://nginx.org/en/docs/http/configuring_https_servers.html#chains
### Testing ### Testing
@ -172,7 +172,7 @@ To resolve this issue, update your server to support TLS 1.2,
and preferably also TLS 1.3. For nginx, see [the `ssl_protocols` and preferably also TLS 1.3. For nginx, see [the `ssl_protocols`
directive][nginx-doc-protocols] in your configuration. directive][nginx-doc-protocols] in your configuration.
[nginx-doc-protocols]: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols [nginx-doc-protocols]: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols
### The Android app connects to the server on some devices but not others ### The Android app connects to the server on some devices but not others
@ -197,7 +197,7 @@ control the offered curves with `ssl_ecdh_curve` in the `nginx`
configuration on your server. See [nginx docs][nginx-doc-curve] for configuration on your server. See [nginx docs][nginx-doc-curve] for
details. details.
[nginx-doc-curve]: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ecdh_curve [nginx-doc-curve]: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ecdh_curve
Two signs for diagnosing this issue in contrast to some other root Two signs for diagnosing this issue in contrast to some other root
cause: cause:

View File

@ -330,4 +330,4 @@ usually one needs to think about making changes in 3 places:
[yarn]: https://yarnpkg.com/ [yarn]: https://yarnpkg.com/
[npm]: https://npmjs.com/ [npm]: https://npmjs.com/
[iamcal]: https://github.com/iamcal/emoji-data [iamcal]: https://github.com/iamcal/emoji-data
[pygments]: http://pygments.org/ [pygments]: https://pygments.org/

View File

@ -3,7 +3,7 @@
Zulip supports full-text search, which can be combined arbitrarily Zulip supports full-text search, which can be combined arbitrarily
with Zulip's full suite of narrowing operators. By default, it only with Zulip's full suite of narrowing operators. By default, it only
supports English text, but there is an experimental supports English text, but there is an experimental
[PGroonga](http://pgroonga.github.io/) integration that provides [PGroonga](https://pgroonga.github.io/) integration that provides
full-text search for all languages. full-text search for all languages.
The user interface and feature set for Zulip's full-text search is The user interface and feature set for Zulip's full-text search is
@ -13,7 +13,7 @@ app's gear menu.
## The default full-text search implementation ## The default full-text search implementation
Zulip's uses [PostgreSQL's built-in full-text search Zulip's uses [PostgreSQL's built-in full-text search
feature](http://www.postgresql.org/docs/current/static/textsearch.html), feature](https://www.postgresql.org/docs/current/textsearch.html),
with a custom set of English stop words to improve the quality of the with a custom set of English stop words to improve the quality of the
search results. search results.
@ -27,7 +27,7 @@ application server instead.
## An optional full-text search implementation ## An optional full-text search implementation
Zulip now supports using [PGroonga](http://pgroonga.github.io/) for Zulip now supports using [PGroonga](https://pgroonga.github.io/) for
full-text search. PGroonga is a PostgreSQL extension that provides full-text search. PGroonga is a PostgreSQL extension that provides
full-text search feature. PostgreSQL's built-in full-text search full-text search feature. PostgreSQL's built-in full-text search
feature supports only one language at a time (in Zulip's case, feature supports only one language at a time (in Zulip's case,

View File

@ -3,7 +3,7 @@
## Zulip CSS organization ## Zulip CSS organization
The Zulip application's CSS can be found in the `static/styles/` The Zulip application's CSS can be found in the `static/styles/`
directory. Zulip uses [Bootstrap](http://getbootstrap.com/) as its directory. Zulip uses [Bootstrap](https://getbootstrap.com/) as its
main third-party CSS library. main third-party CSS library.
Zulip uses SCSS for its CSS files. There are two high-level sections Zulip uses SCSS for its CSS files. There are two high-level sections

View File

@ -236,14 +236,14 @@ be non-standard.
things like `t.co/foo`. things like `t.co/foo`.
* Force links to be absolute. `[foo](google.com)` will go to * Force links to be absolute. `[foo](google.com)` will go to
`http://google.com`, and not `http://zulip.com/google.com` which `http://google.com`, and not `https://zulip.com/google.com` which
is the default behavior. is the default behavior.
* Set `target="_blank"` and `title=`(the url) on every link tag so * Set `target="_blank"` and `title=`(the url) on every link tag so
clicking always opens a new window. clicking always opens a new window.
* Disable link-by-reference syntax, * Disable link-by-reference syntax,
`[foo][bar]` ... `[bar]: http://google.com`. `[foo][bar]` ... `[bar]: https://google.com`.
* Enable linking to other streams using `#**streamName**`. * Enable linking to other streams using `#**streamName**`.

View File

@ -17,7 +17,7 @@ prevent common coding errors.
We borrow some open source tools for much of our linting, and the links We borrow some open source tools for much of our linting, and the links
below will direct you to the official documentation for these projects. below will direct you to the official documentation for these projects.
- [eslint](http://eslint.org) - [eslint](https://eslint.org)
- [mypy](http://mypy-lang.org/) - [mypy](http://mypy-lang.org/)
- [puppet](https://puppet.com/) (puppet provides its own mechanism for - [puppet](https://puppet.com/) (puppet provides its own mechanism for
validating manifests) validating manifests)

View File

@ -17,10 +17,10 @@ def get_user(email: str, realm: Realm) -> UserProfile:
You can learn more about it at: You can learn more about it at:
* The * The
[mypy cheat sheet for Python 3](http://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html) [mypy cheat sheet for Python 3](https://mypy.readthedocs.io/en/latest/cheat_sheet_py3.html)
is the best resource for quickly understanding how to write the PEP is the best resource for quickly understanding how to write the PEP
484 type annotations used by mypy correctly. The 484 type annotations used by mypy correctly. The
[Python 2 cheat sheet](http://mypy.readthedocs.io/en/latest/cheat_sheet.html) [Python 2 cheat sheet](https://mypy.readthedocs.io/en/latest/cheat_sheet.html)
is useful for understanding the type comment syntax needed for our is useful for understanding the type comment syntax needed for our
few modules that need to support both Python 2 and 3. few modules that need to support both Python 2 and 3.

View File

@ -38,7 +38,7 @@ trying to use the Casper debugging tools are:
### Print debugging ### Print debugging
If you need to use print debugging in casper, you can do using If you need to use print debugging in casper, you can do using
`casper.log`; see <https://web.archive.org/web/20200108115113if_/http://docs.casperjs.org/en/latest/logging.html> for `casper.log`; see <https://web.archive.org/web/20200108115113if_/https://docs.casperjs.org/en/latest/logging.html> for
details. details.
You can also enable casper's verbose logging mode using the `--verbose` flag. This You can also enable casper's verbose logging mode using the `--verbose` flag. This
@ -111,9 +111,9 @@ for writing Casper tests in addition to the debugging notes below:
will ensure that the UI has finished updating from the previous will ensure that the UI has finished updating from the previous
step before Casper attempts to next step. The various wait step before Casper attempts to next step. The various wait
functions supported in Casper are documented in the Casper here: functions supported in Casper are documented in the Casper here:
<https://web.archive.org/web/20200108100925if_/http://docs.casperjs.org/en/latest/modules/casper.html#waitforselector> <https://web.archive.org/web/20200108100925if_/https://docs.casperjs.org/en/latest/modules/casper.html#waitforselector>
and the various assert statements available are documented here: and the various assert statements available are documented here:
<https://web.archive.org/web/20190814204845if_/http://docs.casperjs.org/en/latest/modules/tester.html#the-tester-prototype> <https://web.archive.org/web/20190814204845if_/https://docs.casperjs.org/en/latest/modules/tester.html#the-tester-prototype>
- The `casper.wait` style functions (`waitWhileVisible`, - The `casper.wait` style functions (`waitWhileVisible`,
`waitUntilVisible`, etc.) cannot be chained together in certain `waitUntilVisible`, etc.) cannot be chained together in certain
@ -183,4 +183,4 @@ for writing Casper tests in addition to the debugging notes below:
which can lead to confusing failures where the new code you write in which can lead to confusing failures where the new code you write in
between two `casper.then` blocks actually runs before either of between two `casper.then` blocks actually runs before either of
them. See this for more details about how Casper works: them. See this for more details about how Casper works:
<https://web.archive.org/web/20200107035425if_/http://docs.casperjs.org/en/latest/faq.html#how-does-then-and-the-step-stack-work> <https://web.archive.org/web/20200107035425if_/https://docs.casperjs.org/en/latest/faq.html#how-does-then-and-the-step-stack-work>

View File

@ -183,7 +183,7 @@ For users to be able to join to an "invite-only" stream, they must have been
invited by some user in this stream. This type of stream is equivalent to invited by some user in this stream. This type of stream is equivalent to
Facebook's "closed" groups, which in turn translates to "geschlossen" in German. Facebook's "closed" groups, which in turn translates to "geschlossen" in German.
This translation seems to be appropriate, for example [Linguee]( This translation seems to be appropriate, for example [Linguee](
http://www.linguee.de/englisch-deutsch/uebersetzung/invite-only.html) https://www.linguee.de/englisch-deutsch/uebersetzung/invite-only.html)
search returns only paraphrases of this term. search returns only paraphrases of this term.
*"Geschlossener Stream" (Transifex), "Geschlossene Gruppe" (Facebook), *"Geschlossener Stream" (Transifex), "Geschlossene Gruppe" (Facebook),
@ -227,7 +227,7 @@ This one is tricky, since one might initially think of "Alarmwort" as a proper
translation. "Alarm", however, has a negative connotation, people link it to translation. "Alarm", however, has a negative connotation, people link it to
unpleasant events. "Signal", on the other hand, is neutral, just like unpleasant events. "Signal", on the other hand, is neutral, just like
"alert word". Nevertheless, [Linguee]( "alert word". Nevertheless, [Linguee](
http://www.linguee.de/deutsch-englisch/search?source=auto&query=alert+word) https://www.linguee.de/deutsch-englisch/search?source=auto&query=alert+word)
shows that some websites misuse "Alarm" for the translation. shows that some websites misuse "Alarm" for the translation.
*"Signalwort" (Transifex), "Wort-Alarm" (Linguee)* *"Signalwort" (Transifex), "Wort-Alarm" (Linguee)*

View File

@ -24,7 +24,7 @@ Use informal Spanish for translation:
to decide what wouldn't sound awkward / rude in Spanish. to decide what wouldn't sound awkward / rude in Spanish.
* Latest RAE rule ("solo" should * Latest RAE rule ("solo" should
[**never**](http://www.rae.es/consultas/el-adverbio-solo-y-los-pronombres-demostrativos-sin-tilde) [**never**](https://www.rae.es/consultas/el-adverbio-solo-y-los-pronombres-demostrativos-sin-tilde)
have accent, even when it can be replaced with "solamente"). have accent, even when it can be replaced with "solamente").
Some terms are very tricky to translate, so be sure to communicate Some terms are very tricky to translate, so be sure to communicate

View File

@ -7,7 +7,7 @@ Zulip codebase, and dive deep into how each part works.
We will use as our example the creation of users through the API, but we We will use as our example the creation of users through the API, but we
will also highlight how alternative requests are handled. will also highlight how alternative requests are handled.
## A request is sent to the server, and handled by [Nginx](http://nginx.org/en/docs/) ## A request is sent to the server, and handled by [Nginx](https://nginx.org/en/docs/)
When Zulip is deployed in production, all requests go through nginx. When Zulip is deployed in production, all requests go through nginx.
For the most part we don't need to know how this works, except for when For the most part we don't need to know how this works, except for when
@ -84,7 +84,7 @@ For example, the `/features` page (preview
Note the `zh-hans` prefix--that url pattern gets added by `i18n_patterns`. Note the `zh-hans` prefix--that url pattern gets added by `i18n_patterns`.
## API endpoints use [REST](http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm) ## API endpoints use [REST](https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)
Our example is a REST API endpoint. It's a PUT to `/users`. Our example is a REST API endpoint. It's a PUT to `/users`.
@ -114,7 +114,7 @@ idempotent, and we like to write API endpoints in an idempotent fashion,
as much as possible. as much as possible.
This [cookbook](http://restcookbook.com/) and This [cookbook](http://restcookbook.com/) and
[tutorial](http://www.restapitutorial.com/) can be helpful if you are [tutorial](https://www.restapitutorial.com/) can be helpful if you are
new to REST web applications. new to REST web applications.
### PUT is only for creating new things ### PUT is only for creating new things

View File

@ -28,7 +28,7 @@ Some titles have been shortened for organizational purposes.
*Blog* - [Idle Words talks transcripts][] *Blog* - [Idle Words talks transcripts][]
[Idle Words talks transcripts]: http://idlewords.com/talks [Idle Words talks transcripts]: https://idlewords.com/talks
*Tutorial* - [HTTP Can Do That?!, by Sumana Harihareswara (PyCon 2016)][] *Tutorial* - [HTTP Can Do That?!, by Sumana Harihareswara (PyCon 2016)][]
@ -60,15 +60,15 @@ Some titles have been shortened for organizational purposes.
*Article* - [Effective Learning Strategies for Programmers][] *Article* - [Effective Learning Strategies for Programmers][]
[Effective Learning Strategies for Programmers]: http://akaptur.com/blog/2015/10/10/effective-learning-strategies-for-programmers/ [Effective Learning Strategies for Programmers]: https://akaptur.com/blog/2015/10/10/effective-learning-strategies-for-programmers/
*Article* - [Readme Driven Development][] *Article* - [Readme Driven Development][]
[Readme Driven Development]: http://tom.preston-werner.com/2010/08/23/readme-driven-development.html [Readme Driven Development]: https://tom.preston-werner.com/2010/08/23/readme-driven-development.html
*Article* - [Systematic Debugging][] *Article* - [Systematic Debugging][]
[Systematic Debugging]: http://akaptur.com/blog/2013/07/24/systematic-debugging [Systematic Debugging]: https://akaptur.com/blog/2013/07/24/systematic-debugging
*Paper* - [Floating-Point Arithmetic][] *Paper* - [Floating-Point Arithmetic][]
@ -86,11 +86,11 @@ Some titles have been shortened for organizational purposes.
*Video* - [Build & break a Python sandbox, by Jessica McKellar (PyCon 2014)][] *Video* - [Build & break a Python sandbox, by Jessica McKellar (PyCon 2014)][]
[Build & break a Python sandbox, by Jessica McKellar (PyCon 2014)]: http://pyvideo.org/pycon-us-2014/building-and-breaking-a-python-sandbox.html [Build & break a Python sandbox, by Jessica McKellar (PyCon 2014)]: https://pyvideo.org/pycon-us-2014/building-and-breaking-a-python-sandbox.html
*Video* - [Cache me if you can, by Guillaume Ardaud (PyCon 2014)][] *Video* - [Cache me if you can, by Guillaume Ardaud (PyCon 2014)][]
[Cache me if you can, by Guillaume Ardaud (PyCon 2014)]: http://pyvideo.org/pycon-us-2014/cache-me-if-you-can-memcached-caching-patterns.html [Cache me if you can, by Guillaume Ardaud (PyCon 2014)]: https://pyvideo.org/pycon-us-2014/cache-me-if-you-can-memcached-caching-patterns.html
*Video* - [Loop like a native, by Ned Batchelder (PyCon 2013)][] *Video* - [Loop like a native, by Ned Batchelder (PyCon 2013)][]
@ -106,15 +106,15 @@ Some titles have been shortened for organizational purposes.
*Video* - [The Mighty Dictionary, by Brandon Rhodes (PyCon 2010)][] *Video* - [The Mighty Dictionary, by Brandon Rhodes (PyCon 2010)][]
[The Mighty Dictionary, by Brandon Rhodes (PyCon 2010)]: http://pyvideo.org/pycon-us-2010/the-mighty-dictionary-55.html [The Mighty Dictionary, by Brandon Rhodes (PyCon 2010)]: https://pyvideo.org/pycon-us-2010/the-mighty-dictionary-55.html
*Article* - [Static types in Python, oh my(py)!][] *Article* - [Static types in Python, oh my(py)!][]
[Static types in Python, oh my(py)!]: http://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy [Static types in Python, oh my(py)!]: https://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy
*Guide* - [The Hitchhikers Guide to Python!][] *Guide* - [The Hitchhikers Guide to Python!][]
[The Hitchhikers Guide to Python!]: http://docs.python-guide.org/en/latest [The Hitchhikers Guide to Python!]: https://docs.python-guide.org/
## Java/Android ## Java/Android
@ -124,7 +124,7 @@ Some titles have been shortened for organizational purposes.
*Blog* - [Java Tutorials for Beginners][] *Blog* - [Java Tutorials for Beginners][]
[Java Tutorials for Beginners]: http://www.geeksforgeeks.org/java/ [Java Tutorials for Beginners]: https://www.geeksforgeeks.org/java/
## JavaScript/ECMAScript ## JavaScript/ECMAScript
@ -138,7 +138,7 @@ Some titles have been shortened for organizational purposes.
*Slides* - [TypeScript vs. CoffeeScript vs. ES6][] *Slides* - [TypeScript vs. CoffeeScript vs. ES6][]
[TypeScript vs. CoffeeScript vs. ES6]: http://www.slideshare.net/NeilGreen1/type-script-vs-coffeescript-vs-es6 [TypeScript vs. CoffeeScript vs. ES6]: https://www.slideshare.net/NeilGreen1/type-script-vs-coffeescript-vs-es6
## TypeScript ## TypeScript
@ -164,7 +164,7 @@ You may want to take a look first at our [Git and GitHub guide][].
*Blog* - [GeeksforGeeks][] *Blog* - [GeeksforGeeks][]
[GeeksforGeeks]: http://www.geeksforgeeks.org [GeeksforGeeks]: https://www.geeksforgeeks.org
*Book* [Introduction to Algorithms][] (*Not free!*) *Book* [Introduction to Algorithms][] (*Not free!*)
@ -172,7 +172,7 @@ You may want to take a look first at our [Git and GitHub guide][].
*Blog* - [Setosa data visualization and visual explanations][] *Blog* - [Setosa data visualization and visual explanations][]
[Setosa data visualization and visual explanations]: http://setosa.io [Setosa data visualization and visual explanations]: https://setosa.io
*Course* - [Algorithms, Part I][] *Course* - [Algorithms, Part I][]
@ -190,7 +190,7 @@ You may want to take a look first at our [Git and GitHub guide][].
*Book* - [Producing Open Source Software][] *Book* - [Producing Open Source Software][]
[Producing Open Source Software]: http://producingoss.com/en/ [Producing Open Source Software]: https://producingoss.com/en/
*Article* - [Advice on Starting And Running A New Open Source Project][] *Article* - [Advice on Starting And Running A New Open Source Project][]
@ -220,7 +220,7 @@ You may want to take a look first at our [Git and GitHub guide][].
[CodeForces][] [CodeForces][]
[CodeForces]: http://codeforces.com [CodeForces]: https://codeforces.com
[Free Code Camp][] [Free Code Camp][]
@ -238,7 +238,7 @@ You may want to take a look first at our [Git and GitHub guide][].
[MIT OpenCourseWare][] [MIT OpenCourseWare][]
[MIT OpenCourseWare]: http://ocw.mit.edu [MIT OpenCourseWare]: https://ocw.mit.edu
[Udacity][] [Udacity][]

View File

@ -45,7 +45,7 @@ to checkout your branch.
- [Gyazo GIF](https://gyazo.com/en) - [Gyazo GIF](https://gyazo.com/en)
### Windows ### Windows
- [ScreenToGif](http://www.screentogif.com) - [ScreenToGif](https://www.screentogif.com)
- [Gyazo GIF](https://gyazo.com/en) - [Gyazo GIF](https://gyazo.com/en)
- [Monosnap](https://www.monosnap.com/welcome) - [Monosnap](https://www.monosnap.com/welcome)

View File

@ -27,7 +27,7 @@ at `(venv)john@laptop:~$`:
- `(venv)` informs the user that they're currently in a virtual environment - `(venv)` informs the user that they're currently in a virtual environment
(more on [Python virtual (more on [Python virtual
environments](http://docs.python-guide.org/en/latest/dev/virtualenvs/)) environments](https://docs.python-guide.org/dev/virtualenvs/))
- the `john` before `@` is the username - the `john` before `@` is the username
- the `laptop` is the host machine name - the `laptop` is the host machine name
- the `~` after the colon informs the user they're currently in the home - the `~` after the colon informs the user they're currently in the home
@ -316,7 +316,7 @@ cases, `#!/bin/bash` or `#!/bin/sh` is used.
Frequently, you may find commands that you don't understand, or don't Frequently, you may find commands that you don't understand, or don't
know what they do. You can use `man <command>` to see the **man**ual page for know what they do. You can use `man <command>` to see the **man**ual page for
that specific command. Also, you may find useful that specific command. Also, you may find useful
[explainshell](http://explainshell.com/), a webpage that explains what most [explainshell](https://explainshell.com/), a webpage that explains what most
commands do, part by part. commands do, part by part.
Finally, [docopt](http://docopt.org/) can help you understand the syntax used Finally, [docopt](http://docopt.org/) can help you understand the syntax used
by command-line tools to describe their interface, and make sense of strings like by command-line tools to describe their interface, and make sense of strings like

View File

@ -35,7 +35,7 @@ exports.initialize_casper = function () {
// casper.start has been called. // casper.start has been called.
// Fail if we get a JavaScript error in the page's context. // Fail if we get a JavaScript error in the page's context.
// Based on the example at http://phantomjs.org/release-1.5.html // Based on the example at https://phantomjs.org/release-1.5.html
// //
// casper.on('error') doesn't work (it never gets called) so we // casper.on('error') doesn't work (it never gets called) so we
// set this at the PhantomJS level. // set this at the PhantomJS level.

View File

@ -6,7 +6,7 @@
*/ */
// Provides a few utility functions. // Provides a few utility functions.
// See https://web.archive.org/web/20200110122733if_/http://docs.casperjs.org/en/latest/modules/utils.html // See https://web.archive.org/web/20200110122733if_/https://docs.casperjs.org/en/latest/modules/utils.html
// For example, utils.dump() prints an Object with nice formatting. // For example, utils.dump() prints an Object with nice formatting.
var common = require('../casper_lib/common.js'); var common = require('../casper_lib/common.js');

View File

@ -120,7 +120,7 @@ for device in macs.values():
assert(gateway is not None) assert(gateway is not None)
# Horrible hack to route return packets on the correct interface # Horrible hack to route return packets on the correct interface
# See http://unix.stackexchange.com/a/4421/933 # See https://unix.stackexchange.com/a/4421/933
subprocess.check_call( subprocess.check_call(
['/sbin/ip', 'rule', 'add', 'fwmark', dev_num, 'table', dev_num]) ['/sbin/ip', 'rule', 'add', 'fwmark', dev_num, 'table', dev_num])
subprocess.check_call( subprocess.check_call(

View File

@ -1,7 +1,7 @@
// Convert an sRGB value in [0, 255] to a linear intensity // Convert an sRGB value in [0, 255] to a linear intensity
// value in [0, 1]. // value in [0, 1].
// //
// http://en.wikipedia.org/wiki/SRGB#The_reverse_transformation // https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation
exports.sRGB_to_linear = function (v) { exports.sRGB_to_linear = function (v) {
v = v / 255.0; v = v / 255.0;
if (v <= 0.04045) { if (v <= 0.04045) {
@ -19,7 +19,7 @@ exports.rgb_luminance = function (channel) {
// Convert luminance (photometric, CIE Y) // Convert luminance (photometric, CIE Y)
// to lightness (perceptual, CIE L*) // to lightness (perceptual, CIE L*)
// //
// http://en.wikipedia.org/wiki/Lab_color_space#Forward_transformation // https://en.wikipedia.org/wiki/Lab_color_space#Forward_transformation
exports.luminance_to_lightness = function (luminance) { exports.luminance_to_lightness = function (luminance) {
let v; let v;
if (luminance <= 216 / 24389) { if (luminance <= 216 / 24389) {

View File

@ -242,7 +242,7 @@ function handle_keyup(e) {
} }
} }
// http://stackoverflow.com/questions/3380458/looking-for-a-better-workaround-to-chrome-select-on-focus-bug // https://stackoverflow.com/questions/3380458/looking-for-a-better-workaround-to-chrome-select-on-focus-bug
function select_on_focus(field_id) { function select_on_focus(field_id) {
// A select event appears to trigger a focus event under certain // A select event appears to trigger a focus event under certain
// conditions in Chrome so we need to protect against infinite // conditions in Chrome so we need to protect against infinite

View File

@ -1,15 +1,15 @@
const util = require("./util"); const util = require("./util");
// How to determine the direction of a paragraph (P1-P3): http://www.unicode.org/reports/tr9/tr9-35.html#The_Paragraph_Level // How to determine the direction of a paragraph (P1-P3): https://www.unicode.org/reports/tr9/tr9-35.html#The_Paragraph_Level
// Embedding level: http://www.unicode.org/reports/tr9/tr9-35.html#BD2 // Embedding level: https://www.unicode.org/reports/tr9/tr9-35.html#BD2
// How to find the matching PDI for an isolation initiator: http://www.unicode.org/reports/tr9/tr9-35.html#BD9 // How to find the matching PDI for an isolation initiator: https://www.unicode.org/reports/tr9/tr9-35.html#BD9
// Bidirectional character types: http://www.unicode.org/reports/tr9/tr9-35.html#Table_Bidirectional_Character_Types // Bidirectional character types: https://www.unicode.org/reports/tr9/tr9-35.html#Table_Bidirectional_Character_Types
// Ranges data is extracted from: http://www.unicode.org/Public/9.0.0/ucd/extracted/DerivedBidiClass.txt // Ranges data is extracted from: https://www.unicode.org/Public/9.0.0/ucd/extracted/DerivedBidiClass.txt
// References: // References:
// http://www.unicode.org/reports/tr44/tr44-18.html#UnicodeData.txt // https://www.unicode.org/reports/tr44/tr44-18.html#UnicodeData.txt
// http://www.unicode.org/reports/tr44/tr44-18.html#Extracted_Properties_Table // https://www.unicode.org/reports/tr44/tr44-18.html#Extracted_Properties_Table
// http://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt // https://www.unicode.org/Public/9.0.0/ucd/UnicodeData.txt
// http://www.unicode.org/Public/9.0.0/ucd/extracted/DerivedBidiClass.txt // https://www.unicode.org/Public/9.0.0/ucd/extracted/DerivedBidiClass.txt
/** /**

View File

@ -5,7 +5,7 @@ exports.change_tab_to = function (tabname) {
$('#gear-menu a[href="' + tabname + '"]').tab('show'); $('#gear-menu a[href="' + tabname + '"]').tab('show');
}; };
// http://stackoverflow.com/questions/4233265/contenteditable-set-caret-at-the-end-of-the-text-cross-browser // https://stackoverflow.com/questions/4233265/contenteditable-set-caret-at-the-end-of-the-text-cross-browser
exports.place_caret_at_end = function (el) { exports.place_caret_at_end = function (el) {
el.focus(); el.focus();

View File

@ -199,7 +199,7 @@
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
vertical-align: bottom; /* See http://stackoverflow.com/a/43266155/ */ vertical-align: bottom; /* See https://stackoverflow.com/a/43266155/ */
padding: 3px 10px; padding: 3px 10px;
background-color: hsl(0, 0%, 100%); background-color: hsl(0, 0%, 100%);
cursor: pointer; cursor: pointer;

View File

@ -3,7 +3,7 @@
{{#if should_display_edit_and_view_source}} {{#if should_display_edit_and_view_source}}
<li> <li>
<a href="#" class="popover_edit_message" data-message-id="{{message_id}}"> <a href="#" class="popover_edit_message" data-message-id="{{message_id}}">
{{! Can consider http://fontawesome.io/icon/file-code-o/ when we upgrade to font awesome 4.}} {{! Can consider https://fontawesome.com/v4.7.0/icon/file-code-o when we upgrade to font awesome 4.}}
<i class="{{#if use_edit_icon}}fa fa-pencil{{else}}fa fa-file-text-o{{/if}}" aria-hidden="true"></i> {{editability_menu_item}} <i class="{{#if use_edit_icon}}fa fa-pencil{{else}}fa fa-file-text-o{{/if}}" aria-hidden="true"></i> {{editability_menu_item}}
</a> </a>
</li> </li>

View File

@ -61,7 +61,7 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td>:heart: (and <a href="http://www.emoji-cheat-sheet.com/" target="_blank">many others</a>, from the <a href="https://code.google.com/p/noto/" target="_blank">Noto Project</a>)</td> <td>:heart: (and <a href="https://www.webfx.com/tools/emoji-cheat-sheet/" target="_blank">many others</a>, from the <a href="https://code.google.com/p/noto/" target="_blank">Noto Project</a>)</td>
<td class="rendered_markdown"><img alt=":heart:" class="emoji" src="/static/generated/emoji/images/emoji/heart.png" title=":heart:" /></td> <td class="rendered_markdown"><img alt=":heart:" class="emoji" src="/static/generated/emoji/images/emoji/heart.png" title=":heart:" /></td>
</tr> </tr>
<tr> <tr>
@ -113,7 +113,7 @@ def zulip():
</tr> </tr>
<tr> <tr>
<td colspan="2">{% trans %}To add syntax highlighting to a multi-line code block, <td colspan="2">{% trans %}To add syntax highlighting to a multi-line code block,
add the language's <b>first</b> <a target="_blank" href="http://pygments.org/docs/lexers/">Pygments short name</a> add the language's <b>first</b> <a target="_blank" href="https://pygments.org/docs/lexers/">Pygments short name</a>
after the first set of back-ticks. after the first set of back-ticks.
You can also make a code block by indenting each line with 4 spaces.{% endtrans %}</td> You can also make a code block by indenting each line with 4 spaces.{% endtrans %}</td>
</tr> </tr>

View File

@ -60,7 +60,7 @@
<div id="third-party-apps"> <div id="third-party-apps">
Zulip also works great in pinned browser tabs and Zulip also works great in pinned browser tabs and
multi-protocol desktop chat apps multi-protocol desktop chat apps
like <a href="http://rambox.pro">Rambox</a> like <a href="https://rambox.pro">Rambox</a>
and <a href="https://meetfranz.com">Franz</a>. and <a href="https://meetfranz.com">Franz</a>.
</div> </div>
</div> </div>

View File

@ -108,7 +108,7 @@ You can also use `~~~` to start codeblocks, or just indent the code 4 or more sp
Zulip supports syntax highlighting for hundreds of languages, and a Zulip supports syntax highlighting for hundreds of languages, and a
typeahead will pop up when you start typing after the ` ``` `. If you can't typeahead will pop up when you start typing after the ` ``` `. If you can't
find your language, search for it [here](http://pygments.org/docs/lexers) find your language, search for it [here](https://pygments.org/docs/lexers/)
and try the **short names** listed for the lexers for your language. and try the **short names** listed for the lexers for your language.
## Latex ## Latex

View File

@ -4,7 +4,7 @@ At present, there are a few alpha-quality implementations of a terminal
client for Zulip: client for Zulip:
* [Zulip Terminal](https://github.com/zulip/zulip-terminal) provides a * [Zulip Terminal](https://github.com/zulip/zulip-terminal) provides a
terminal interface for Zulip using [Urwid](https://urwid.org). It is terminal interface for Zulip using [Urwid](http://urwid.org). It is
written in python and is being very actively developed; feedback and written in python and is being very actively developed; feedback and
bug reports are very welcome! bug reports are very welcome!

View File

@ -34,7 +34,7 @@ creating that file.
at a different time. See [Capistrano's Before/After Hooks page][1] at a different time. See [Capistrano's Before/After Hooks page][1]
for more information! for more information!
[1]: http://capistranorb.com/documentation/getting-started/before-after/ [1]: https://capistranorb.com/documentation/getting-started/before-after/
{!congrats.md!} {!congrats.md!}

View File

@ -1,6 +1,6 @@
Run your favorite chatbot in Zulip! Run your favorite chatbot in Zulip!
0. [Install errbot](http://errbot.io/en/latest/user_guide/setup.html) 0. [Install errbot](https://errbot.readthedocs.io/en/latest/user_guide/setup.html)
and follow to instructions to setup a `config.py`. and follow to instructions to setup a `config.py`.
0. Check our our [Errbot integration package for Zulip](https://github.com/zulip/errbot-backend-zulip) 0. Check our our [Errbot integration package for Zulip](https://github.com/zulip/errbot-backend-zulip)
@ -37,7 +37,7 @@ Run your favorite chatbot in Zulip!
Sections you need to edit are marked with `<>`. Sections you need to edit are marked with `<>`.
7. [Start ErrBot](http://errbot.io/en/latest/user_guide/setup.html#starting-the-daemon). 7. [Start ErrBot](https://errbot.readthedocs.io/en/latest/user_guide/setup.html#starting-the-daemon).
{!congrats.md!} {!congrats.md!}

View File

@ -52,7 +52,7 @@ notifications:
web_url = "http://hg.example.com:8000/" web_url = "http://hg.example.com:8000/"
site = {{ api_url }} site = {{ api_url }}
[1]: http://mercurial.selenic.com/wiki/QuickStart#Network_support [1]: https://www.mercurial-scm.org/wiki/QuickStart#Network_support
#### Branch whitelists and blacklists #### Branch whitelists and blacklists

View File

@ -52,7 +52,7 @@ using the `Send custom service notification` command in the
`Service Commands` section of any individual services page `Service Commands` section of any individual services page
on your Nagios instance. on your Nagios instance.
[1]: http://nagios.sourceforge.net/docs/3_0/extcommands.html [1]: https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/extcommands.html
**Troubleshooting** **Troubleshooting**

View File

@ -2,7 +2,7 @@ Zulip supports integration with Perforce as a [trigger][1]
that fires once a changelist is submitted and committed. that fires once a changelist is submitted and committed.
To do this: To do this:
[1]: http://www.perforce.com/perforce/doc.current/manuals/p4sag/chapter.scripting.html [1]: https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.scripting.html
{!download-python-bindings.md!} {!download-python-bindings.md!}
@ -21,7 +21,7 @@ something like the following:
notify_zulip change-commit //depot/... "/usr/local/share/zulip/integrations/perforce/zulip_change-commit.py %change% %changeroot%" notify_zulip change-commit //depot/... "/usr/local/share/zulip/integrations/perforce/zulip_change-commit.py %change% %changeroot%"
[2]: http://www.perforce.com/perforce/doc.current/manuals/p4sag/chapter.scripting.html#d0e14583 [2]: https://www.perforce.com/manuals/p4sag/Content/P4SAG/chapter.scripting.html#d0e14583
By default, this hook will send to streams of the form By default, this hook will send to streams of the form
`depot_subdirectory-commits`. So, a changelist that modifies `depot_subdirectory-commits`. So, a changelist that modifies

View File

@ -55,5 +55,5 @@ project's **Settings** page, and select the **Zulip** tab.
![](/static/images/integrations/redmine/001.png) ![](/static/images/integrations/redmine/001.png)
[1]: http://www.redmine.org/projects/redmine/wiki/Plugins [1]: https://www.redmine.org/projects/redmine/wiki/Plugins
[2]: https://github.com/zulip/zulip-redmine-plugin [2]: https://github.com/zulip/zulip-redmine-plugin

View File

@ -543,7 +543,7 @@ css_rules = RuleList(
'description': "Missing whitespace before '{' in CSS.", 'description': "Missing whitespace before '{' in CSS.",
'good_lines': ["input {", "body {"], 'good_lines': ["input {", "body {"],
'bad_lines': ["input{", "body{"]}, 'bad_lines': ["input{", "body{"]},
{'pattern': 'https://', {'pattern': r'^(?:(?!/\*).)*https?://',
'description': "Zulip CSS should have no dependencies on external resources", 'description': "Zulip CSS should have no dependencies on external resources",
'good_lines': ['background: url(/static/images/landing-page/pycon.jpg);'], 'good_lines': ['background: url(/static/images/landing-page/pycon.jpg);'],
'bad_lines': ['background: url(https://example.com/image.png);']}, 'bad_lines': ['background: url(https://example.com/image.png);']},

View File

@ -113,7 +113,7 @@ EMOJI_NAME_MAPS = {
'1f925': {'canonical_name': 'lying', 'aliases': []}, '1f925': {'canonical_name': 'lying', 'aliases': []},
# seems like best emoji for nervous/anxious # seems like best emoji for nervous/anxious
'1f62c': {'canonical_name': 'grimacing', 'aliases': ['nervous', 'anxious']}, '1f62c': {'canonical_name': 'grimacing', 'aliases': ['nervous', 'anxious']},
# zip_it from http://mashable.com/2015/10/23/ios-9-1-emoji-guide, # zip_it from https://mashable.com/2015/10/23/ios-9-1-emoji-guide/,
# lips_sealed from https://emojipedia.org/zipper-mouth-face/, rest seemed # lips_sealed from https://emojipedia.org/zipper-mouth-face/, rest seemed
# like reasonable additions # like reasonable additions
'1f910': {'canonical_name': 'silence', 'aliases': ['quiet', 'hush', 'zip_it', 'lips_are_sealed']}, '1f910': {'canonical_name': 'silence', 'aliases': ['quiet', 'hush', 'zip_it', 'lips_are_sealed']},
@ -122,7 +122,7 @@ EMOJI_NAME_MAPS = {
'1f927': {'canonical_name': 'sneezing', 'aliases': []}, '1f927': {'canonical_name': 'sneezing', 'aliases': []},
# cant_talk from https://beebom.com/emoji-meanings/ # cant_talk from https://beebom.com/emoji-meanings/
'1f637': {'canonical_name': 'cant_talk', 'aliases': ['mask']}, '1f637': {'canonical_name': 'cant_talk', 'aliases': ['mask']},
# flu from http://mashable.com/2015/10/23/ios-9-1-emoji-guide, sick from # flu from https://mashable.com/2015/10/23/ios-9-1-emoji-guide/, sick from
# https://emojipedia.org/face-with-thermometer/, face_with_thermometer so # https://emojipedia.org/face-with-thermometer/, face_with_thermometer so
# it shows up in typeahead (thermometer taken by Objects/82) # it shows up in typeahead (thermometer taken by Objects/82)
'1f912': {'canonical_name': 'sick', 'aliases': ['flu', 'face_with_thermometer', 'ill', 'fever']}, '1f912': {'canonical_name': 'sick', 'aliases': ['flu', 'face_with_thermometer', 'ill', 'fever']},
@ -205,7 +205,7 @@ EMOJI_NAME_MAPS = {
# seems like best emoji for high_five, raised_hand_with_fingers_splayed # seems like best emoji for high_five, raised_hand_with_fingers_splayed
# doesn't seem that useful # doesn't seem that useful
'1f590': {'canonical_name': 'high_five', 'aliases': ['palm']}, '1f590': {'canonical_name': 'high_five', 'aliases': ['palm']},
# http://mashable.com/2015/10/23/ios-9-1-emoji-guide # https://mashable.com/2015/10/23/ios-9-1-emoji-guide/
'1f596': {'canonical_name': 'spock', 'aliases': ['live_long_and_prosper']}, '1f596': {'canonical_name': 'spock', 'aliases': ['live_long_and_prosper']},
# People/119 is a better 'hi', but 'hi' will never show up in the typeahead # People/119 is a better 'hi', but 'hi' will never show up in the typeahead
# due to 'high_five' # due to 'high_five'
@ -259,7 +259,7 @@ EMOJI_NAME_MAPS = {
'1f477': {'canonical_name': 'construction_worker', 'aliases': []}, '1f477': {'canonical_name': 'construction_worker', 'aliases': []},
'1f482': {'canonical_name': 'guard', 'aliases': []}, '1f482': {'canonical_name': 'guard', 'aliases': []},
# detective from gemoji, sneaky from # detective from gemoji, sneaky from
# http://mashable.com/2015/10/23/ios-9-1-emoji-guide/, agent seems a # https://mashable.com/2015/10/23/ios-9-1-emoji-guide/, agent seems a
# reasonable addition # reasonable addition
'1f575': {'canonical_name': 'detective', 'aliases': ['spy', 'sleuth', 'agent', 'sneaky']}, '1f575': {'canonical_name': 'detective', 'aliases': ['spy', 'sleuth', 'agent', 'sneaky']},
# mrs_claus from https://emojipedia.org/mother-christmas/ # mrs_claus from https://emojipedia.org/mother-christmas/
@ -327,7 +327,7 @@ EMOJI_NAME_MAPS = {
# king and queen seem like good additions # king and queen seem like good additions
'1f451': {'canonical_name': 'crown', 'aliases': ['queen', 'king']}, '1f451': {'canonical_name': 'crown', 'aliases': ['queen', 'king']},
# safety and invincibility inspired by # safety and invincibility inspired by
# http://mashable.com/2015/10/23/ios-9-1-emoji-guide. hard_hat and # https://mashable.com/2015/10/23/ios-9-1-emoji-guide/. hard_hat and
# rescue_worker seem like good additions # rescue_worker seem like good additions
'26d1': {'canonical_name': 'helmet', 'aliases': ['hard_hat', 'rescue_worker', 'safety_first', 'invincible']}, # ignorelongline '26d1': {'canonical_name': 'helmet', 'aliases': ['hard_hat', 'rescue_worker', 'safety_first', 'invincible']}, # ignorelongline
# backpack from gemoji, dominates satchel on google trends # backpack from gemoji, dominates satchel on google trends
@ -377,7 +377,7 @@ EMOJI_NAME_MAPS = {
'1f426': {'canonical_name': 'bird', 'aliases': []}, '1f426': {'canonical_name': 'bird', 'aliases': []},
'1f424': {'canonical_name': 'chick', 'aliases': ['baby_chick']}, '1f424': {'canonical_name': 'chick', 'aliases': ['baby_chick']},
'1f423': {'canonical_name': 'hatching', 'aliases': ['hatching_chick']}, '1f423': {'canonical_name': 'hatching', 'aliases': ['hatching_chick']},
# http://www.iemoji.com/view/emoji/668/animals-nature/front-facing-baby-chick # https://www.iemoji.com/view/emoji/668/animals-nature/front-facing-baby-chick
'1f425': {'canonical_name': 'new_baby', 'aliases': []}, '1f425': {'canonical_name': 'new_baby', 'aliases': []},
'1f986': {'canonical_name': 'duck', 'aliases': []}, '1f986': {'canonical_name': 'duck', 'aliases': []},
'1f985': {'canonical_name': 'eagle', 'aliases': []}, '1f985': {'canonical_name': 'eagle', 'aliases': []},
@ -752,7 +752,7 @@ EMOJI_NAME_MAPS = {
'1f3c7': {'canonical_name': 'horse_racing', 'aliases': ['horse_riding']}, '1f3c7': {'canonical_name': 'horse_racing', 'aliases': ['horse_riding']},
# at least in the US: this = cyclist, Activity/53 = mountain biker, and # at least in the US: this = cyclist, Activity/53 = mountain biker, and
# motorcyclist = biker. Mainly from googling around and personal # motorcyclist = biker. Mainly from googling around and personal
# experience. E.g. http://grammarist.com/usage/cyclist-biker/ for cyclist # experience. E.g. https://grammarist.com/usage/cyclist-biker/ for cyclist
# and biker, # and biker,
# https://www.theguardian.com/lifeandstyle/2010/oct/24/bike-snobs-guide-cycling-tribes # https://www.theguardian.com/lifeandstyle/2010/oct/24/bike-snobs-guide-cycling-tribes
# for mountain biker (I've never heard the term "mountain cyclist", and # for mountain biker (I've never heard the term "mountain cyclist", and
@ -914,7 +914,7 @@ EMOJI_NAME_MAPS = {
'1f6a6': {'canonical_name': 'traffic_light', 'aliases': ['vertical_traffic_light']}, '1f6a6': {'canonical_name': 'traffic_light', 'aliases': ['vertical_traffic_light']},
# see Places/57 # see Places/57
'1f6a5': {'canonical_name': 'horizontal_traffic_light', 'aliases': []}, '1f6a5': {'canonical_name': 'horizontal_traffic_light', 'aliases': []},
# road_trip from http://mashable.com/2015/10/23/ios-9-1-emoji-guide # road_trip from https://mashable.com/2015/10/23/ios-9-1-emoji-guide/
'1f5fa': {'canonical_name': 'map', 'aliases': ['world_map', 'road_trip']}, '1f5fa': {'canonical_name': 'map', 'aliases': ['world_map', 'road_trip']},
# rock_carving, statue, and tower seem more general and less culturally # rock_carving, statue, and tower seem more general and less culturally
# specific, for Places/60, 61, and 63. # specific, for Places/60, 61, and 63.
@ -1019,7 +1019,7 @@ EMOJI_NAME_MAPS = {
# vise seems like a reasonable addition # vise seems like a reasonable addition
'1f5dc': {'canonical_name': 'compression', 'aliases': ['vise']}, '1f5dc': {'canonical_name': 'compression', 'aliases': ['vise']},
# gold record seems more useful, idea came from # gold record seems more useful, idea came from
# http://www.11points.com/Web-Tech/11_Emoji_With_Different_Meanings_Than_You_Think # https://11points.com/11-emoji-different-meanings-think/
'1f4bd': {'canonical_name': 'gold_record', 'aliases': ['minidisc']}, '1f4bd': {'canonical_name': 'gold_record', 'aliases': ['minidisc']},
'1f4be': {'canonical_name': 'floppy_disk', 'aliases': []}, '1f4be': {'canonical_name': 'floppy_disk', 'aliases': []},
'1f4bf': {'canonical_name': 'cd', 'aliases': []}, '1f4bf': {'canonical_name': 'cd', 'aliases': []},
@ -1065,7 +1065,7 @@ EMOJI_NAME_MAPS = {
'1f56f': {'canonical_name': 'candle', 'aliases': []}, '1f56f': {'canonical_name': 'candle', 'aliases': []},
# seems like a reasonable addition # seems like a reasonable addition
'1f5d1': {'canonical_name': 'wastebasket', 'aliases': ['trash_can']}, '1f5d1': {'canonical_name': 'wastebasket', 'aliases': ['trash_can']},
# http://www.iemoji.com/view/emoji/1173/objects/oil-drum # https://www.iemoji.com/view/emoji/1173/objects/oil-drum
'1f6e2': {'canonical_name': 'oil_drum', 'aliases': ['commodities']}, '1f6e2': {'canonical_name': 'oil_drum', 'aliases': ['commodities']},
# losing money from https://emojipedia.org/money-with-wings/, # losing money from https://emojipedia.org/money-with-wings/,
# easy_come_easy_go seems like a reasonable addition # easy_come_easy_go seems like a reasonable addition
@ -1095,10 +1095,10 @@ EMOJI_NAME_MAPS = {
'26d3': {'canonical_name': 'chains', 'aliases': []}, '26d3': {'canonical_name': 'chains', 'aliases': []},
'1f52b': {'canonical_name': 'gun', 'aliases': []}, '1f52b': {'canonical_name': 'gun', 'aliases': []},
'1f4a3': {'canonical_name': 'bomb', 'aliases': []}, '1f4a3': {'canonical_name': 'bomb', 'aliases': []},
# betrayed from http://www.iemoji.com/view/emoji/786/objects/kitchen-knife # betrayed from https://www.iemoji.com/view/emoji/786/objects/kitchen-knife
'1f52a': {'canonical_name': 'knife', 'aliases': ['hocho', 'betrayed']}, '1f52a': {'canonical_name': 'knife', 'aliases': ['hocho', 'betrayed']},
# rated_for_violence from # rated_for_violence from
# http://www.iemoji.com/view/emoji/1085/objects/dagger. hate (also # https://www.iemoji.com/view/emoji/1085/objects/dagger. hate (also
# suggested there) seems too strong, as does just "violence". # suggested there) seems too strong, as does just "violence".
'1f5e1': {'canonical_name': 'dagger', 'aliases': ['rated_for_violence']}, '1f5e1': {'canonical_name': 'dagger', 'aliases': ['rated_for_violence']},
'2694': {'canonical_name': 'duel', 'aliases': ['swords']}, '2694': {'canonical_name': 'duel', 'aliases': ['swords']},
@ -1115,7 +1115,7 @@ EMOJI_NAME_MAPS = {
'2697': {'canonical_name': 'alchemy', 'aliases': ['alembic']}, '2697': {'canonical_name': 'alchemy', 'aliases': ['alembic']},
'1f52d': {'canonical_name': 'telescope', 'aliases': []}, '1f52d': {'canonical_name': 'telescope', 'aliases': []},
# science seems useful to have. scientist inspired by # science seems useful to have. scientist inspired by
# http://www.iemoji.com/view/emoji/787/objects/microscope # https://www.iemoji.com/view/emoji/787/objects/microscope
'1f52c': {'canonical_name': 'science', 'aliases': ['microscope', 'scientist']}, '1f52c': {'canonical_name': 'science', 'aliases': ['microscope', 'scientist']},
'1f573': {'canonical_name': 'hole', 'aliases': []}, '1f573': {'canonical_name': 'hole', 'aliases': []},
'1f48a': {'canonical_name': 'medicine', 'aliases': ['pill']}, '1f48a': {'canonical_name': 'medicine', 'aliases': ['pill']},
@ -1127,11 +1127,11 @@ EMOJI_NAME_MAPS = {
'1f6c1': {'canonical_name': 'bathtub', 'aliases': []}, '1f6c1': {'canonical_name': 'bathtub', 'aliases': []},
'1f6c0': {'canonical_name': 'bath', 'aliases': []}, '1f6c0': {'canonical_name': 'bath', 'aliases': []},
# reception and services from # reception and services from
# http://www.iemoji.com/view/emoji/1169/objects/bellhop-bell # https://www.iemoji.com/view/emoji/1169/objects/bellhop-bell
'1f6ce': {'canonical_name': 'bellhop_bell', 'aliases': ['reception', 'services', 'ding']}, '1f6ce': {'canonical_name': 'bellhop_bell', 'aliases': ['reception', 'services', 'ding']},
'1f511': {'canonical_name': 'key', 'aliases': []}, '1f511': {'canonical_name': 'key', 'aliases': []},
# encrypted from http://www.iemoji.com/view/emoji/1081/objects/old-key, # encrypted from https://www.iemoji.com/view/emoji/1081/objects/old-key,
# secret from http://mashable.com/2015/10/23/ios-9-1-emoji-guide # secret from https://mashable.com/2015/10/23/ios-9-1-emoji-guide/
'1f5dd': {'canonical_name': 'secret', 'aliases': ['dungeon', 'old_key', 'encrypted', 'clue', 'hint']}, '1f5dd': {'canonical_name': 'secret', 'aliases': ['dungeon', 'old_key', 'encrypted', 'clue', 'hint']},
'1f6aa': {'canonical_name': 'door', 'aliases': []}, '1f6aa': {'canonical_name': 'door', 'aliases': []},
'1f6cb': {'canonical_name': 'living_room', 'aliases': ['furniture', 'couch_and_lamp', 'lifestyles']}, '1f6cb': {'canonical_name': 'living_room', 'aliases': ['furniture', 'couch_and_lamp', 'lifestyles']},
@ -1210,7 +1210,7 @@ EMOJI_NAME_MAPS = {
'1f516': {'canonical_name': 'bookmark', 'aliases': []}, '1f516': {'canonical_name': 'bookmark', 'aliases': []},
'1f517': {'canonical_name': 'link', 'aliases': []}, '1f517': {'canonical_name': 'link', 'aliases': []},
'1f4ce': {'canonical_name': 'paperclip', 'aliases': ['attachment']}, '1f4ce': {'canonical_name': 'paperclip', 'aliases': ['attachment']},
# office_supplies from http://mashable.com/2015/10/23/ios-9-1-emoji-guide # office_supplies from https://mashable.com/2015/10/23/ios-9-1-emoji-guide/
'1f587': {'canonical_name': 'office_supplies', 'aliases': ['paperclip_chain', 'linked']}, '1f587': {'canonical_name': 'office_supplies', 'aliases': ['paperclip_chain', 'linked']},
'1f4d0': {'canonical_name': 'carpenter_square', 'aliases': ['triangular_ruler']}, '1f4d0': {'canonical_name': 'carpenter_square', 'aliases': ['triangular_ruler']},
'1f4cf': {'canonical_name': 'ruler', 'aliases': ['straightedge']}, '1f4cf': {'canonical_name': 'ruler', 'aliases': ['straightedge']},

View File

@ -257,7 +257,7 @@ def list_of_tlds() -> List[str]:
# HACK we manually blacklist a few domains # HACK we manually blacklist a few domains
blacklist = ['PY\n', "MD\n"] blacklist = ['PY\n', "MD\n"]
# tlds-alpha-by-domain.txt comes from http://data.iana.org/TLD/tlds-alpha-by-domain.txt # tlds-alpha-by-domain.txt comes from https://data.iana.org/TLD/tlds-alpha-by-domain.txt
tlds_file = os.path.join(os.path.dirname(__file__), 'tlds-alpha-by-domain.txt') tlds_file = os.path.join(os.path.dirname(__file__), 'tlds-alpha-by-domain.txt')
tlds = [tld.lower().strip() for tld in open(tlds_file, 'r') tlds = [tld.lower().strip() for tld in open(tlds_file, 'r')
if tld not in blacklist and not tld[0].startswith('#')] if tld not in blacklist and not tld[0].startswith('#')]
@ -664,7 +664,7 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor):
if parsed_url.netloc == 'pasteboard.co': if parsed_url.netloc == 'pasteboard.co':
return False return False
# List from http://support.google.com/chromeos/bin/answer.py?hl=en&answer=183093 # List from https://support.google.com/chromeos/bin/answer.py?hl=en&answer=183093
for ext in [".bmp", ".gif", ".jpg", "jpeg", ".png", ".webp"]: for ext in [".bmp", ".gif", ".jpg", "jpeg", ".png", ".webp"]:
if parsed_url.path.lower().endswith(ext): if parsed_url.path.lower().endswith(ext):
return True return True
@ -735,7 +735,7 @@ class InlineInterestingLinkProcessor(markdown.treeprocessors.Treeprocessor):
def youtube_id(self, url: str) -> Optional[str]: def youtube_id(self, url: str) -> Optional[str]:
if not self.markdown.image_preview_enabled: if not self.markdown.image_preview_enabled:
return None return None
# Youtube video id extraction regular expression from http://pastebin.com/KyKAFv1s # Youtube video id extraction regular expression from https://pastebin.com/KyKAFv1s
# Slightly modified to support URLs of the forms # Slightly modified to support URLs of the forms
# - youtu.be/<id> # - youtu.be/<id>
# - youtube.com/playlist?v=<id>&list=<list-id> # - youtube.com/playlist?v=<id>&list=<list-id>

View File

@ -133,7 +133,7 @@ def der_encode_ticket(tkt: Dict[str, Any]) -> bytes:
base64.b64decode(tkt["encPart"]["cipher"]))])])) base64.b64decode(tkt["encPart"]["cipher"]))])]))
# Kerberos ccache writing code. Using format documentation from here: # Kerberos ccache writing code. Using format documentation from here:
# http://www.gnu.org/software/shishi/manual/html_node/The-Credential-Cache-Binary-File-Format.html # https://www.gnu.org/software/shishi/manual/html_node/The-Credential-Cache-Binary-File-Format.html
def ccache_counted_octet_string(data: bytes) -> bytes: def ccache_counted_octet_string(data: bytes) -> bytes:
if not isinstance(data, bytes): if not isinstance(data, bytes):

View File

@ -16,7 +16,7 @@ from typing import Optional
logger = logging.getLogger('zulip.debug') logger = logging.getLogger('zulip.debug')
# Interactive debugging code from # Interactive debugging code from
# http://stackoverflow.com/questions/132058/showing-the-stack-trace-from-a-running-python-application # https://stackoverflow.com/questions/132058/showing-the-stack-trace-from-a-running-python-application
# (that link also points to code for an interactive remote debugger # (that link also points to code for an interactive remote debugger
# setup, which we might want if we move Tornado to run in a daemon # setup, which we might want if we move Tornado to run in a daemon
# rather than via screen). # rather than via screen).

View File

@ -43,7 +43,7 @@ ZULIP_RESERVED_SUBDOMAINS = frozenset([
# Most of this list was curated from the following sources: # Most of this list was curated from the following sources:
# http://wiki.dwscoalition.org/notes/List_of_reserved_subdomains (license: CC-BY-SA 3.0) # http://wiki.dwscoalition.org/notes/List_of_reserved_subdomains (license: CC-BY-SA 3.0)
# http://stackoverflow.com/questions/11868191/which-saas-subdomains-to-block (license: CC-BY-SA 2.5) # https://stackoverflow.com/questions/11868191/which-saas-subdomains-to-block (license: CC-BY-SA 2.5)
GENERIC_RESERVED_SUBDOMAINS = frozenset([ GENERIC_RESERVED_SUBDOMAINS = frozenset([
'about', 'abuse', 'account', 'ad', 'admanager', 'admin', 'admindashboard', 'about', 'abuse', 'account', 'ad', 'admanager', 'admin', 'admindashboard',
'administrator', 'adsense', 'adword', 'affiliate', 'alpha', 'anonymous', 'administrator', 'adsense', 'adword', 'affiliate', 'alpha', 'anonymous',

View File

@ -291,7 +291,7 @@ def send_android_push_notification(devices: List[DeviceToken], data: Dict[str, A
# res.canonical will contain results when there are duplicate registrations for the same # res.canonical will contain results when there are duplicate registrations for the same
# device. The "canonical" registration is the latest registration made by the device. # device. The "canonical" registration is the latest registration made by the device.
# Ref: http://developer.android.com/google/gcm/adv.html#canonical # Ref: https://developer.android.com/google/gcm/adv.html#canonical
if 'canonical' in res: if 'canonical' in res:
for reg_id, new_reg_id in res['canonical'].items(): for reg_id, new_reg_id in res['canonical'].items():
if reg_id == new_reg_id: if reg_id == new_reg_id:

View File

@ -16,7 +16,7 @@ import redis
import time import time
# Implement a rate-limiting scheme inspired by the one described here, but heavily modified # Implement a rate-limiting scheme inspired by the one described here, but heavily modified
# http://blog.domaintools.com/2013/04/rate-limiting-with-redis/ # https://www.domaintools.com/resources/blog/rate-limiting-with-redis
client = get_redis_client() client = get_redis_client()
rules = settings.RATE_LIMITING_RULES # type: Dict[str, List[Tuple[int, int]]] rules = settings.RATE_LIMITING_RULES # type: Dict[str, List[Tuple[int, int]]]

View File

@ -7,7 +7,7 @@ import time
import ctypes import ctypes
import threading import threading
# Based on http://code.activestate.com/recipes/483752/ # Based on https://code.activestate.com/recipes/483752/
class TimeoutExpired(Exception): class TimeoutExpired(Exception):
'''Exception raised when a function times out.''' '''Exception raised when a function times out.'''
@ -71,7 +71,7 @@ def timeout(timeout: float, func: Callable[..., ResultT], *args: Any, **kwargs:
if thread.is_alive(): if thread.is_alive():
# Gamely try to kill the thread, following the dodgy approach from # Gamely try to kill the thread, following the dodgy approach from
# http://stackoverflow.com/a/325528/90777 # https://stackoverflow.com/a/325528/90777
# #
# We need to retry, because an async exception received while the # We need to retry, because an async exception received while the
# thread is in a system call is simply ignored. # thread is in a system call is simply ignored.
@ -84,7 +84,7 @@ def timeout(timeout: float, func: Callable[..., ResultT], *args: Any, **kwargs:
if thread.exc_info: if thread.exc_info:
# Raise the original stack trace so our error messages are more useful. # Raise the original stack trace so our error messages are more useful.
# from http://stackoverflow.com/a/4785766/90777 # from https://stackoverflow.com/a/4785766/90777
six.reraise(thread.exc_info[0], thread.exc_info[1], thread.exc_info[2]) six.reraise(thread.exc_info[0], thread.exc_info[1], thread.exc_info[2])
assert thread.result is not None # assured if above did not reraise assert thread.result is not None # assured if above did not reraise
return thread.result return thread.result

View File

@ -263,7 +263,7 @@ class ZulipUploadBackend:
def get_bucket(conn: S3Connection, bucket_name: str) -> Bucket: def get_bucket(conn: S3Connection, bucket_name: str) -> Bucket:
# Calling get_bucket() with validate=True can apparently lead # Calling get_bucket() with validate=True can apparently lead
# to expensive S3 bills: # to expensive S3 bills:
# http://www.appneta.com/blog/s3-list-get-bucket-default/ # https://www.appneta.com/blog/s3-list-get-bucket-default/
# The benefits of validation aren't completely clear to us, and # The benefits of validation aren't completely clear to us, and
# we want to save on our bills, so we set the validate flag to False. # we want to save on our bills, so we set the validate flag to False.
# (We think setting validate to True would cause us to fail faster # (We think setting validate to True would cause us to fail faster

View File

@ -25,7 +25,7 @@ unfortunately isn't extensible, so we can:
We are currently doing that last thing. It turns out there we are lucky We are currently doing that last thing. It turns out there we are lucky
for once: It's simply a matter of extending two regular expressions. for once: It's simply a matter of extending two regular expressions.
Credit for the approach goes to: Credit for the approach goes to:
http://stackoverflow.com/questions/2090717 https://stackoverflow.com/questions/2090717
""" """
import glob import glob

View File

@ -7,7 +7,7 @@
# This file contains the Swagger UI configuration and API definitions # This file contains the Swagger UI configuration and API definitions
# for the Zulip REST API. # for the Zulip REST API.
# #
# For details on the Swagger/OpenAPI specification, see http://swagger.io/specification # For details on the Swagger/OpenAPI specification, see https://swagger.io/specification
# #
# Our own documentation lives at # Our own documentation lives at
# #

View File

@ -1,6 +1,6 @@
# This file contains the API definitions for the Zulip REST API. # This file contains the API definitions for the Zulip REST API.
# #
# For details on the OpenAPI specification, see http://swagger.io/specification # For details on the OpenAPI specification, see https://swagger.io/specification
# #
# Our own documentation lives at # Our own documentation lives at
# #

View File

@ -115,7 +115,7 @@ MANAGERS = ADMINS
######################################################################## ########################################################################
# Local time zone for this installation. Choices can be found here: # Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # https://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems. # although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone. # In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'UTC' TIME_ZONE = 'UTC'