Thursday, November 15, 2018

Perl: shortest slurp

Source: Perl Slurp-Eaze
my $str = 'my '.do { local(@ARGV, $/) = $pl_filename; <> };

Sunday, November 11, 2018

macOS: installing High Sierra on a new combo

GigaByte Z370 HD3P - i7-8700 Coffee Lake - iGPU HD 630 - High Sierra

macOS: from 10.14 to 10.14.1

Steps:
  • Update Clover through Clover Configurator: pick custom install and check (default if already done once)
    • AptioMemoryFix-64,
    • ApfsDriverLoader-64 and
    • PartitionDxe-64
  • Update kexts in /Volumes/EFI/EFI/CLOVER/kexts/Other
  • Update macOS to 10.14.1 via Software Update
    and leave it reboot by default
  • As my config. was booting, but got stuck, not starting the macOS GUI, I changed the Clover options at boot time so as to replace iMac 17,1, which was working for 10.14, with iMac 18,3. This allowed to start the GUI but the display was flickering like hell. Multiple trials later, I found out iMac 14,2 was solving the flickering issue.
  • Follow [Guide] Creating a Custom SSDT for USBInjectAll.kext so as to solve USB3 ports issues.
    At first, I thought about following Intel FB-Patcher v1.6.3 | USB Port Patching, because less complicated, but I found out the FB-Patcher is not as reliable as the RehabMan's method for detecting ports.
    At least, FB-Patcher told me I was using a "USB controller - XHC - 8086:A2AF". So,
    • Removed all legacy High Sierra ACPI changes mentioned in my GigaByte Z370 HD3P - i7-8700 Coffee Lake - iGPU HD 630 - High Sierra page, that were useless in 10.14, i.e. Change HDAS to HDEF, Change HECI to IMEI and Change GFX0 to IGPU.
    • Copied USBInjectAll.kext into /Volumes/EFI/EFI/CLOVER/kexts/Other.
    • Copied XHCI-unsupported.kext (from USBInjectAll ZIP) into /Volumes/EFI/EFI/CLOVER/kexts/Other, like mentioned in OS-X-USB-Inject-All for a 8086:a2af USB controller.
    • EHCx renames and port limit patches, like in config_patches.plist.
    • 1st reboot with -uia_exclude_ss option at Clover boot
    • Test of HS ports, validating HS03, HS04, HS07,HS08,HS09,HS10,HS11,HS12,HS13,HS14 as USB3 ports.
    • 2nd reboot with uia_exclude=HS01,...,HS09,HS11,...,HS14,USR1 because proposed option (-uia_exclude_ss uia_include=HS10) was not keeping HS10 (my Dell screen USB hub where my keyboard and mouse are plugged in) active.
    • Test of SS ports, validating SS03, SS04, SS07, SS08 as USB3 ports.
    • Updated SSDT-UIAC-ALL.dsl so as to remove everything not concerning 8086_a2af, like in
      // SSDT-UIAC-ALL.dsl
      //
      // This SSDT can be used as a template to build your own
      // customization for USBInjectAll.kext.
      //
      // This SSDT contains all ports, so using it is the same as without
      // a custom SSDT.  Delete ports that are not connected or ports you
      // do not need.
      //
      // Change the UsbConnector or portType as needed to match your
      // actual USB configuration.
      //
      // Note:
      // portType=0 seems to indicate normal external USB2 port (as seen in MacBookPro8,1)
      // portType=2 seems to indicate "internal device" (as seen in MacBookPro8,1)
      // portType=4 is used by MacBookPro8,3 (reason/purpose unknown)
      //
      
      DefinitionBlock ("", "SSDT", 2, "hack", "_UIAC", 0)
      {
          Device(UIAC)
          {
              Name(_HID, "UIA00000")
      
              Name(RMCF, Package()
              {
                  "8086_a2af", Package()
                  {
                      "port-count", Buffer() { 26, 0, 0, 0 },
                      "ports", Package()
                      {
                          "HS03", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 3, 0, 0, 0 },
                          },
                          "HS04", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 4, 0, 0, 0 },
                          },
                          "HS07", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 7, 0, 0, 0 },
                          },
                          "HS08", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 8, 0, 0, 0 },
                          },
                          "HS09", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 9, 0, 0, 0 },
                          },
                          "HS10", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 10, 0, 0, 0 },
                          },
                          "HS11", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 11, 0, 0, 0 },
                          },
                          "HS12", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 12, 0, 0, 0 },
                          },
                          "HS13", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 13, 0, 0, 0 },
                          },
                          "HS14", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 14, 0, 0, 0 },
                          },
                          "SS03", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 19, 0, 0, 0 },
                          },
                          "SS04", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 20, 0, 0, 0 },
                          },
                          "SS07", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 23, 0, 0, 0 },
                          },
                          "SS08", Package()
                          {
                              "UsbConnector", 3,
                              "port", Buffer() { 24, 0, 0, 0 },
                          },
                      },
                  },
              })
          }
      }
      //EOF
      
    • Used MaciAS so as to compile SSDT-UIAC-ALL.dsl into SSDT-UIAC-ALL.aml by using File | Save As, format: ACPI Machine Language Binary.
    • Copied SSDT-UIAC-ALL.aml into /Volumes/EFI/EFI/CLOVER/ACPI/patched
    • Rebooted.

Monday, November 5, 2018

Clojure: load deps.edn aliases extra-deps from Cider

Let's say this is deps.edn:
{:paths ["src" "resources"]
 :deps {com.datomic/ion {:mvn/version "0.9.26"}
        org.clojure/data.json {:mvn/version "0.2.6"}
        org.clojure/clojure {:mvn/version "1.9.0"}}
 :mvn/repos {"datomic-cloud" {:url "s3://datomic-releases-1fc2183a/maven/releases"}}
 :aliases
 {:dev {:extra-deps {com.datomic/client-cloud {:mvn/version "0.8.63"}
                     com.datomic/ion-dev {:mvn/version "0.9.176"}}}}}

Then, if we use M-x cider-jack-in from Emacs, this will not load the aliases extra-deps.
In order to do so, invoke cider-jack-in interactively:
C-u M-x cider-jack-in

Then, when the REPL command is displayed, use C-a to go to the beginning of the line and add -R:dev (see Clojure Deps and CLI Guide) in order to take into account optional dependencies.

Sunday, October 21, 2018

Android O: identify battery sucking apps

Source: Android O: How to Identify and Bitch Slap Those Battery Sucking Apps
On my Oneplus 5T, Android 8.1:

List apps. running in background permanently
  • Settings > Dev. Options > Running Services 
Kill the background activity of an app.
  • Settings > Apps > Application list > Select app > Battery > Uncheck Background activity

Thursday, October 18, 2018

macOS mojave: bluetooth headphones keep on disconnecting

Uncheck "Allow Handoff between this Mac and your iCloud devices" in Preferences | General.

Thursday, October 4, 2018

macOS: xcrun: error: invalid active developer path

Source: macOS Mojave: invalid active developer path
If after upgrading from High Sierra to Mojave, you get the following error:
[jerome@jeroboam] > make
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools),
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Then re-install xcode developer tools like in:
[jerome@jeroboam] > xcode-select --install
xcode-select: note: install requested for command line developer tools

Saturday, September 29, 2018

macOS: from High Sierra to Mojave

Steps:
  • Download "Install macOS Mojave" application from the Mac App Store, and run it.
  • Reboot. At Clover boot screen, choose Boot macOS Install option. Multiple reboots expected. At some time, pick "Boot FileVault Prebooter from Preboot" option to finish the install.
  • Update Clover configuration in order to hide the 2 preboot options at boot time. For this, add "Preboot" in Clover Configurator | Gui | Hide Volume
  • And here it is.
  • Optional step: Create a Bootable USB with UniBeast

Monday, September 24, 2018

macOS: downloading .gz from Chrome turns into .cpgz

If you download a .gz from Chrome, and double-clicking it simply creates a .cpgz, then the downloaded file is not a .gz
Try
> file --mime-type ~/Desktop/42a3-909a-1b5bdb4a4b8b.gz
text/plain
Then simply rename it into .txt, and you will be able to open it.

Friday, September 21, 2018

macOS: turn text into links automatically

Use Edit > Substitutions > Smart Links

Tuesday, September 18, 2018

macOS: how to page up with byobu in Terminal.app

Source: How can I page up or down in tmux with Terminal.app?
Terminal.app captures PageUp / PageDown. So, in order to send them to byobu again:
If on a PC keyboard:
  • F7
  • Shift + PageUp / Shift + PageDown
Or if on a MacBookPro:
  • F7
  • Fn + Shift + Up / Fn + Shift + Down

Wednesday, September 12, 2018

Tuesday, September 4, 2018

git: merge files from another branch

Source: Git tip: How to "merge" specific files from another branch
git checkout [TARGET_BRANCH]
git checkout [SOURCE_BRANCH] my_file1 my_file2

Friday, August 31, 2018

Perl: slurp STDIN

Source: How can I slurp STDIN in Perl?
my $str = do { local $/;  };

Wednesday, August 1, 2018

git: rename a branch

Source: Rename a local and remote branch in git

Rename local branch.
git branch -m new-name
Delete the old-name remote branch and push the new-name local branch.
git push origin :old-name new-name
Reset the upstream branch for the new-name local branch.
git push origin -u new-name

Thursday, July 26, 2018

macOS: checking for OpenSSL... configure: error: not found

Source: Problem with openssl on macOS
If your ./configure (e.g. for pgbouncer) terminates with the following error despite openssl being installed:
checking for OpenSSL... configure: error: not found
Then, restart it like follows:
./configure --with-openssl=/usr/local/opt/openssl

macOS: listening ports

Source: How can I list my open network ports with netstat?
[jerome@jeroboam] > sudo lsof -PiTCP -sTCP:LISTEN | grep 6432
pgbouncer 10533 jerome    9u  IPv6 0x8678a9be8d9262f5      0t0  TCP *:6432 (LISTEN)
pgbouncer 10533 jerome   10u  IPv4 0x8678a9be9e2f23dd      0t0  TCP *:6432 (LISTEN)

Wednesday, July 25, 2018

ssh: ssh a remote host via a bastion

Source: SSH ProxyCommand example: Going through one host to reach another server

In order to reach remote1 through a bastion host, add the following lines in your .ssh/config:
Host bastion
HostName bastion-01.golgoth.com
User jgallinari

Host remote1
HostName remote1.toto.swir
User jgallinari
ProxyCommand ssh jgallinari@bastion -W %h:%p
Then ssh remote1 should do it.

Friday, July 20, 2018

macOS: find your CPU

[jerome@jeroboam] > sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz