25 авг. 2017 г.

Emulate slow network connection on Mac OS X with Network Link Conditioner


  1. Open https://developer.apple.com/download/more/ (Downloads For Apple Developers)
  2. Find and download Additional Tools for Xcode 8.2 (or other Xcode version you use). Note that there is no need to download/install Xcode itself.
  3. Open Additional Tools - Hardware - double-click on Network Link Conditioner
  4. Agree to install it to Preferences
Available Network Profiles:
  • 100% Loss - drops all incoming and outgoing packets 
  • High Latency DNS - adds 3000 ms DNS delay 
  • Very Bad Network - 1 Mbps 500ms delay downlink, 1 Mbps 500 ms delay uplink, and 10% of incoming and outgoing packets are dropped
  • Edge - 240 Kpbs 400 ms delay downlink, 200 Kbps 440 ms delay uplink
  • 3G - 780 Kpbs 100 ms delay downlink, 330 Kbps 100 ms delay uplink
  • DSL - 2 Mbps 5ms delay downlink, 256 Kbps 5 ms delay uplink
  • LTE - 50 Mbps 50ms delay downlink, 10 Mbps 65 ms delay uplink
  • Wi-Fi - 40 Mbps 1ms delay downlink, 33 Mbps 1 ms delay uplink
  • Wi-Fi 802.11ac - 250 Mbps 1ms delay downlink, 100 Mbps 1 ms delay uplink
Also there is an option to create custom profiles.

15 авг. 2017 г.

EcmaScript support in Node

Interestingly enough, even 9.0.0 nightlies don't support ES2015 fully: it's missing tail call optimization, Array.prototype.values, and RegExp.prototype.flags.
http://node.green/ - ES2015 ES2016 ES2017 compatibility tables for Node.

List all the in progress features available on your Node release:
node --v8-options | grep "in progress"

List all dependencies and respective versions that ship with a specific Node binary:
node -p process.versions.v8
https://nodejs.org/en/docs/es6/

7 авг. 2017 г.

Get Pseudo-Element Properties with JavaScript

Assume your CSS looks like:

.element:before {
    content: 'NEW';
    color: rgb(255, 0, 0);
}

To retrieve the color property of the .element:before, you could use the following JavaScript:

var color = window
    .getComputedStyle(document.querySelector('.element'), ':before')
    .getPropertyValue('color')

Passing the pseudo-element as the second argument to window.getComputedStyle allows access to said pseudo-element styles


Mouse and keyboard support in Midnight Commander for Mac OS X

Somehow I broke mouse support in Midnight Commander while setting up a fresh Mac OS X. It took me the whole week to find the root cause and enable mouse in MC again. Here is the checklist:

  • Check that Mouse Reporting is enabled
    Terminal - Menu - View or Cmd+R hotkey
  • Find the value of TERM env variable
    echo $TERM in terminal or open Terminal Settings (Cmd+,), go to Profiles - look for Terminfo; it was set to xterm-256color in my case
  • Quit all Midnight Commander instances, if any
  • Edit ~/.config/mc/ini file, find corresponding terminal section, e.g. [xterm-256color] for my terminal, and remove all its entries
  • Start Midnight Commander
Keyboard support: to make Shift+Up and Shift+Down keys work in Midnight Commander, do the following:
  • Open Terminal Settings - Keyboard tab
  • Add Shift+Up - send text "\033[1;2A" (copy from Shift+Left and edit text)
  • Add Shift+Down - send text "\033[1;2B"