Matlab can adjust for
HiDPI (2K, 4K, etc.) displays.
HiDPI Matlab IDE resolution (icon and font size) can be manually corrected from within Matlab on any operating system.
Matlab has programmatic DPI access to get / set information on DPI as well as numerous other Matlab characteristics via
settings.
This is a basic example of using FORD to document Fortran projects.
FORD is a Python program:
pip install ford
Each project will have a ford.md that configures and makes description for the main project landing page.
If your code is all under the top-level directory, set ford.md like: (this example is for the fortran2018-examples repo)
src_dir: ./
output_dir: ./docs
project: Fortran 2018 examples
project_github: https://github.com/scivision/fortran2018-examples
project_website: https://scivision.github.io/fortran2018-examples
summary: Fortran 2018 examples
author: Jane Doe
author_description: SciVision, Inc.
github: https://github.com/scivision
license: by
exclude: CMakeFortranCompilerId.F
display: public
protected
private
source: false
graph: true
search: true
Put Markdown test of arbitrary length here.
Within the Fortran code, use `!!` on each line with Markdown, Latex, etc.
Never assume that eager or short-circuit evaluation of logical statements will occur in Fortran.
Fortran standards from Fortran I (1957) through Fortran 2018 do not mandate or prohibit
short-circuit logic.
That has resulted in some compilers (e.g. Gfortran) sometimes using short-circuit logic, while other compilers (e.g. Intel) do not use short circuit logic.
This causes breakage when the programmer tests with one Fortran compiler handles compound logic with eager evaluation, but other compiler uses short-circuit evaluation.
Compilers not short-circuiting (standard Fortran behavior):
Gfortran -O0
NAG
Intel
Short circuiting (non-standard behavior)
Gfortran -O1 or higher
Proper handling of compound logic in Fortran: one should carefully avoid assumptions that either eager or short-circuit evaluation of compound logical statements will occur, because neither is guaranteed by any Fortran standard.
Assuming eager evaluation of Fortran logical statements, this can cause breakage where a function that’s part of the statement has side effects.
For example, a function that modifies a module variable, or simply an intent(inout) variable will find those variables unmodified if a compiler uses short-circuit logic.
Fix: break up the compound if statement so that the function is always evaluated (e.g. just before the if statement).
Assumptions that short circuit evaluation occurs commonly causes breakage of present(arg) for optional :: arg optional dummy arguments.
subroutinemyfun(a,b)real,intent(inout)::areal,intent(in),optional::b! don't do this!
if(present(b).and.b<0)a=b*a! instead, do this:
ifpresent(b)thenif(b<0)a=b*aendif
OpenMPI is often available from package managers across computing platforms.
Users might build OpenMPI from source to get the latest version or to support other compilers.
OpenMPI takes several minutes to build.
The October 2018 day-long GitHub outage led many to consider having a live backup of their Git repos.
Multi-remote git push is intrinsic to Git itself.
Thus, automatic multi-site pushes are easy to configure for an arbitrarily large number of backup sites (GitHub, GitLab, Bitbucket, Dropbox, …).
This article covers the typical case where the main Git repository is on GitHub, but a public backup is desired on GitLab or similar site.
The article assumes an existing working GitHub repo cloned to the computer username/myprog.
We also assume SSH keys on both
GitHub
and
GitLab.
Use different SSH key pairs for each site for best security.
Back up the GitHub repo username/myprog to GitLab with every git push automatically as in the following section.