<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Darcy</title>
    <subtitle>Notes on iOS internals, macOS, and the systems underneath.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://darcy.org/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://darcy.org/blog/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2024-04-18T00:00:00+00:00</updated>
    <id>https://darcy.org/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>Adds the debug menu to macOS apps</title>
        <published>2024-04-18T00:00:00+00:00</published>
        <updated>2024-04-18T00:00:00+00:00</updated>
        
        <author>
          <name>Darcy</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://darcy.org/blog/macos-apps-debug-menu/"/>
        <id>https://darcy.org/blog/macos-apps-debug-menu/</id>
        
        <content type="html" xml:base="https://darcy.org/blog/macos-apps-debug-menu/">&lt;p&gt;Enables debug menu for any macOS apps:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;defaults write -g _NS_4445425547 -bool true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Enables debug menu for a specific application by specifying the &lt;code&gt;CFBundleIdentifier&lt;/code&gt;, e.g.:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;defaults write com.apple.dt.XCode _NS_4445425547 -bool true&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;img src=&quot;https://darcy.org/blog/processed_images/_NS_4445425547.cd4db17a06121c7a.png&quot; width=&quot;559&quot; height=&quot;441&quot; alt=&quot;macOS debug menu showing Bundle Info for Xcode&quot; loading=&quot;lazy&quot;&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://x.com/manuelmaly/status/1777610309076734058&quot;&gt;https://x.com/manuelmaly/status/1777610309076734058&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://forum.exetools.com/showthread.php?p=130617&quot;&gt;https://forum.exetools.com/showthread.php?p=130617&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>iOS Private APIs(2): Observing Volume Keys&#39; Press Events</title>
        <published>2023-01-05T00:00:00+00:00</published>
        <updated>2023-01-05T00:00:00+00:00</updated>
        
        <author>
          <name>Darcy</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://darcy.org/blog/ios-observe-volume-keys-press-events/"/>
        <id>https://darcy.org/blog/ios-observe-volume-keys-press-events/</id>
        
        <content type="html" xml:base="https://darcy.org/blog/ios-observe-volume-keys-press-events/">&lt;h1 id=&quot;observing-volume-keys-press-events-in-ios&quot;&gt;Observing Volume Keys’ Press Events in iOS&lt;/h1&gt;
&lt;p&gt;If you’ve used iOS devices, you might have observed that certain apps enable you to capture photos by pressing the volume buttons. This functionality mimics the experience of using a DSLR camera and improves the overall photography experience. But how is this feature actually implemented? One popular method involves monitoring changes in the audio session using &lt;code&gt;AVAudioSession&lt;/code&gt; to detect volume button presses. However, it’s worth noting that this approach is not completely reliable and necessitates handling specific edge cases. Interestingly, iOS has had private NSNotifications available since early versions for tracking volume button presses.&lt;/p&gt;
&lt;p&gt;Below are four events that can be utilized by NSNotificationCenter to monitor volume key press events on the iPhone. These events have been &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://iphonedev.wiki/index.php/Reverse_Engineering_Tools&quot;&gt;extracted&lt;/a&gt; from iOS header dump files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;_UIApplicationVolumeDownButtonDownNotification&lt;/li&gt;
&lt;li&gt;_UIApplicationVolumeDownButtonUpNotification&lt;/li&gt;
&lt;li&gt;_UIApplicationVolumeUpButtonDownNotification&lt;/li&gt;
&lt;li&gt;_UIApplicationVolumeUpButtonUpNotification&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, it is necessary to invoke the private method &lt;code&gt;[UIApplication setWantsVolumeButtonEvents:YES]&lt;/code&gt; in order to enable the aforementioned notifications before observing them.&lt;/p&gt;
&lt;p&gt;Here’s an example implementation:&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;- (void)viewDidLoad {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    [super viewDidLoad];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    [[UIApplication sharedApplication] performSelector:@selector(setWantsVolumeButtonEvents:) withObject:(@YES)];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    // Subscribe to the volumedown button press notification&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    [[NSNotificationCenter defaultCenter] addObserver:self &lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                             selector:@selector(volumeDownButtonPressed:)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                                 name:@&amp;quot;_UIApplicationVolumeDownButtonDownNotification&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                                               object:nil];&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;// Method that gets called when the volume down button is pressed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;- (void)volumeDownButtonPressed:(NSNotification *)notification {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    NSLog(@&amp;quot;Volume Down Button was pressed.&amp;quot;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Make sure to call &lt;code&gt;[UIApplication setWantsVolumeButtonEvents:YES]&lt;/code&gt; to enable the notifications before observing them.&lt;/p&gt;
&lt;p&gt;Please keep in mind that using private APIs can lead to your app being rejected from the App Store. Hence, it’s advised to always use public APIs that Apple has documented for developers.&lt;/p&gt;
&lt;p&gt;-EOF-&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Protecting Nginx directories with Password</title>
        <published>2022-12-24T00:00:00+00:00</published>
        <updated>2022-12-24T00:00:00+00:00</updated>
        
        <author>
          <name>Darcy</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://darcy.org/blog/protecting-nginx-directories-with-password/"/>
        <id>https://darcy.org/blog/protecting-nginx-directories-with-password/</id>
        
        <content type="html" xml:base="https://darcy.org/blog/protecting-nginx-directories-with-password/">&lt;h2 id=&quot;protecting-nginx-directories-with-password&quot;&gt;Protecting Nginx directories with Password&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Add &lt;code&gt;auth_basic&lt;/code&gt; to nginx configuration file.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;location /subdirectory {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  auth_basic &amp;quot;Restricted&amp;quot;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  auth_basic_user_file /etc/nginx/htpasswd/example.com/.htpasswd;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Create the .htpasswd file with specified username.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;htpasswd -c /etc/nginx/htpasswd/example.com/.htpasswd USERNAME&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Restart Nginx.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;systemctl restart nginx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;-EOF-&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>iOS Private APIs(1): Disabling Universal Links in WKWebView</title>
        <published>2022-09-11T00:00:00+00:00</published>
        <updated>2022-09-11T00:00:00+00:00</updated>
        
        <author>
          <name>Darcy</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://darcy.org/blog/ios-disable-universal-links/"/>
        <id>https://darcy.org/blog/ios-disable-universal-links/</id>
        
        <content type="html" xml:base="https://darcy.org/blog/ios-disable-universal-links/">&lt;h1 id=&quot;disabling-universal-links-in-wkwebview&quot;&gt;Disabling Universal Links in WKWebView&lt;/h1&gt;
&lt;p&gt;Universal Links provide a seamless user experience by allowing your web server to relate HTTP links to your website with corresponding links for your iOS app. However, there might be situations where you would like to disable this feature in a &lt;code&gt;WKWebView&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This guide will show you how to disable Universal Links from opening in-app and instead let them open in &lt;code&gt;WKWebView&lt;/code&gt; using Objective-C.&lt;/p&gt;
&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Xcode installed on your Mac.&lt;/li&gt;
&lt;li&gt;Basic knowledge of Objective-C.&lt;/li&gt;
&lt;li&gt;An existing iOS project with &lt;code&gt;WKWebView&lt;/code&gt; set up.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;step-by-step-instructions&quot;&gt;Step-by-step Instructions&lt;/h2&gt;
&lt;h3 id=&quot;step-1-conform-to-the-wknavigationdelegate-protocol&quot;&gt;Step 1: Conform to the WKNavigationDelegate protocol&lt;/h3&gt;
&lt;p&gt;Your ViewController must conform to the &lt;code&gt;WKNavigationDelegate&lt;/code&gt; protocol. Declare this conformance in your interface declaration.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@interface YourViewController () &amp;lt;WKNavigationDelegate&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;//...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;@end&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;step-2-set-wkwebview-s-navigationdelegate&quot;&gt;Step 2: Set WKWebView’s navigationDelegate&lt;/h3&gt;
&lt;p&gt;Set your WKWebView instance’s navigationDelegate property to self.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;webView.navigationDelegate = self;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;step-3-implement-the-decidepolicyfornavigationaction-method&quot;&gt;Step 3: Implement the decidePolicyForNavigationAction method&lt;/h3&gt;
&lt;p&gt;Implement the &lt;code&gt;webView:decidePolicyForNavigationAction:decisionHandler:&lt;/code&gt; delegate method. Here, we use &lt;code&gt;WKNavigationActionPolicyAllow + 2&lt;/code&gt;, which is a private API that handles Universal Links as normal web links.&lt;/p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    decisionHandler((WKNavigationActionPolicy)(WKNavigationActionPolicyAllow + 2));&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That’s it! This will prevent your &lt;code&gt;WKWebView&lt;/code&gt; from opening Universal Links in-app.&lt;/p&gt;
&lt;h3 id=&quot;important-note&quot;&gt;Important Note&lt;/h3&gt;
&lt;p&gt;Using private APIs like &lt;code&gt;WKNavigationActionPolicyAllow + 2&lt;/code&gt; can lead to your app being rejected from the App Store. They’re not documented or supported and may change or disappear without notice in future iOS versions. Use them cautiously and only when necessary. Always consider the potential risks and consequences before deciding to use private APIs in production code.&lt;/p&gt;
&lt;p&gt;-EOF-&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Shutdown ESXi host over SSH</title>
        <published>2016-04-08T00:00:00+00:00</published>
        <updated>2016-04-08T00:00:00+00:00</updated>
        
        <author>
          <name>Darcy</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://darcy.org/blog/shutdown-esxi-host-over-ssh/"/>
        <id>https://darcy.org/blog/shutdown-esxi-host-over-ssh/</id>
        
        <content type="html" xml:base="https://darcy.org/blog/shutdown-esxi-host-over-ssh/">&lt;h2 id=&quot;shutdown-esxi-host-over-ssh&quot;&gt;Shutdown ESXi host over SSH&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Connect ESXi host over SSH&lt;/li&gt;
&lt;li&gt;Get a list of running virtual machines, we will use the [World ID] later.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;esxcli&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt; vm process list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Power off the virtual machines one by one from the list&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;esxcli&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt; vm process kill&lt;/span&gt;&lt;span style=&quot;color: #D3869B;&quot;&gt; --type=&lt;/span&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #D3869B;&quot;&gt;soft, hard, force&lt;/span&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: #D3869B;&quot;&gt; --world-id=&lt;/span&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #D3869B;&quot;&gt;World ID&lt;/span&gt;&lt;span style=&quot;color: #FE8019;&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Shutdown VMs and Power off ESXi Host&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;/sbin/shutdown.sh&lt;/span&gt;&lt;span style=&quot;color: #A89984;&quot;&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt; /sbin/poweroff&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;alternative-power-off-on-a-virtual-machine-with-command-line-utilities&quot;&gt;[Alternative]Power off/on a virtual machine with command-line utilities&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;List VMs&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;vim-cmd&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt; vmsvc/getallvms&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Get the power state of a VM&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;vim-cmd&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt; vmsvc/power.getstate&lt;/span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Vmi&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Power on a virtual machine&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #EBDBB2; background-color: #282828;&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #FABD2F;&quot;&gt;vim-cmd&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt; vmsvc/power.off&lt;/span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt; &amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #B8BB26;&quot;&gt;Vmi&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span style=&quot;color: #8EC07C;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.vcli.ref.doc/vcli-right.html&quot;&gt;vSphere Command-Line Interface Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=2012964&quot;&gt;Performing common virtual machine-related tasks with command-line utilities (2012964)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hello World!</title>
        <published>1970-01-01T00:00:00+00:00</published>
        <updated>1970-01-01T00:00:00+00:00</updated>
        
        <author>
          <name>Darcy</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://darcy.org/blog/hello-world/"/>
        <id>https://darcy.org/blog/hello-world/</id>
        
        <content type="html" xml:base="https://darcy.org/blog/hello-world/">&lt;p&gt;Hello World!&lt;/p&gt;
</content>
        
    </entry>
</feed>
