User Tools

Site Tools


tech:macos:start

MacOS

Homebrew

Development on MacOS

C/C++

Using Homebrew:

export HOMEBREW_NO_ANALYTICS=1
brew update
brew upgrade
brew info gcc
brew install gcc
brew cleanup

Alternative: go to the Apple App Store and install Xcode (Apple's compiler and development tools).
Then, in a terminal:

xcode-select --install
clang -o program program.c
clang++ -o program program.cc
g++ -std=c++11 -o program program.cpp
g++-7 -std=c++11 -o program program.cpp
brew install pkg-config
brew install gettext
brew install glib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/X11/lib/pkgconfig
==> Caveats
==> libffi
libffi is keg-only, which means it was not symlinked into /usr/local,
because some formulae require a newer version of libffi.

For compilers to find libffi you may need to set:
  export LDFLAGS="-L/usr/local/opt/libffi/lib"

For pkg-config to find libffi you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"

Portable alternative for getting current time

#include <time.h>
#include <sys/time.h>
#ifdef __MACH__
#include <mach/clock.h>
#include <mach/mach.h>
#endif

struct timespec ts;

#ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
clock_serv_t cclock;
mach_timespec_t mts;
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
clock_get_time(cclock, &mts);
mach_port_deallocate(mach_task_self(), cclock);
ts.tv_sec = mts.tv_sec;
ts.tv_nsec = mts.tv_nsec;

#else
clock_gettime(CLOCK_REALTIME, &ts);
#endif

Java

See https://github.com/AdoptOpenJDK/homebrew-openjdk where you can go and grab prebuilt openjdk binaries for macOS!

It’s just a case of using:

brew tap AdoptOpenJDK/openjdk
brew cask install <version>

Where version is:

  • adoptopenjdk8
  • adoptopenjdk9
  • adoptopenjdk10

JMeter

Install with:

brew install jmeter

JMeter’s configuration files are located in the following directories:

Item Standard
Plugins folder JMETER_HOME/lib/ext Library folder for plugin dependencies
Configuration folder JMETER_HOME/bin
Item Homebrew
Plugins folder CELLAR_HOME/jmeter/3.1/libexec/lib/ext Library folder for plugin dependencies
CELLAR_HOME/jmeter/3.1/libexec/lib
Configuration folder CELLAR_HOME/jmeter/3.1/libexec/bin

With the following constants:
JMETER_HOME: JMeter’s home, usually like /home/ubuntu/jmeter-5.x
CELLAR_HOME: should be /usr/local/Cellar

Locust

Trivia

CLI Tips + Tricks

Pretty-Printing

Pretty-Print JSON from a file ...

cat unformatted.json | python -m json.tool

Pretty-Print JSON from the clipboard ...

pbpaste | python -m json.tool

Pretty-Print XML from the clipboard ...

pbpaste | xmllint --format -

Desktop/GUI Tips + Tricks

Resize a window to 1920x1080

Open ApplicationsUtilitiesScript Editor, paste this, and hit the play button:

tell application "Firefox"
	activate
	set the bounds of the first window to {100,100,2020,1180}
end tell
tech/macos/start.txt · Last modified: 2019/11/09 11:13 by rk4n3