2016年12月23日 星期五

CentOS 7.3 Installation on Virtual Box



Download Minimal ISO
https://www.centos.org/download/
CentOS-7-x86_64-Minimal-1611.iso
Never Succeed

Download 6.9 instead!
CentOS-6.9-x86_64-minimal.iso         29-Mar-2017 02:31  408M 


See you next time

2016年12月22日 星期四

Simple Logger Facade SLF4J Java 8 on Linux

Main Reference
http://www.slf4j.org/manual.html
http://ifeve.com/slf4j-manual/

Confirm your JDK
[ricky@thrift2 SimpleLoggingFacade]$ javac -version
javac 1.8.0_111

Download it to ~/SimpleLoggingFacade
wget http://www.slf4j.org/dist/slf4j-1.7.22.tar.gz
tar zxvf slf4j-1.7.22.tar.gz

HelloWorld.java
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

Error 1 : org.slf4j does not exist
[ricky@thrift2 SimpleLoggingFacade]$ javac HelloWorld.java
HelloWorld.java:1: error: package org.slf4j does not exist
import org.slf4j.Logger;
                ^
HelloWorld.java:2: error: package org.slf4j does not exist
import org.slf4j.LoggerFactory;
                ^
HelloWorld.java:6: error: cannot find symbol
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    ^
  symbol:   class Logger
  location: class HelloWorld
HelloWorld.java:6: error: cannot find symbol
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
                    ^
  symbol:   variable LoggerFactory
  location: class HelloWorld
4 errors

Solution 1: org.slf4j does not exist
javac -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar" HelloWorld.java

Error 2: Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
[ricky@thrift2 SimpleLoggingFacade]$ java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
        at HelloWorld.main(HelloWorld.java:6)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more

Solution 2 : Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
[ricky@thrift2 SimpleLoggingFacade]$ java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar" HelloWorld
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Error 3: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"

Solution 3: Failed to load class "org.slf4j.impl.StaticLoggerBinder"
java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar:./slf4j-1.7.22/slf4j-simple-1.7.22.jar" HelloWorld

[main] INFO HelloWorld - Hello World

Solution 3 using simple:
java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar:./slf4j-1.7.22/slf4j-simple-1.7.22.jar" HelloWorld
[main] INFO HelloWorld - Hello World

Solution 3 using jdk14:
java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar:./slf4j-1.7.22/slf4j-jdk14-1.7.22.jar" HelloWorld

Dec 22, 2016 3:52:36 PM HelloWorld main
INFO: Hello World

Solution 3 using nop:
java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar:./slf4j-1.7.22/slf4j-nop-1.7.22.jar" HelloWorld

Solution 3 using JCL:
wget http://apache.website-solution.net//commons/logging/binaries/commons-logging-1.2-bin.tar.gz

tar zxvf commons-logging-1.2-bin.tar.gz
java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar:./slf4j-1.7.22/slf4j-jcl-1.7.22.jar:./commons-logging-1.2/commons-logging-1.2.jar" HelloWorld
Dec 22, 2016 3:51:22 PM HelloWorld info
INFO: Hello World

Solution 3 using log4j 1.2:
echo "Need to download log4j-1.2.17.tar.gz"
echo "Do not download apache-log4j-2.7-bin.tar.gz"
wget http://apache.01link.hk/logging/log4j/1.2.17/log4j-1.2.17.tar.gz

tar zxvf log4j-1.2.17.tar.gz

java -cp ".:./slf4j-1.7.22/slf4j-api-1.7.22.jar:./slf4j-1.7.22/slf4j-log4j12-1.7.22.jar:./apache-log4j-1.2.17/log4j-1.2.17.jar" HelloWorld

Error 4 : WARN No appenders could be found for logger (HelloWorld)
log4j:WARN No appenders could be found for logger (HelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Solution 4 : WARN No appenders could be found for logger (HelloWorld)
vi log4j.properties
log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%t %-5p %c{2} - %m%n

Solution 3 using log4j 1.2 alternative (simpler):

mkdir lib
cp ./slf4j-1.7.22/slf4j-api-1.7.22.jar ./lib/
cp ./slf4j-1.7.22/slf4j-log4j12-1.7.22.jar ./lib/
wget http://apache.01link.hk/logging/log4j/1.2.17/log4j-1.2.17.tar.gz
tar zxvf log4j-1.2.17.tar.gz
cp ./apache-log4j-1.2.17/log4j-1.2.17.jar ./lib/
java -cp ".:./lib/*" HelloWorld

a
sdas

2016年12月19日 星期一

Virtualbox Extension Pack on Linux and using USB Device on Guest Instance

sudo vboxmanage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-5.1.10-112026.vbox-extpack

sudo usermod -a -G vboxusers ricky

instance > Settings > USB > Enable USB Controller + USB 2.0

MongoDB Python pymongo

Install Anaconda
https://anaconda.org/anaconda/pymongo
conda install -c anaconda pymongo=3.3.0
from pymongo import MongoClient



MongoDB Queries
db.getCollection('SHCU_1Min_History').distinct( "Date", { $or: [ {"AskPrice1":{$gt:1.79e+308}}, {"AskPrice2":{$gt:1.79e+308}}, {"BidPrice1":{$gt:1.79e+308}}, {"BidPrice2":{$gt:1.79e+308}} ] } )

2016年12月2日 星期五

Wireshark and tshark Examples on Windows and Linux

Python
import datetime
a = datetime.timedelta(seconds=25293)
str(a)
'7:01:33'
b = datetime.timedelta(seconds=25464)
str(b)
'7:04:24'


Linux

tshark -r PM.pcap -Y '(frame.time >= "Nov 30, 2016 07:01:33") && (frame.time <= "Nov 30, 2016 7:04:24")' -w out.pcap

[quantprod@hkoffice083 trial]$ capinfos PM.pcap
File name:           PM.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
Packet size limit:   file hdr: 65535 bytes
Number of packets:   3,096 k
File size:           2,492 MB
Data size:           2,443 MB
Capture duration:    15142 seconds
Start time:          Wed Nov 30 05:21:56 2016
End time:            Wed Nov 30 09:34:18 2016
Data byte rate:      161 kBps
Data bit rate:       1,290 kbps
Average packet size: 789.02 bytes
Average packet rate: 204 packets/sec
SHA1:                6238971ac36f2bfb990668f3889e61ec26c3769c
RIPEMD160:           689c0dbe61c95d14882d631b76d0afe3f0a3b10c
MD5:                 9cc626ffc7314bc8a9f4f5e03c81ff5d
Strict time order:   True


2016年11月9日 星期三

CentOS 7 firewalld and iptables firewall setup allow multicast traffic




CentOS 7 remove firewalld and enable iptables.service

1. 關閉及停止使用 Firewalld:
systemctl status firewalld
systemctl disable firewalld (Loaded: loaded, Active: active)
systemctl mask firewalld (Loaded: masked, Active: active)
systemctl stop firewalld (Loaded: masked, Active: inactive)
sudo reboot -h now

2. 安裝 iptables
yum install iptables-services

3. 啟動及設定開機執行 iptables
systemctl status iptables.service
systemctl enable iptables
systemctl start iptables

現在已經可以用 iptables, 增加及剛除 rules 的方法跟以前 Centos 5, 6 相同.

如果上述命令沒有 lokkit,可以自己用 yum install lokkit 安裝。事實上 lokkit 也只是設定 iptables 把 http 和 ssh 打開,如果原本就有開了也不用執行或手動自己設定 iptables 也可以。
sudo lokkit -s http -s ssh

Reference
https://www.digitalocean.com/community/tutorials/how-to-migrate-from-firewalld-to-iptables-on-centos-7

New iptables default rules:
[ricky@thrift1 bin]$ sudo iptables -S | tee ~/firewalld_iptables_rules
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

Edit the rule file so accept udp packets so that
sudo vi /etc/sysconfig/iptables
      8 -A INPUT -p udp -j ACCEPT
      9 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
     10 -A INPUT -p icmp -j ACCEPT
     11 -A INPUT -i lo -j ACCEPT
     12 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
     13 -A INPUT -j REJECT --reject-with icmp-host-prohibited
     14 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
     15 COMMIT

Restart to make it effective
sudo sh -c 'iptables-restore -t < /etc/sysconfig/iptables'
systemctl restart iptables.service

2016年11月8日 星期二

Linux CentOS 7 SSH Connection Refused after Reboot

Description
On CentOS 7, I am using SSH fine for a month. After doing some operation with "systemctl status/mask/disable/restart firewalld" followed by "sudo reboot -h now", I cannot use ssh and got "connection refused" after reboot.

Problem
ssh 127.0.0.1
connection refused

Log
journalctl -u sshd | tail -100
Bad configuration option:ForwardX11Trusted
ssh failed

Solution
Comment "ForwardX11Trusted" option in sshd_config file as follows.
sudo vi /etc/ssh/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
#ForwardX11Trusted yes

Outcome
journalctl -u sshd | tail -100
-- Logs begin at Tue 2016-11-08 17:45:28 HKT, end at Tue 2016-11-08 17:49:45 HKT. --
Nov 08 17:45:47 pc009 systemd[1]: Started OpenSSH server daemon.
Nov 08 17:45:47 pc009 systemd[1]: Starting OpenSSH server daemon...
Nov 08 17:45:47 pc009 sshd[1033]: Server listening on 0.0.0.0 port 22.
Nov 08 17:45:47 pc009 sshd[1033]: Server listening on :: port 22.
Nov 08 17:45:54 pc009 sshd[2296]: Accepted password for user from 10.1.10.111 port 59915 ssh2

2016年11月2日 星期三

SQLite with Java in Eclipse


Download JAR
Download sqlite-jdbc-3.14.2.jar from bit bucket https://bitbucket.org/xerial/sqlite-jdbc/downloads


Create Project
Eclipse > File > New > Java Project > Project Name = SQLiteJDBC













































Copy JAR File
Project > Right Click > New > Folder > lib > Right Click > Import > File System > from "Downloads" > select the downloaded JAR file


































Add JAR to Build Path Libraries
Project > Right Click > Properties > Libraries > Add JARs






























New Class
Project > Right Click > New > Class > Package = "com.sqlite.jdbc", Name = "SQLiteJDBC"


Code


package com.sqlite.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;

public class SQLiteJDBC {
       public static void main(String[] args) {
              Connection c = null;
              try {
                     Class.forName("org.sqlite.JDBC");
                     //c = DriverManager.getConnection("jdbc:sqlite:mdp.db"); // current directory
                     c = DriverManager.getConnection("jdbc:sqlite:data/mdp.db"); // data directory
              }
              catch (Exception e) {
                     System.err.println(e.getClass().getName() + ": " + e.getMessage());
                     System.exit(0);
              }
              System.out.println("Opened database successfully");
       }

}



Run
SQLiteJDBC.java > Right Click > Run As > Java Application

Opened database successfully







2016年10月11日 星期二

Check whether it is a valid binary search tree or not in 1 line in C++

struct Node {
       int data;
       Node* left;
       Node* right;
}

#include <limits.h>
bool checkBST(Node* root, int min = INT_MIN, int max = INT_MAX) {
       return !root || root->data >= min && root->data <= max
              && checkBST(root->left, min, root->data - 1) && checkBST(root->right, root->data + 1, max);
}


Design Pattern and Idiom

C++
NVI Idiom (Non-virtual interface, by creating a public non-virtual function that calls virtual private function that can be overridden by child class)

Java
"Double-Checked Locking" idiom, by checking null once, locking if null, and double checking null again, then initialize. It seems correct but it just works sometimes because by chance it is possible that thread B access the variable while thread A is locking and is partially creating the object. The correct solution is that after Java 5 the field should be declared volatile. The Java volatile field is equivalent to C++ atomic data member, allowing atomic assignment, and hence when thread B sees the variable it must be atomically fully created.

tcpdump and tcpreplay on Linux CentOS 7.2


tcpdump


sudo tcpdump -i em1 -nn port 14316

sudo tcpdump -i em1 -nn 'port 14316'
sudo tcpdump -i em1 -nn port 14316 or port 14311
sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311'


socat

sudo socat STDIO UDP4-RECV:14316,ip-add-membership=224.0.31.28:em1




All below scripts are tested.



Test


316SA

sudo socat STDIO UDP4-RECV:14316,ip-add-membership=224.0.31.28:em1


GC


360SA

sudo socat STDIO UDP4-RECV:14360,ip-add-membership=224.0.31.202:em1
360SB
sudo socat STDIO UDP4-RECV:15360,ip-add-membership=224.0.32.202:em1


MDP

311SA

sudo socat STDIO UDP4-RECV:14311,ip-add-membership=224.0.31.23:em1
311IA
sudo socat STDIO UDP4-RECV:14311,ip-add-membership=224.0.31.2:em1
311IB
sudo socat STDIO UDP4-RECV:15311,ip-add-membership=224.0.32.2:em1
311NA
sudo socat STDIO UDP4-RECV:14311,ip-add-membership=224.0.31.44:em1






[quantprod@hkoffice083 dev]$ sudo socat STDIO UDP4-RECV:14311,ip-add-membership=224.0.31.23:em1
2016/10/11 05:00:25 socat[20560] E bind(3, {AF=2 0.0.0.0:14311}, 16): Address already in use
[quantprod@hkoffice083 dev]$ sudo socat STDIO UDP4-RECV:14311,ip-add-membership=224.0.31.2:em1
2016/10/11 05:00:33 socat[20562] E bind(3, {AF=2 0.0.0.0:14311}, 16): Address already in use
[quantprod@hkoffice083 dev]$ sudo socat STDIO UDP4-RECV:15311,ip-add-membership=224.0.32.2:em1
2016/10/11 05:00:42 socat[20564] E bind(3, {AF=2 0.0.0.0:15311}, 16): Address already in use
[quantprod@hkoffice083 dev]$ sudo socat STDIO UDP4-RECV:14311,ip-add-membership=224.0.31.44:em1
2016/10/11 05:00:46 socat[20566] E bind(3, {AF=2 0.0.0.0:14311}, 16): Address already in use
[quantprod@hkoffice083 dev]$

pcap

sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311' -c 1000 -w 311SA.pcap
sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311' -c 1000 -w 311IA.pcap
sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311' -c 1000 -w 311IB.pcap
sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311' -c 1000 -w 311NA.pcap

sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311' -c 1000 -w 360SA.pcap
sudo tcpdump -i em1 -nn 'port 14316 or port 14360 or port 15360 or port 14311 or port 15311' -c 1000 -w 360SB.pcap

tcpreplay
sudo yum install tcpreplay
http://tcpreplay.synfin.net/wiki/tcpreplay

sudo tcpreplay --loop=0 --intf1=eth0 capture.pcapng

2016年10月10日 星期一

How to compile a Gradle project using command line in Java CME MDP 3.0



Example Project:
https://github.com/epam/java-cme-mdp3-handler


PrintAllSecuritiesTest
1. Copy the directory that contains the required jar files from workspace\AAA\build\b2bits-jmdp3-1.0\lib\ to workspace\AAA\bin\lib\

2. You can use below command to include the classpath of the jar files and start the test
java -cp ".;lib/*" com.epam.cme.mdp3.test.PrintAllSecuritiesTest

3. If the config files are not found, you will see below error messages.
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
java.lang.NullPointerException
        at com.epam.cme.mdp3.test.PrintAllSecuritiesTest.main(PrintAllSecuritiesTest.java:80)


4. Copy all xml files similar to workspace\AAA\src\test\resources\config.xml to workspace\AAA\bin\config.xml

5. Run the command again
C:\Users\rickypc\workspace\AAA\bin>java -cp ".;lib/*" com.epam.cme.mdp3.test.PrintAllSecuritiesTest
[INFO ] 2016-10-10 15:59:17.940 [Thread-1] PrintAllSecuritiesTest - Channel '311': N feed A is started

6. Notice the below log file will be generated.
Java Market Data Handler for CME Market Data (MDP 3.0).log


Note.
On linux, you need to add the below line to the file /etc/hosts
192.168.10.50 hkoffice083 localhost

SbeParserBenchmark

1. Prepare the file workspace\AAA\bin\dist\pcap\311_AX.bin from workspace\AAA\src\cucumber\sim\data\incr\311_AX_224.0.31.2_17511.zip

2. Run java -cp ".;lib/*" com.epam.cme.mdp3.test.SbeParserBenchmark
or
java -cp ".:lib/*" com.epam.cme.mdp3.test.SbeParserBenchmark


5. Run the command again
5. Run the command again
5. Run the command again
5. Run the command again
5. Run the command again



Eclipse

1. Add jar to Project > Properties > Java Build Path > Libraries > Add JARs































2. Add "Resource" folder as class path folder







































3. 

2016年10月6日 星期四

My CPU List Computer Hardware (2022)

2022

AMD Ryzen 9 3900X HKD$2500
CRUCIAL 8GB DDR4-2666 UDIMM 1.2V CL19 CT8G4DFS8266.8FE1 x 2 RMB$255
MSI B450M MORTAR MAX mATX AMD B450 AM4 4DIMM RTL8111H-CG RMB$220
Intel SSDPEKKF256G8L 3.3V 19JUN2018 NVME RMB$140
Cooler Master GX550 Fully Modular 80 PLUS RMB$160
ASUS GT730-MG-2GD3-V2 RMB$160
SOEYI Acer mATX 300x190x381mm RMB$89
100 RMB to HKD 123
Total = $2500 + RMB$1024 = 2500+1266 = $3766




The CPU that I have met


Desktop

Intel® Celeron® Processor 333 MHz, 128K Cache, 66 MHz FSB Socket 370
AMD Athlon XP 2100+ Socket 462 Thoroughbred
Intel® Pentium® 4 Processor 2.40 GHz, 512K Cache, 533 MHz FSB Socket 478
Intel® Pentium® D Processor 915 (4M Cache, 2.80 GHz, 800 MHz FSB) LGA775
AMD Althon 64 X2 3600+ Socket AM2
AMD Athlon 64 X2 4400+ Socket AM2
AMD Athlon 64 X2 5200+ Socket AM2
Intel® Core™2 Duo Processor E6600 (4M Cache, 2.40 GHz, 1066 MHz FSB) LGA775
AMD Turion II Neo N40L 1.5 GHz Dual Core
AMD A4-5300 Socket FM2
Intel® Core™ i3-2100 Processor (3M Cache, 3.10 GHz) LGA1155

Notebook

Intel® Core™ Duo Processor T2300 (2M Cache, 1.66 GHz, 667 MHz FSB) Samsung X11
Intel® Atom™ Processor N270 (512K Cache, 1.60 GHz, 533 MHz FSB) Asus 1000HD
Intel® Atom™ Processor N550 (1M Cache, 1.50 GHz) Samsung NC110
Intel® Core™2 Duo Processor P8600 (3M Cache, 2.40 GHz, 1066 MHz FSB) Lenovo X200
Intel® Core™ i5-2557M Processor (3M Cache, up to 2.70 GHz) Macbook Air 2011



Work

Intel® Xeon® Processor X5670 (12M Cache, 2.93 GHz, 6.40 GT/s Intel® QPI) BL460c G7
Intel® Xeon® Processor E5-2650 v2 (20M Cache, 2.60 GHz) BL460c G8

Intel® Core™ i7-4771 Processor (8M Cache, up to 3.90 GHz) LGA1150 VirtualBox
Intel® Core™ i5-4440 Processor (6M Cache, up to 3.30 GHz) LGA1150 Windows
Intel® Core™ i3-4150 Processor (3M Cache, 3.50 GHz) LGA1150 Linux
Intel® Xeon® Processor E5405 (12M Cache, 2.00 GHz, 1333 MHz FSB) RS1500SAS
Intel® Xeon® Processor E5520 (8M Cache, 2.26 GHz, 5.86 GT/s Intel® QPI) Dell R410

Working Notebook
Intel® Core™ i5-8250U on Lenovo X1 Carbon Gen 6 from 2018 to 2021
Intel® Core™ i5-7200U on Lenovo X1 Carbon Gen 5 from 2022

2016年10月5日 星期三

Installing CMake 3.7.0 on Windows 10

Installing CMake 3.7.0 on Windows 10

1. Download https://cmake.org/download/ > Platform > "Windows win64-x64 ZIP" > "cmake-3.7.0-rc1-win64-x64.zip", unzip as "C:\Program Files\cmake-3.7.0-rc1-win64-x64"


Note: It seems lucrative to download the common MSI file "cmake-3.7.0-rc1-win64-x64.msi" BUT it is used to install the CMake GUI which is designed to build the binary from CMake source files but NOT for installing the binaries. So DON'T waste your time to download the MSI file.

2. Add CMake's bin folder "C:\Program Files\cmake-3.7.0-rc1-win64-x64\bin" to System Envoronment Variables Path similar to JDK 
























3. Run cmd.exe > "cmake --version" to verify the installation
C:\Users\rickypc>cmake --version
cmake version 3.7.0-rc1
CMake suite maintained and supported by Kitware (kitware.com/cmake).

Installing Gradle 3.1 on Windows 10

Detail also refer to https://www.ibm.com/developerworks/cn/opensource/os-cn-gradle/



Installing Gradle on Windows 10

1. Go to https://gradle.org/gradle-download/, download Binary only distribution, unzip as C:\Program Files\Java\gradle-3.1











2. Add Gradle's bin folder "C:\Program Files\Java\gradle-3.1\bin" to System Envoronment Variables Path similar to JDK






3. Run cmd.exe > "gradle -version" to verify the installation
C:\Users\rickypc>gradle -version
------------------------------------------------------------
Gradle 3.1
------------------------------------------------------------
Build time:   2016-09-19 10:53:53 UTC
Revision:     13f38ba699afd86d7cdc4ed8fd7dd3960c0b1f97
Groovy:       2.4.7
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_101 (Oracle Corporation 25.101-b13)
OS:           Windows 10 10.0 amd64

2023 Promox on Morefine N6000 16GB 512GB

2023 Promox on Morefine N6000 16GB 512GB Software Etcher 100MB (not but can be rufus-4.3.exe 1.4MB) Proxmox VE 7.4 ISO Installer (1st ISO re...