Client does not support any combination of challenges that will satisfy the CA

It is because Let’s Encrypt has currently disabled the TLS-SNI-01 challenge due to an identified security issue.

Solution

If you’re serving files for that domain out of a directory on that server, you can run the following command:

certbot --authenticator webroot --webroot-path --installer nginx -d

If you’re not serving files out of a directory on the server, you can temporarily stop your server while you obtain the certificate and restart it after Certbot has obtained the certificate. This would look like:

certbot --authenticator standalone --installer nginx -d --pre-hook "service nginx stop" --post-hook "service nginx start"

If using apache:

certbot --authenticator standalone --installer apache -d --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"

or

apache2ctl stop
letsencrypt --authenticator standalone --installer apache -d your.domain

OpenMandriva Commands

To install packages, use: urpmi

# urmpi vim

To uninstall packages (with dependencies), use urpme

# urmpe vim

To query the package database (see if a package is installed or not) use: urmpq

# urpmq vim

To find package that contains a file, use : urpmf

# urpmf .vimrc

To find package by a part of the name: urpmq –fuzzy

# urpmq --fuzzy vim

To find a package by its partial name, with the alias use:

# search vim

To update the local repositories, use: urpmi.update -a

# urpmi.update -a

To update the system, use: urpmi –auto-select

# urpmi –auto-select

Windows 10 Keyboard Shortcuts 1

Windows 10 Keyboard Shortcut Description
Windows Show the Windows 10 Start Menu
Windows + Tab Launch Windows 10 Task View
Windows + C Search the web and Windows with Cortana (speech)
Windows + S Search the web and Windows with Cortana (keyboard input)
Windows + I Open Windows 10 settings
Windows + A Open Windows 10 Action Center (e.g. to display notifications and customizable quick actions)
Windows + Ctrl + D Create new virtual desktop
Windows + Ctrl + F4 Close current virtual desktop
Windows + Ctrl + [Left][Right] Switch between virtual desktops
Windows + [Left][Right][Up][Down] Position windows on your screen

E.g. Windows + [Left] moves the current window to the left half of your screen. If you use Windows + [Up] afterwards, the current window will be placed in the upper left quarter of your screen.

And, what’s very handy in my opinion: If you release the Windows key after positioning a window, Task View shows up on the opposite side of the positioned window to select and position another app.

Windows + H Share content (if supported by current app)
Windows + K Connect to wireless displays and audio devices
Windows + X Open Start button context menu
Windows + G Opens the Windows 10 Game Bar to take game screenshots and record gaming videos of Windows 10 games (works in any game app, e.g. Microsoft Solitaire Collection)

 

Windows 10 Keyboard Shortcut Description
Windows + D Show Windows desktop
Windows + E Open Windows Explorer
Windows + L Lock your Windows 10 device
Windows + Space Switch keyboard input language (if you have added at least a second one)
Windows + Shift + [Left][Right] Move current Window from one monitor to another (when using a multiple monitor setup)
Windows + [1][2][3][…] Open programs that are pinned to task bar

E.g. if first pinned program on your task bar is Windows Explorer (from left to right), the shortcut Windows + 1 opens Windows Explorer for you.

Windows + R Run a command
Windows + P Project a screen
Alt + Tab Switch to previous window
Alt + Space Restore, move, size, minimize, maximize or close current window. Also works like a charm for Windows 10 modern apps.
Alt + F4 a) Close current window

b) If you’re on your Windows 10 desktop, open Power dialogue to shut down or restart Windows, put your device in sleep mode, sign out or switch the current user

Source: https://blogs.technet.microsoft.com/sebastianklenk/2015/05/28/windows-10-keyboard-shortcuts-at-a-glance/


Change key pair for ec2 instance

Cara pertama

  1. Buka EC2 console.
  2. Pada menu NETWORK & SECURITY, pilih “Key Pairs”, kemudian klik Create Key Pair.
  3. Setelah pem file di-download, jalankan command berikut:
    ssh-keygen -f  YOURKEY.pem -y
  4. Simpan output dengan nama file authorized_keys.
  5. Simpan file authorized_keys di ~/.ssh/authorized_keys

Cara kedua

  1. Buka EC2 console.
  2. Pada menu NETWORK & SECURITY, pilih “Key Pairs”, kemudian klik Create Key Pair.
  3. Setelah pem file di-download,  upload pem file, kemudian jalankan command berikut:
    chmod 600 YOURKEY.pem
    ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys

Get last n records pada MySQL

Untuk n records dapat menggunakan LIMIT pada query.

SELECT * FROM mytable
WHERE TIME(timecolumn) BETWEEN '10:20' and '11:20'
ORDER BY id DESC
LIMIT 10;

Let’s Encrypt & Apache pada Ubuntu 16.04

Let’s Encrypt merupakan open Certificate Authority yang bersifat gratis. Layanan ini The service disediakan oleh Internet Security Research Group.

Let’s Encrypt Client/Certbot

Certbot adalah istilah untuk client yang digunakan untuk mengatur Let’s Encrypt certificates pada server.

Certbot on Ubuntu 16.04 Xenial

Pada ubuntu, package untuk certbot menggunakan nama python-letsencrypt-apache. Ketik command berikut install:

sudo apt-get install python-letsencrypt-apache
Set Up a New Cert: Apache

Sebelum menjalankan Certbot, jangan lupa untuk membuka port yang digunakan. Untuk menjalankan Certbot/Letsencrypt, jalankan command berikut kemudian ikuti langkah-langkah yang ditunjukkan pada dialog info.

sudo letsencrypt --apache

Daftar domain yang muncul berdasarkan konfigurasi pada /etc/apache2/sites-available

Renew Certificate

Test renewal:

letsencrypt renew --dry-run --agree-tos

Jika berhasil, jalankan command berikut:

letsencrypt renew --agree-tos

let’s Encrypt menyarankan menjalankan script ini dua kali sehari sebagai cron job. Sertifikat dari let’s Encrypt berlaku selama 90 hari. Renewal tidak akan dilakukan kecuali sertifikat mendekati expiry date.

Cara Lain:

sudo apt install python3-certbot-apache
sudo certbot --apache -d yourdomain.com

Delete Vertex pada Google Map

Berikut adalah contoh program untuk delete vertex pada google map.

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Deleting a vertex</title>
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      .delete-menu {
        position: absolute;
        background: white;
        padding: 3px;
        color: #666;
        font-weight: bold;
        border: 1px solid #999;
        font-family: sans-serif;
        font-size: 12px;
        box-shadow: 1px 3px 3px rgba(0, 0, 0, .3);
        margin-top: -10px;
        margin-left: 10px;
        cursor: pointer;
      }
      .delete-menu:hover {
        background: #eee;
      }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
    <script>
      function initialize() {
        var mapOptions = {
          zoom: 3,
          center: new google.maps.LatLng(-6.9691377,108.9729246),
          mapTypeId: 'terrain'
        };

        var map = new google.maps.Map(document.getElementById('map'), mapOptions);

        var flightPlanCoordinates = [
          new google.maps.LatLng(-6.5958845,107.4440923),
          new google.maps.LatLng(-6.6407947,107.6976926),
          new google.maps.LatLng(-7.1758121,108.5959127),
          new google.maps.LatLng(-6.9769447,109.8414482)
        ];
        var flightPath = new google.maps.Polyline({
          path: flightPlanCoordinates,
          editable: true,
          strokeColor: '#FF0000',
          strokeOpacity: 1.0,
          strokeWeight: 2,
          map: map
        });

        var deleteMenu = new DeleteMenu();

        google.maps.event.addListener(flightPath, 'rightclick', function(e) {
          // Check if click was on a vertex control point
          if (e.vertex == undefined) {
            return;
          }
          deleteMenu.open(map, flightPath.getPath(), e.vertex);
        });
      }

      /**
       * A menu that lets a user delete a selected vertex of a path.
       * @constructor
       */
      function DeleteMenu() {
        this.div_ = document.createElement('div');
        this.div_.className = 'delete-menu';
        this.div_.innerHTML = 'Delete';

        var menu = this;
        google.maps.event.addDomListener(this.div_, 'click', function() {
          menu.removeVertex();
        });
      }
      DeleteMenu.prototype = new google.maps.OverlayView();

      DeleteMenu.prototype.onAdd = function() {
        var deleteMenu = this;
        var map = this.getMap();
        this.getPanes().floatPane.appendChild(this.div_);

        // mousedown anywhere on the map except on the menu div will close the
        // menu.
        this.divListener_ = google.maps.event.addDomListener(map.getDiv(), 'mousedown', function(e) {
          if (e.target != deleteMenu.div_) {
            deleteMenu.close();
          }
        }, true);
      };

      DeleteMenu.prototype.onRemove = function() {
        google.maps.event.removeListener(this.divListener_);
        this.div_.parentNode.removeChild(this.div_);

        // clean up
        this.set('position');
        this.set('path');
        this.set('vertex');
      };

      DeleteMenu.prototype.close = function() {
        this.setMap(null);
      };

      DeleteMenu.prototype.draw = function() {
        var position = this.get('position');
        var projection = this.getProjection();

        if (!position || !projection) {
          return;
        }

        var point = projection.fromLatLngToDivPixel(position);
        this.div_.style.top = point.y + 'px';
        this.div_.style.left = point.x + 'px';
      };

      /**
       * Opens the menu at a vertex of a given path.
       */
      DeleteMenu.prototype.open = function(map, path, vertex) {
        this.set('position', path.getAt(vertex));
        this.set('path', path);
        this.set('vertex', vertex);
        this.setMap(map);
        this.draw();
      };

      /**
       * Deletes the vertex from the path.
       */
      DeleteMenu.prototype.removeVertex = function() {
        var path = this.get('path');
        var vertex = this.get('vertex');

        if (!path || vertex == undefined) {
          this.close();
          return;
        }

        path.removeAt(vertex);
        this.close();
      };

      google.maps.event.addDomListener(window, 'load', initialize);
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>

Ubuntu Upgrade

  1. Backup system.
  2. Upgrade currently installed package.
    sudo apt-get update
    sudo apt-get upgrade 
    sudo apt-get dist-upgrade
  3. Use ubuntu’s do-release-upgrade tool to perform upgrade.
    sudo do-release-upgrade

Mount file sfs

File sfs atau SquashFS compresses files, merupakan file system yang biasa digunakan pada linux. Untuk membuka file tersebut, dapat dilakukan di sistem operasi linux. Pada contoh ini digunakan file system.sfs pada PhoenixOSInstaller_v2.1.0.175.64bit.iso dengan sistem operasi OpenSUSE versi Tumbleweed.

cd /mnt/
sudo mkdir iso
sudo mount -o loop PhoenixOSInstaller_v2.1.0.175.64bit.iso iso
sudo mkdir sfs
sudo mount -o loop iso/system.sfs sfs/
sudo mkdir img
sudo mount sfs/system.img img