Lighthouse (pawsmenu) Mac OS

In Lightroom Classic, choose Edit Catalog Settings (Windows) or Lightroom Classic Catalog Settings (Mac OS). In the Information area of the General panel, click Show to go to the catalog in the Explorer (Windows) or Finder (Mac OS). ‎With the Lighthouse Church app, you can be easily connected to media and information about the Lighthouse Church. We make it easy to listen to and download our library of sermons, follow along with a daily reading plan, and share content with your friends and family via Facebook. Twitter, or email. Use our self-help articles to find answers to your technology questions and issues. Mac OS Lightshot Application. Install lightshot in your most advanced Mac OS X operating system. Capture screen images and share them via Facebook and Twitter with your Macintosh. Mac hotkey is ⇧⌘ 9. Ubuntu Lightshot Application. We don’t have a Lightshot application designed specifically for Linux yet. However you can still run. Within Mac OS X Tiger, Spotlight can be accessed from a number of places. Clicking on an icon in the top-right of the menu bar opens up a text field where a search query can be entered. Finder windows also have a text field in the top-right corner where a query can be entered, as do the standard load and save dialogue boxes.

It's a wrap for Chrome Dev Summit 2020! Watch all the sessions at goo.gle/cds20-sessions now!

We're in the process of restructuring our PWA training resources.

You can use the materials linked to from this page, but some of the content may be out of date.

We're still working on updating written materials, but check out our new codelabs and videos.

Open Developer Tools

Chrome

To access Developer Tools ('DevTools') in Chrome, open a web page or web app in Google Chrome. Click the Chrome menu icon, and then select More Tools > Developer Tools.

You can also use the keyboard shortcut Control+Shift+I on Windows and Linux, or ⌘+alt+I on Mac (see the Keyboard and UI Shortcuts Reference). Alternatively, right-click anywhere on the page and select Inspect.

On a Mac, you can also select View > Developer > Developer Tools in the Chrome menu bar at the top of the screen.

The DevTools window opens in your Chrome browser.

Firefox

To open Developer Tools in Firefox, open a web page or web app in Firefox. Click the Menu icon in the browser toolbar, and then click Developer > Toggle Tools.

You can also use the keyboard shortcut Control+Shift+I on Windows and Linux, or ⌘ + alt + I on Mac (see the Keyboard Shortcuts Reference).

On Mac, you can also select __View __> __Web Developer __> Toggle Tools in the Firefox menu bar at the top of the screen.

The Toolbox window opens in your Firefox browser.

Opera

To launch Opera Dragonfly, open a web page or web app in Opera. Use the keyboard shortcut Ctrl + Shift + I on Windows and Linux, or ⌘ + alt + I on Mac. Alternatively, you can target a specific element by right-clicking in the page and selecting 'Inspect Element'.

On a Mac, you can also select View > Show Developer Menu in the Opera menu bar at the top of the screen. Then select Developer > Developer Tools.

Lighthouse (pawsmenu) mac os download

The Dragonfly window opens in your Opera browser.

Internet Explorer

To open Developer Tools in Internet Explorer, open a web page or web app in Internet Explorer. Press F12 or click Developer Tools from the Tools menu.

Safari

To start using Web Inspector in Safari, open a web page or web app in Safari. In the menu bar, select Safari > Preferences. Go to the Advanced pane and enable the 'Show Develop menu in menu bar' setting. In the menu bar, select Develop > Show Web Inspector.

You can also use the keyboard shortcut ⌘ + ⌥ + I.

The Web Inspector window opens in your Safari browser.

Open the console

Chrome

To open the dedicated Console panel, either:

  • Press Ctrl + Shift + J (Windows / Linux) or ⌘ + ⌥ + J (Mac).
  • Open DevTools and select the Console panel.

See Using the Console for more information.

Firefox

To open the Web Console, either:

  • Press Ctrl + Shift + K (Windows/Linux) or ⌘ + ⌥ + K (Mac).
  • From the Firefox menu (or Tools menu if you display the menu bar or are on Mac OS X), select __Developer > Web Console. __
  • Open the Toolbox and select the Console panel.

See Opening the Web Console for more information.

Opera

Open Dragonfly and select the Console panel.

Internet Explorer

Open Developer Tools and select the Console panel.

Safari

To open the Console, either:

  • Enable the Developer menu. From the menu bar, select Develop > Show Error Console.
  • Press ⌘ + ⌥ + C
  • Open the Web Inspector and select the Console panel.

Work with the network

View network requests

Chrome

Open DevTools and select the Network panel. Requests are displayed in the Network panel's Requests Table. See Measure Resource Loading Times for more information.

Firefox

Open the Toolbox and select the Network panel. See Network Monitor for more information.

Opera

See View Network Requests in Chrome.

Internet Explorer

Open Developer Tools, and then open the Network panel. See Network for more information.

Safari

Open the Web Inspector, and then open the Network panel.

Simulate offline behavior

Chrome

Open DevTools and select the Network panel. Check the Offline checkbox. Check out Optimize Performance Under Varying Network Conditions for more information.

Firefox

Click menu icon in the browser toolbar. Then click Developer > Work Offline.

On Mac, you can enable offline mode from the menu bar by clicking File > Work Offline.

Inspect the manifest

Chrome

Open DevTools in Chrome. Click the Application panel, and then click Manifest in the navigation bar.

If your app has a manifest.json file, the options you have defined will be listed here.

You can test the add to homescreen feature from this pane. Click Add to homescreen. You should see an 'add this site to your shelf' message.

Interact with service workers in the browser

Inspect the service worker

Chrome

Open DevTools in Chrome. Click the Application panel, and then click Service Workers in the navigation bar.

If a service worker is installed for the currently open page, you'll see it listed on this pane. For example, in the screenshot above there's a service worker installed for the scope of https://events.google.com/io2016/.

chrome://serviceworker-internals/

You can also view a list of all service workers by navigating to chrome://serviceworker-internals/ in your Chrome browser.

Firefox

The about:debugging page provides an interface for interacting with Service Workers.

There are several different ways to open about:debugging:

  • On Mac, in the Tools > Web Developer menu, click Service Workers.
  • Click the Menu icon in the browser toolbar.

Then click the Developer icon and select Service Workers.

Lighthouse (pawsmenu) Mac Os 11

  • Enter 'about:debugging' in the Firefox URL bar and click Workers.

Unregister the service worker

Chrome

Open the Service Workers pane in DevTools. Click Unregister next to the service worker.

Firefox

Open the Workers page in about:debugging. Click Unregister next to the service worker scope.

Force update the service worker

Chrome

There are several ways to force-update the service worker in Chrome:

  1. Refresh your app in the browser so the new service worker is recognized. Then hold Shift and click the Reload icon .
  2. Open the Service Workers pane in DevTools. Click Update. When the new service worker installs, click skipWaiting.
  1. To force the service worker to update automatically whenever you reload the page, check Update on reload.
  1. Unregister the service worker and refresh the app in the browser.

Lighthouse (pawsmenu) Mac Os X

Firefox

To update the service worker in Firefox, close all pages controlled by the service worker and then reopen them. The service worker only updates when there are no pages open in Firefox that are within its scope.

If you want to be absolutely certain (for testing reasons) that the service worker will update, you can unregister the service worker from the about:debugging page and refresh your app in the browser. The new service worker installs on page reload.

Note that unregistering the service worker will change the subscription object if you are working with Push Notifications. Be sure to use the new subscription object if you unregister the service worker.

Send simulated push notifications

Chrome

Open the Service Workers pane in DevTools. Click Push to ping the service worker.

Firefox

Navigate to about:debugging in Firefox and select Workers. Click Push. If the worker isn't running, you will see Start instead of Push. Click Start to start the service worker, then click Push.

Check notification permissions

Chrome

Click the Information icon in the URL bar. Use the Notifications dropdown menu to set the permission status for Notifications.

Firefox

Click the Information icon in the URL bar. Use the Receive Notifications dropdown menu to set the permission status for notifications.

Inspect cache storage

Check the service worker cache

Chrome

Open DevTools and select the Application panel. In the navigation bar click Cache Storage to see a list of caches. Click a specific cache to see the resources it contains.

Firefox

Open the Toolbox and click the Settings icon to open Settings. Under Default Firefox Developer Tools, check Storage.

Open the Storage panel and expand the Cache Storage node. Select a cache to see its contents.

See the MDN article on the Storage Inspector for more information.

Clear the service worker cache

Chrome

Go to Cache Storage in DevTools. In the Application panel, expand Cache Storage. Right-click the cache name and then select Delete.

Firefox

Go to Cache Storage in DevTools. In the Storage panel, expand Cache Storage and the appropriate domain. Right-click the cache name and then select Delete All.

Check IndexedDB

Chrome

In DevTools, navigate to the Application tab. Select IndexedDB. You may need to click Reload to update the contents.

Firefox

Open the Toolbox and click the Settings icon to open Settings. Under __Default Firefox Developer Tools, __check Storage.

Open the Storage panel and expand the IndexedDB node. Select a database, object store, or index to see its contents.

Clear IndexedDB

In all browsers that support IndexedDB, you can delete a database by entering the following in the console:

indexedDB.deleteDatabase('database_name');

Where database_name is the name of the database to delete.

Chrome

Open IndexedDB in DevTools. In the navigation pane, expand IndexedDB, right-click the object store to clear, and then click Clear.

Disable HTTP Cache

Chrome

Open DevTools and open the Network panel. Check the Disable cache checkbox.

Firefox

Open the Toolbox and click the Settings icon to open the Settings. Under Advanced settings, select Disable HTTP Cache.

Simulate mobile devices

Each browser has it's own version of device simulation and testing. See the documentation for each:

These tools give you a close approximation as to how your site will look on a mobile device, but to get the full picture you should always test your site on real devices. Here is documentation for debugging Android devices on Chrome and Firefox.

Further reading

Chrome

Safari

Firefox

Opera

Internet Explorer

Last week, we covered the launch of Slack Engineering's open source mesh VPN system, Nebula. Today, we're going to dive a little deeper into how you can set up your own Nebula private mesh network—along with a little more detail about why you might (or might not) want to.

VPN mesh versus traditional VPNs

The biggest selling point of Nebula is that it's not 'just' a VPN, it's a distributed VPN mesh. A conventional VPN is much simpler than a mesh and uses a simple star topology: all clients connect to a server, and any additional routing is done manually on top of that. All VPN traffic has to flow through that central server, whether it makes sense in the grander scheme of things or not.

In sharp contrast, a mesh network understands the layout of all its member nodes and routes packets between them intelligently. If node A is right next to node Z, the mesh won't arbitrarily route all of its traffic through node M in the middle—it'll just send them from A to Z directly, without middlemen or unnecessary overhead. We can examine the differences with a network flow diagram demonstrating patterns in a small virtual private network.

All VPNs work in part by exploiting the bi-directional nature of network tunnels. Once a tunnel has been established—even through Network Address Translation (NAT)—it's bidirectional, regardless of which side initially reached out. This is true for both mesh and conventional VPNs—if two machines on different networks punch tunnels outbound to a cloud server, the cloud server can then tie those two tunnels together, providing a link with two hops. As long as you've got that one public IP answering to VPN connection requests, you can get files from one network to another—even if both endpoints are behind NAT with no port forwarding configured.

Where Nebula becomes more efficient is when two Nebula-connected machines are closer to each other than they are to the central cloud server. When a Nebula node wants to connect to another Nebula node, it'll query a central server—what Nebula calls a lighthouse—to ask where that node can be found. Once the location has been gotten from the lighthouse, the two nodes can work out between themselves what the best route to one another might be. Typically, they'll be able to communicate with one another directly rather than going through the router—even if they're behind NAT on two different networks, neither of which has port forwarding enabled.

By contrast, connections between any two PCs on a traditional VPN must pass through its central server—adding bandwidth to that server's monthly allotment and potentially degrading both throughput and latency from peer to peer.

Direct connection through UDP skullduggery

Nebula can—in most cases—establish a tunnel directly between two different NATted networks, without the need to configure port forwarding on either side. This is a little brain-breaking—normally, you wouldn't expect two machines behind NAT to be able to contact each other without an intermediary. But Nebula is a UDP-only protocol, and it's willing to cheat to achieve its goals.

If both machines reach the lighthouse, the lighthouse knows the source UDP port for each side's outbound connection. The lighthouse can then inform one node of the other's source UDP port, and vice versa. By itself, this isn't enough to make it back through the NAT pinhole—but if each side targets the other's NAT pinhole and spoofs the lighthouse's public IP address as being the source, their packets will make it through.

UDP is a stateless connection, and very few networks bother to check for and enforce boundary validation on UDP packets—so this source-address spoofing works, more often than not. However, some more advanced firewalls may check the headers on outbound packets and drop them if they have impossible source addresses.

Advertisement

If only one side has a boundary-validating firewall that drops spoofed outbound packets, you're fine. But if both ends have boundary validation available, configured, and enabled, Nebula will either fail or be forced to fall back to routing through the lighthouse.

We specifically tested this and can confirm that a direct tunnel from one LAN to another across the Internet worked, with no port forwarding and no traffic routed through the lighthouse. We tested with one node behind an Ubuntu homebrew router, another behind a Netgear Nighthawk on the other side of town, and a lighthouse running on a Linode instance. Running iftop on the lighthouse showed no perceptible traffic, even though a 20Mbps iperf3 stream was cheerfully running between the two networks. So right now, in most cases, direct point-to-point connections using forged source IP addresses should work.

Setting Nebula up

To set up a Nebula mesh, you'll need at least two nodes, one of which should be a lighthouse. Lighthouse nodes must have a public IP address—preferably, a static one. If you use a lighthouse behind a dynamic IP address, you'll likely end up with some unavoidable frustration if and when that dynamic address updates.

The best lighthouse option is a cheap VM at the cloud provider of your choice. The $5/mo offerings at Linode or Digital Ocean are more than enough to handle the traffic and CPU levels you should expect, and it's quick and easy to open an account and get one set up. We recommend the latest Ubuntu LTS release for your new lighthouse's operating system; at press time that's 18.04.

Installation

Nebula doesn't actually have an installer; it's just two bare command line tools in a tarball, regardless of your operating system. For that reason, we're not going to give operating system specific instructions here: the commands and arguments are the same on Linux, MacOS, or Windows. Just download the appropriate tarball from the Nebula release page, open it up (Windows users will need 7zip for this), and dump the commands inside wherever you'd like them to be.

On Linux or MacOS systems, we recommend creating an /opt/nebula folder for your Nebula commands, keys, and configs—if you don't have an /opt yet, that's okay, just create it, too. On Windows, C:Program FilesNebula is probably a more sensible location.

Certificate Authority configuration and key generation

The first thing you'll need to do is create a Certificate Authority using the nebula-cert program. Nebula, thankfully, makes this a mind-bogglingly simple process:

What you've actually done is create a certificate and key for the entire network. Using that key, you can sign keys for each node itself. Unlike the CA certificate, node certificates need to have the Nebula IP address for each node baked into them when they're created. So stop for a minute and think about what subnet you'd like to use for your Nebula mesh. It should be a private subnet—so it doesn't conflict with any Internet resources you might need to use—and it should be an oddball one so that it won't conflict with any LANs you happen to be on.

Nice, round numbers like 192.168.0.x, 192.168.1.x, 192.168.254.x, and 10.0.0.x should be right out, as the odds are extremely good you'll stay at a hotel, friend's house, etc that uses one of those subnets. We went with 192.168.98.x—but feel free to get more random than that. Your lighthouse will occupy .1 on whatever subnet you choose, and you will allocate new addresses for nodes as you create their keys. Let's go ahead and set up keys for our lighthouse and nodes now:

Now that you've generated all your keys, consider getting them the heck out of your lighthouse, for security. You need the ca.key file only when actually signing new keys, not to run Nebula itself. Ideally, you should move ca.key out of your working directory entirely to a safe place—maybe even a safe place that isn't connected to Nebula at all—and only restore it temporarily if and as you need it. Also note that the lighthouse itself doesn't need to be the machine that runs nebula-cert—if you're feeling paranoid, it's even better practice to do CA stuff from a completely separate box and just copy the keys and certs out as you create them.

Advertisement

Each Nebula node does need a copy of ca.crt, the CA certificate. It also needs its own .key and .crt, matching the name you gave it above. You don't need any other node's key or certificate, though—the nodes can exchange them dynamically as needed—and for security best practice, you really shouldn't keep all the .key and .crt files in one place. (If you lose one, you can always just generate another that uses the same name and Nebula IP address from your CA later.)

Configuring Nebula with config.yml

Nebula's Github repo offers a sample config.yml with pretty much every option under the sun and lots of comments wrapped around them, and we absolutely recommend anyone interested poke through it see to all the things that can be done. However, if you just want to get things moving, it may be easier to start with a drastically simplified config that has nothing but what you need.

Lines that begin with a hashtag are commented out and not interpreted.

Warning: our CMS is mangling some of the whitespace in this code, so don't try to copy and paste it directly. Instead, get working, guaranteed-whitespace-proper copies from Github: config.lighthouse.yaml and config.node.yaml.

Lighthouse (pawsmenu) Mac Os Catalina

There isn't much different between lighthouse and normal node configs. If the node is not to be a lighthouse, just set am_lighthouse to false, and uncomment (remove the leading hashtag from) the line # - '192.168.98.1', which points the node to the lighthouse it should report to.

Note that the lighthouse:hosts list uses the nebula IP of the lighthouse node, not its real-world public IP! The only place real-world IP addresses should show up is in the static_host_map section.

Starting nebula on each node

I hope you Windows and Mac types weren't expecting some sort of GUI—or an applet in the dock or system tray, or a preconfigured service or daemon—because you're not getting one. Grab a terminal—a command prompt run as Administrator, for you Windows folks—and run nebula against its config file. Minimize the terminal/command prompt window after you run it.

root@lighthouse:/opt/nebula# ./nebula -config ./config.yml

That's all you get. If you left the logging set at info the way we have it in our sample config files, you'll see a bit of informational stuff scroll up as your nodes come online and begin figuring out how to contact one another.

If you're a Linux or Mac user, you might also consider using the screen utility to hide nebula away from your normal console or terminal (and keep it from closing when that session terminates).

Figuring out how to get Nebula to start automatically is, unfortunately, an exercise we'll need to leave for the user—it's different from distro to distro on Linux (mostly depending on whether you're using systemd or init). Advanced Windows users should look into running Nebula as a custom service, and Mac folks should call Senior Technology Editor Lee Hutchinson on his home phone and ask him for help directly.

Conclusion

Nebula is a pretty cool project. We love that it's open source, that it uses the Noise platform for crypto, that it's available on all three major desktop platforms, and that it's easy...ish to set up and use.

With that said, Nebula in its current form is really not for people afraid to get their hands dirty on the command line—not just once, but always. We have a feeling that some real UI and service scaffolding will show up eventually—but until it does, as compelling as it is, it's not ready for 'normal users.'

Right now, Nebula's probably best used by sysadmins and hobbyists who are determined to take advantage of its dynamic routing and don't mind the extremely visible nuts and bolts and lack of anything even faintly like a friendly interface. We definitely don't recommend it in its current form to 'normal users'—whether that means yourself or somebody you need to support.

Unless you really, really need that dynamic point-to-point routing, a more conventional VPN like WireGuard is almost certainly a better bet for the moment.

The Good

  • Free and open source software, released under the MIT license
  • Cross platform—looks and operates exactly the same on Windows, Mac, and Linux
  • Reasonably fast—our Ryzen 7 3700X managed 1.7Gbps from itself to one of its own VMs across Nebula
  • Point-to-point tunneling means near-zero bandwidth needed at lighthouses
  • Dynamic routing opens interesting possibilities for portable systems
  • Simple, accessible logging makes Nebula troubleshooting a bit easier than WireGuard troubleshooting

Lighthouse (pawsmenu) Mac Os Download

The Bad

  • No Android or iOS support yet
  • No service/daemon wrapper included
  • No UI, launcher, applet, etc

The Ugly

  • Did we mention the complete lack of scaffolding? Please don't ask non-technical people to use this yet
  • The Windows port requires the OpenVPN project's tap-windows6 driver—which is, unfortunately, notoriously buggy and cantankerous
  • 'Reasonably fast' is relative—most PCs should saturate gigabit links easily enough, but WireGuard is at least twice as fast as Nebula on Linux