3rdstage's Wiki
Advertisement

Platforms

SMACK

  • KillrWeather
    • a reference application (which we are constantly improving) showing how to easily leverage and integrate Apache Spark, Apache Cassandra, and Apache Kafka for fast, streaming computations in asynchronous Akka event-driven environments.

ROS


Frameworks

Networking

Vert.x

Testing

Selenium

XMLUnit

Mobile

Sencha Touch


Libraries

XML

EXSLT

  • http://exslt.org/
  • Desc. : a community initiative to provide extensions to XSLT.
  • License : ?

Jing

WSDL viewer


Networking

gRPC

Protocol Buffers

  • https://code.google.com/p/protobuf/
  • Desc. : a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.
  • License : BSD License

Security

NSS

JSS

Readings

Syntax Highlighter

Library Written in Description Supporting Languages Remarkable Languages Used-by
Pygments Python Python syntax highlighter languages MediaWiki, Asciidoctor
CodeRay Ruby a Ruby library for syntax highlighting Encoders Asciidoctor
Rouge Ruby a pure Ruby syntax highlighter language Asciidoctor
highlight.js Syntax highlighting for the Web language Asciidoctor
Prism JavaScript a lightweight, robust, and elegant syntax highlighting library. languages plantuml Slidev
Shiki a beautiful Syntax Highlighter languages
Language Pygments CodeRay CodeRay Rouge highlight.js Prism Shiki
PostgreSQL SQL Dialect postgres, postgresql

misc

CKEditor

markItUp

  • http://markitup.jaysalvat.com/
  • Desc. : allows you to turn any textarea into a markup editor such as Html, Textile, Wiki Syntax, Markdown, BBcode or even your own Markup system.
  • License : MIT/GPL

Scintilla

  • http://www.scintilla.org/
  • Desc. : A free source code editing component for Win32, GTK+, and OS X
  • License : permits use in any free project or commercial product.

Tools

IDE

  • Language Server Protocol
    • The Language Server Protocol (LSP) defines the protocol used between an editor or IDE and a language server that provides language features like auto complete, go to definition, find all references etc.
    • Language Server Protocol

VS Code

Settings
Category Key Description Type/Values Default Value Recommended Value Scope Remarks
telemetry telemetryLevel Controls the different types of telemetry we send with a single setting string all off User usage report, crash report
update mode Controls the auto-update of VS Code string default none User
extensions autoUpdate Enable of disable the auto-update of extensions boolean false User
workbench workbenche.ditor.revealIfOpen Controls whether an editor is revealed in any of the visible groups if opened. boolean false
workbench.tree.indent Controls tree indentation in pixels integer 8 16
enableExperiments Enable or disable experimental features boolena false User
files files.exclude Configures glob patterns for excluding files and folders. object
files.watcherExclude Configures paths or glob patterns to exclude from file watching. object
Extensions
Category Extension Provider Description Settings Remarks
General Editing Support Code Spell Checker A basic spell checker that works well with camelCase code. cSpell.* cSpell.enabled: boolean, cSpell.words: string[]
Change Case Extension Quickly change the case of the current selection or current word. extension.changeCase.* commands
Java Support Language Support for Java Red Hat Java Linting, Intellisense, formatting, refactoring, Maven/Gradle support and more...
Spring Boot Tools VMware Provides validation and content assist for Spring Boot application.properties, application.yml properties files. As well as Boot-specific support for .java files.
Project Manager for Java Microsoft Manage Java projects in Visual Studio Code
Debugger for Java Microsoft A lightweight Java Debugger based on Java Debug Server which extends the Language Support for Java by Red Hat.
Maven for Java Microsoft Manage Maven projects, execute goals, generate project from archetype, improve user experience for Java developers.
Gradle for Java Microsoft Manage Gradle Projects, run Gradle tasks and provide better Gradle file authoring experience in VS Code
Test Runner for Java Microsoft Run and debug JUnit or TestNG test cases.
JavaScript/TypeScript Support jshint Microsoft Integrates JSHint into VS Code. jshint.enable: boolean, jshint.config, jshint.excludePath
ESLint Microsoft Integrates ESLint into VS Code.
Python Support Python Microsoft IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more.
Pylance Microsoft A performant, feature-rich language server for Python in VS Code
Rust Support rust-analyzer The Rust Programming Language Provides support for the Rust programming language.
Solidity Support Solidity Visual Developer ConsenSys Contributes security centric syntax and semantic highlighting, a detailed class outline, specialized views, advanced Solidity code insights and augmentation to Visual Studio Code.
Truffle for VS Code ConsenSys Software Inc. Build, debug and deploy smart contracts on Ethereum and EVM-compatible blockchains.
Solidity Nomic Foundation Solidity and Hardhat support by the Hardhat team formatting
Markup Support Markdown All in One All you need for Markdown (keyboard shortcuts, table of contents, auto preview and more)
Markdown Preview Enhanced(MPE) An extension that provides you with many useful functionalities such as automatic scroll sync, math typesetting, mermaid, PlantUML, pandoc, PDF export, code chunk, presentation writer, etc. MPE documentation
Markdown Preview Mermaid Support Adds Mermaid diagram and flowchart support to VS Code's builtin markdown preview
AsciiDoc asciidoctor An extension that provides live preview, syntax highlighting and snippets for the AsciiDoc format using Asciidoctor.
YAML Red Hat YAML Language Support by Red Hat, with built-in Kubernetes syntax support
XML Red Hat Provides support for creating and editing XML documents, based on the LemMinX XML Language Server.
Format Support Even Better TOML tamasfe Fully-featured TOML support TOML
Tools Support Docker Microsoft Makes it easy to build, manage, and deploy containerized applications from Visual Studio Code.
PlantUML Rich PlantUML support for Visual Studio Code
Slidev Slidev support for VS Code
Database Support PostgreSQL Microsoft An extension for developing PostgreSQL with functionalities including
  • Extension Providers
Provider Description Extensions Remarks
Microsoft Python, C/C++, C#, IntelliCode, jshint, ESLint, Project Manager for Java, Maven for Java, Gradle for Java, Docker
Red Hat Language Support for Java, YAML, XML, Ansible, BPMN Editor
VMware Spring Boot Tools
Code Spell Checker
Setting Items Description Sub-items Remark
Configuration Settings top-level version, language, words, flagWords, ignorePaths, ignoreWords, patterns, ignoreRegExpList
Custom Dictionaries dictionaries, dictionaryDefinitions
Language Settings languageSettings languageId, locale, dictionaries,
root: object --+-- $schema: string
               |
               +-- version: string
               |
               +-- language: string
               |
               +-- words: string[]
               |
               +-- flagWords: string[]
               |
  • CSpell Dictionaries
    • language dictionaries, programming dictionaries (bash, Java, Python, TypeScript, ...), specialized dictionaries
Shortcuts
Category Command Shortcut (Windows) Shortcut (macOS) Description Remarks
Common Command Pallette F1 F1
Editing Copy ^C ^C
Cut
Paste ^V ^V
Undo ^Z ^Z
Indent Lines ^] ^]
Outdent Lines ^[ ^[
Toggle Line Comment(s) ^/ ^/
Run/Debug Start Debugging F5 F5 Start debugging session
Run w/o Debugging ^F5
Typical Configuration
{
    "editor.fontSize": 16,
    "editor.tabSize": 2,
    "editor.detectIndentation": false,
    "editor.acceptSuggestionOnCommitCharacter": false,
    "editor.snippetSuggestions": "bottom",
    "editor.wordBasedSuggestions": false,
    "editor.suggestSelection": "recentlyUsedByPrefix",

    "debug.console.fontSize": 16,
    "terminal.integrated.fontSize": 16,

    "files.encoding": "utf8",
    "files.eol": "\n",
    "files.trimTrailingWhitespace": true,

    "files.exclude": {
      "node_modules/[!@]*": true,
      "node_modules/@[!o]*": true,
      "node_modules/@openzeppelin/contract-loader": true,
      "node_modules/@openzeppelin/test*": true,
      "node_modules/@openzeppelin/contract*/build": true,
      "contracts/**/artifacts": true,
      ".pytest_cache": true,
      "run/ganache/data": true,
      "run/geth/data": true,
      "run/besu/data": true
    },

    "files.watcherExclude": {
      "**/.git/objects/**": true,
      "**/.git/subtree-cache/**": true,
      "**/.hg/store/**": true,
      "**/node_modules/*/**": true,
      "contracts/**/artifacts/**": true,
      "types/truffle-contracts/**": true,
      "run/ganache/data/**": true,
      "run/geth/data/**": true,
      "run/besu/data/**": true
    },

    "maven.executable.preferMavenWrapper" : false,

    "jshint.enable" : true,
    "jshint.config": ".jshintrc",

    "markdown.preview.fontSize": 16,
    
    "cSpell.enableFiletypes": [
      "solidity"
    ]
}
{
  "version": "0.2",
  "language": "en",
  "words": [
    "websocket", // Techonology Geneal
    "consolas", // Fonts
    "lucida",
    "menlo",
    "webp", // Extensions
    "addn", // `bn.js`
    "subn",
    "pickone", // `chance.js`
    "pickset",
    "ipfs", // Blockchain
    "secp256k1",
    "struct", // Ethereum
    "bytecode",
    "yellowpaper",
    "erc",
    "ierc",
    "vyper",
    "remixd",
    "solhint",
    "mythrill",
    "plantuml", // PlantUML
    "startuml",
    "enduml",
    "skinparam",
    "addr", // General Abbreviations
    "addrs",
    "contr", // contract
    "contrs",
    "descr", // description
    "fctr", // factory
    "rslt" // result
  ]
}
Readings
  • IntelliSense : a general term for various code editing features including: code completion, parameter info, quick info, and member lists.
JavaScript with VS Code
Rust with VS Code
C/C++ with VS Code

Atom

Readings
  • apm - Atom Package Manager
    • You can configure apm by using the apm config command line option (recommended) or by manually editing the ~/.atom/.apmrc file as per the npm config.
    • To list apm configuration by scope and file, execute $ apm config ls
Plug-ins
Plug-in Description Remarks
PlatformIO IDE Terminal A terminal package for Atom, complete with themes, API and more for PlatformIO IDE.

Eclipse Theia

IntelliJ IDEA

Plugins
Plugin Site Description Remarks
BashSupport https://www.plugin-dev.com/project/bashsupport/ provides an almost complete development environment to work with Bash scripts in IntelliJ platform products

NetBeans

  • https://netbeans.org/
  • Desc. : lets you quickly and easily develop Java desktop, mobile, and web applications, while also providing great tools for PHP and C/C++ developers.
  • License : dual license consisting of the CDDL v1.0 and the GPL v2

UML Modeling

PlantUML

References
  • Diagrams
Diagram Type Homepage Ashley's Remarks
Sequence Diagram Sequence Diagram UML Sequence Diagram
Class Diagram Class Diagram
State Diagram State Diagram
Activity Diagram Activity Diagram
Usecase Diagram
Component Diagram
Deployment Diagram
ERD Entity Relationship Diagram
EBNF Extended BNF Diagram
JSON JSON Data
YAML YAML Data
WBS Work Breakdown Structure Diagram
Mind Map MindMap Diagram
  • Features
Feature Description Remarks
Color specify fill and line colors using standard CSS color name, RGB(#RRGGBB), RGBA(#RRGGBBaa), and more
Creole A light-weight Creole engine is integrated in PlantUML to have a standardized way to emit styled text.
OpenIconic an very nice open source icon set which have been integrated into the creole parser, so you can use them out-of-the-box. <&icon_name>
Salt (Wireframe) a subproject included in PlantUML that may help you to design graphical interface or Website Wireframe or Page Schematic or Screen Blueprint.
Sprite a small graphic element that can be used in diagrams.
Style testing stage
Skinparam can change colors and font of the drawing using the skinparam command.
Themes !them theme_name amiga, mars, metal, mono ...
Preprocessing
Common Commands
Command Description Remarks
', /' ... '/ single line or multi-lines comments
header, footer add a footer or a header on any generated diagram
scale zoom the generated image
title put a title creole formatting
caption put a caption under the diagram
legend put a legend
Skin
Category Parameters Remarks
Default DefaultFontName, DefaultFontColor
Class ClassFontName, ClassFontSize
Sequence
Creole Support
This is **bold**
This is //italics//
This is ""monospaced""
This is --stricken-out--
This is __underlined__
This is ~~wave-underlined~~

This is not ~""monospaced""

* Bullet list
* Second item
** Sub item

= Extra-large heading
== Large heading
=== Medium heading
==== Small heading
Element Format Remarks Sample
Underlined Text <u:color>text</u>
Wave Underlined Text <w:color>text</w>
Striked Text <s:color>text</s>
Foreground Color <color:color>text</color>
Background Color <back:color>text</back>
Font Size <size:n>text</size>
Link [[url{tooltip} label]] label and tooltip are optional [[http://plantuml.com]]
[[http://plantuml.com PlantUML Homepage]]
[[http://plantuml.com{PlantUML} PlantUML Homepage]]
  • OpenIconic
    • : an very nice open source icon set which have been integrated into the creole parser, so you can use them out-of-the-box.
Icon Description Remarks
<&flag> flag
<&pin> pin
<&expland-down> expand down
<&expland-rigght> expand down
<&plus> plus sign
Standard Library
Library Reference Description Remarks
archimate ArchiMate PlantUML macros and other includes for creating Archimate Diagrams easily. ArchiMate Diagram
awslib AWS Architecture Icons PlantUML images, sprites, macros, and other includes for Amazon Web Services (AWS) services and resources.
cloudinsight Cloudinsight Icons PlantUML sprites generated from Cloudinsight icons, which can easily be used in PlantUML diagrams for nice visual representation of popular technologies.
material Material Design Icons free Material style icons from Google and other artists
logos SVG Logos PlantUML sprites generated from Gil Barbara's logos, which can easily be used in PlantUML diagrams for nice visual aid.
Sprite
  • Sprite : a small graphic element that can be used in diagrams
Sprite Import Syntax Remarks
Java !include <cloudinsight/java> <$java>
Tomcat !include <cloudinsight/tomcat> <$tomcat>
Kafka !include <cloudinsight/kafka> <$kafka>
Cassandra !include <cloudinsight/cassandra> <$cassandra>
Category Sprite Description Remarks
Concept overview, edit, copy, download, play, pause, loading, disable, exit
Symbol remove-sign, point, plus, question, left, right
Object user, trash, bell, dashboard, desktop, server, file
Protocol snmp
Programming java, python, nodejs, ruby, php
O/S windows, linux, docker, openstack
Appl. Server apache, nginx, tomcat, zookeeper, haproxy
Database mysql, postgresql
NoSQL memcached, mongodb, redis, cassandra, couchbase, couchdb, kafka, hdfs
MQ activemq, rabbitmq
Sprite Import Syntax Remarks
Kotlin !include <logos/kotlin> <$kotlin>
Kafka !include <logos/kafka> <$kafka>
Cassandra !include <logos/cassandra> <$cassandra>
Preprocessing
  • Variable definition : =, ?=
  • Boolean expression
  • Conditions : !if, !else, !elseif, !endif
  • While loop : !while, !endwhile
  • Including files or URL : !include
  • Builtin functions : %func
Readings
Typical Source
Diagram Boilerplates
  • Sequence Diagram Boilerplate
@startuml

' Useful references
/'
https://plantuml.com/class-diagram
https://plantuml.com/sequence-diagram
https://plantuml.com/activity-diagram-beta
https://plantuml.com/state-diagram
https://plantuml.com/commons
https://plantuml.com/creole
https://plantuml-documentation.readthedocs.io/en/latest/formatting/color-names.html
https://www.w3schools.com/colors/colors_names.asp
https://plantuml.com/color
'/

' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
skinparam {
  'global font
  'DefaultFontName Consolas
  DefaultFontName Monaco
  'DefaultFontName Lucida Console
  'DefaultMonospacedFontName Consolas
  'DefaultFontStyle bold
  
  'diagram scope style
  DiagramBorderThickness 1
  DiagramBorderColor black
  'BackgroundColor transparent
  BackgroundColor #eeeeee
  PageMargin 10

  'note style
  NoteFontName Courier
  NoteBackgroundColor SeaShell
  NoteBorderColor transparent
  NoteShadowing false
  
  'class style
  MinClassWidth 75
  ClassFontStyle bold

  'arrow style
  ArrowFontSize 16
  ArrowThickness 1
  ResponseMessageBelowArrow true

  BoxPadding 50
  ParticipantPadding 20  
}

' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html#sequence
skinparam Sequence{

  ParticipantFontName Consolas
  ArrowFontName Consolas

  DividerBorderThickness 1.5
  ReferenceBorderThickness 1.5
  MessageAlignment reverseDirection   /' left | right | direction | reverseDirection '/

  ArrowColor DarkSlateGray
  ArrowThickness 1.3
  LifeLineBorderColor DarkSlateGray
  LifeLineBorderThickness 1.3

  ActorBorderColor DarkSlateGray
  ActorBackgroundColor GhostWhite
  ParticipantBorderColor DarkSlateGray
  ParticipantBorderThickness 1.5
  ParticipantBackgroundColor GhostWhite

  BoxBackgroundColor GhostWhite
  BoxBorderColor transparent  

  GroupBorderThickness 1.3
  GroupBorderColor DarkBlue
  GroupBodyBackgroundColor Azure
}

skinparam Group{
  BorderThickness 1.3
  BorderShadowing true
}

' https://plantuml.com/commons
scale max 2048 width
hide Circle
hide Footbox

'title Title
'caption Caption
'mainframe Title

' vertical space |||
' vertical space ||50||
' delay ...


||200||

@enduml
  • Use-Case Diagram Boilerplate
@startuml

' https://plantuml.com/use-case-diagram

' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
skinparam {
  'global font
  'DefaultFontName Consolas
  DefaultFontName Monaco
  'DefaultFontName Lucida Console
  'DefaultMonospacedFontName Consolas
  'DefaultFontStyle bold
  
  'diagram scope style
  DiagramBorderThickness 1
  DiagramBorderColor black
  'BackgroundColor transparent
  BackgroundColor #eeeeee
  PageMargin 10
}

left to right direction
scale max 2048 width

actor "End User" as user
actor Admin as admin

@enduml
  • State Diagram Boilerplate
@startuml

' https://plantuml.com/state-diagram

' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
skinparam {
  'global font
  'DefaultFontName Consolas
  DefaultFontName Monaco
  'DefaultFontName Lucida Console
  'DefaultMonospacedFontName Consolas
  'DefaultFontStyle bold
  
  'diagram scope style
  DiagramBorderThickness 1
  DiagramBorderColor black
  'BackgroundColor transparent
  BackgroundColor #eeeeee
  PageMargin 10
}

scale max 2048 width

@enduml
  • Class Diagram Boilerplate
@startuml

' Useful references
/'
https://plantuml.com/class-diagram
https://plantuml.com/creole
https://plantuml-documentation.readthedocs.io/en/latest/formatting/color-names.html
https://www.w3schools.com/colors/colors_names.asp
https://plantuml.com/color
'/

' https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html
skinparam {
  'global font
  'DefaultFontName Consolas
  DefaultFontName Monaco
  'DefaultFontName Lucida Console
  'DefaultMonospacedFontName Consolas
  'DefaultFontStyle bold
  
  'diagram scope style
  DiagramBorderThickness 1
  DiagramBorderColor black
  'BackgroundColor transparent
  BackgroundColor #eeeeee
  PageMargin 10
}

skinparam Class {
  AttributeIconSize 0
}

hide Circle
hide empty Fields
hide empty Methods

@enduml
Sequence Diagrams
  • Using return and delay (|||
@startuml

scale max 1536 width
hide Circle
hide Footbox

participant "Client" as client
participant "ERC1155Contract" as contract <<smart contract>>

client ->> contract ++ : **mint**(**//acct1//**, //asset1//, **//n1//**)
  return
client -> contract ++ : balanceOf(//acct1//)
  return //n1//
client -> contract ++ : supplyOf(//asset1//)
  return //n1//
||50||
client ->> contract ++ : **mint**(**//acct2//**, //asset1//, **//n2//**)
  return 
client -> contract ++ : balanceOf(//acct1//)
  return //n1//
client -> contract ++ : balanceOf(//acct2//)
  return //n2//
client -> contract ++ : supplyOf(//asset1//)
  return //n1 + n2//
||50|| 
client ->> contract ++ : **mint**(**//acct1//**, //asset1//, **//n3//**)
  return 
client -> contract ++ : balanceOf(//acct1//)
  return //n1 + n3//
client -> contract ++ : balanceOf(//acct2//)
  return //n2//
client -> contract ++ : supplyOf(//asset1//)
  return //n1 + n2 + n3//
||30||
@enduml

UMLet

UMLGraph

Readings

Sirius

  • http://www.eclipse.org/sirius/
  • Desc. : an Eclipse project which allows you to easily create your own graphical modeling workbench by leveraging the Eclipse Modeling technologies, including EMF and GMF.
  • License

BOUML

  • https://www.bouml.fr/
  • Desc. : a free UML 2 tool box including a modeler allowing you to specify and generate code in C++, Java, Idl, Php, Python and MySQL.
  • License :

UML Designer

Modelio

yEd

  • Palettes
Palette Description Remarks
SpinetiX pallete for yEd
AWS Simple Icons Palettes for yED AWS
Network Topology Icons for yEd Cisco
SVG icons generated from the Font Awesome collection Font Awesome
Readings

Mermaid

Diagram Element Description Remarks
Sequence Diagram sequenceDiagram
ZenUML Sequence Diagram zenuml sequence diagrams with ZenUML ZenUML
Class Diagram classDiagram
State Diagram stateDiagram-v2
ERD erDiagram
Flowchart flowchart
C4 Diagram C4Context, C4Container, C4Component, C4Dynamic
Mind Map mindmap
Gantt Chart gantt
Timeline timeline
Quadrant Chart​ quadrantChart
Pie Chart pie

ZenUML

  • https://zenuml.com/
  • Desc. : a multi-platform diagram-as-code solution for sequence diagrams, flow chart and more

Kroki

  • https://kroki.io/
  • Desc. : provides a unified API with support for BlockDiag, BPMN, Bytefield, C4 (with PlantUML), D2, DBML, Ditaa, Erd, Excalidraw, GraphViz, Mermaid, Nomnoml, Pikchr, PlantUML, Structurizr, SvgBob, Symbolator, TikZ, UMLet, Vega, Vega-Lite, WaveDrom, WireViz... and more to come!
  • License : MIT
  • Sources : https://github.com/yuzutech/kroki

Data Modeling

DBML

SQL Developer Data Modeler

References
  • Features supported or not supported
Feature Supporting Remarks
Defining AK(Alternative Key)
Defining View Yes
Defining FK from AK
Using Domain Yes datatype alias for more intuitive and consistent representation
Defining mandatory or initial data Yes
Generate DDL Yes - Oracle Database 9i/10g/11g/12c, SQL Server 2000/2005/2008/2012, DB2/UDB 7.1/8.1/9
- Not supporting MySQL and PostgreSQL as of 4.2
Using name template Yes PK, FK, UK, Check, Index, ...
Config
  • datamodeler/bin/datamodeler.conf
#SetJavaHome ../../jdk
SetJavaHome C:/lang/jdk1.8
  • ide/bin/ide.conf
AddVMOption -Duser.language=en
AddVMOption -Duser.country=US
  • datamodeler/types/dl_settings.xml
    • font_name="Dialog" font_size="10" -> font_name="Malgun Gothic" font_size="12"
Readings

SQL Power Architect

  • Features supported or not supported
Feature Supporting Remarks
Defining AK(Alternative Key) Yes
Defining View No
Defining FK from AK No

DbSchema

References
  • DbSchema Features
    • Logical Design, Physical Design, Database Connectivity, Reverse Engineering, Schema Sync, ...
  • Design Database Schema : Tables, Columns, Indexes, Foreign Keys, Constraints, Views, Sequences
Property Symbol Description Remarks
Primary Key Key
Foreign Key Outgoing Arrow
Referenced Column Incoming Arrow
Mandatory Column Double Quotation Mark (")
Indexed Column Magnifier
Readings

Text Editor

vi

Commands
Category Command Description Remarks
Movement h Move cursor left one character
j Move cursor down one line
k Move cursor up one line
l Move cursor right one character
0 Move cursor to the start of current line Zero
^ Move cursor to first non-whitespace character
$ Move cursor to the end of current line
b Move cursor to the start of current or preceding word
w Move cursor to the start of next word
gg Move to the first line
G Move to the last line
nG Move to the nth line
Deleting x Delete single character under cursor
dd Delete current line
ndd Delete the next n lines, including the current line
D Delete the remainder of the line, starting with current cursor position
Copy/Paste yy Yank current line into the buffer
nyy Yank the next n lines, including the current line into the buffer
p Paste the line(s) in the buffer into the text after the current line
Misc u Undo your last action
ex Commands
: addr command

addr:
  %       all lines in file
  x,y     lines x to y
  .       current line
  n       line number: n
  $       last line of file
  x-n     n lines before line x
  x+n     n lines after line x
  /pat/   forward to line containing pat
  ?pat?   backward to line containing pat

command:
  s/pat/text/     substitute 1st match of pat with text
  s/pat/text/g    substitute every match of pat with text
  s/pat/text/n    substitute the nth occurrence of pat with text
  ya c            yank into buffer c or the general buffer if c is omitted
  g address cmd   execute cmd on all lines which satisfy address
  >               shift right
  <               shift left
  d               delete line
  ! UNIX-cmd      execute UNIX-cmd on line
  m address       move lines to address
Command Description Remarks
:1,$d Delete all lines
:.,$d Delete lines from current to end
:set nu Display line numbers
Tips and Trics
Simple Configuration
  • ~/_vimrc
set fileencoding=utf-8
set fileencodings=utf-bom,utf-8,euc-kr,cp949,latim1
" set backupdir=c:\\temp
 
set wrap
set smartindent
set tabstop=2
set shiftwidth=2
set nowrapscan
set number
set ruler
 
if has("syntax")
  syntax on
endif

jEdit

  • http://www.jedit.org/
  • Desc. : a mature programmer's text editor with hundreds (counting the time developing plugins) of person-years of development behind it
  • License : GPL 2.0

Documentation

Swagger

Component Description Maven Artifacts
Swagger Core a Java implementation of the OpenAPI Specification. io.swagger.core » v3
Swagger CodeGen a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. io.swagger.codegen » v3
References
API
Annotation Description Elements Remarks
@Operation Used to define a resource method as an OpenAPI Operation, and/or to define additional properties for the Operation.
@Parameter Used on a method parameter to define it as a parameter for the operation, and/or to define additional properties for the Parameter. Can be used in place of or together with the JAX-RS parameter annotations (@PathParam, @QueryParam, @HeaderParam, @FormParam and @BeanParam)
@RequestBody Used on a method parameter to define it as the Request Body of the operation, and/or to define additional properties for such request body. @Content
@ApiResponse Used at method level or as field of Operation to define one or more responses of the Operation. @Content
@Content Used to define the content/media type of a parameter, request or response. @Parameter.content, @RequestBody.content, @ApiResponse.content
@Schema used to define a Schema for a set of elements of the OpenAPI spec, and/or to define additional properties for the schema. hidden, example, examples, exampleClasses @Parameter.schema, @Content.schema
Annotation Description Remarks
@ApiModel Provides additional information about Swagger models.
@ApiModelProperty Adds and manipulates data of a model property.
Codegen
Readings
Typical Samples
Callback
  • Operation part
  @PostMapping(
    produces = APPLICATION_JSON_VALUE)     
  @Operation(
    summary = "Asset Creation",
    tags = "Assets"
    description = "...")
  @Callback(
    name = "Asset Created Success Callback",
    callbackUrlExpression = "..."
    operation = @Operation(
      method = "post",
      requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
        content = @Content(
          mediaType = "application/json",
          schema = @Schema(
            implementation = foo.bar.AssetCreatedMessage.class)))))
  public @ResponseBody String createAsset(@RequestBody final AssetCreationReq req){
    ...
  }
  • Callback request body schema (foo.bar.AssetCreatedMessage) part
@Getter
@Schema(title = "AssetCreatedMessage")
public class AssetCreatedMessage{

  @Schema(title = "Asset ID", description = "Identifier to specify an asset", example = "31")
  @NotNull @Min(1) private Integer id;

  @Schema(title = "Asset Type", description = "Asset type", example = "Paintings")
  @NotBlank @Size(min = 1, max = 50) private AssetType type;

  @Schema(title = "Created At", description = "When this asset is registered first time", example = "2023-03-22T09:51:23")
  private LocalDateTime createdAt;
}

Swagger2Markup

  • https://github.com/Swagger2Markup/swagger2markup
  • Desc. : simplify the generation of an up-to-date RESTful API documentation by combining documentation that’s been hand-written with auto-generated API documentation produced by Swagger.
  • License : Apache License Version 2.0

SpringFox

References
Readings
  • Documenting Spring Boot REST API with Swagger and SpringFox
    • basic dependency : io.springfox:springfox-swagger2:2.9.2
    • adding UI including swagger-ui.html : io.springfox:springfox-swagger-ui:2.9.2
    • adding JSR-303 support : io.springfox:springfox-bean-validators:2.9.2, @Import(BeanValidatorPluginsConfiguration.class)
Samples

springdoc-openapi

Readings
Property Description Default Remarks
springdoc.api-docs.resolve-schema-properties To enable property resolver on @Schema (name, title and description). false
springdoc.model-converters.sort-converter.enabled To disable Sort converter true
springdoc.writer-with-order-by-keys Enable a deterministic/alphabetical ordering false
springdoc.writer-with-default-pretty-printer To enable pretty print of the OpenApi specification. false
springdoc.swagger-ui.showCommonExtensions Controls the display of extensions (pattern, maxLength, minLength, maximum, minimum) fields and values for Parameters.
springdoc.swagger-ui.operationsSorter Apply a sort to the operation list of each API Array.prototype.sort()
springdoc.swagger-ui.tagsSorter Apply a sort to the tag list of each API
  • Typical configuration
springdoc:
  use-fqn: false
  swagger-ui:
    show-common-extensions: true
    default-model-rendering: "example"   # ("example" | "model")
    default-models-expand-depth: 5
    default-model-expand-depth: 5
    disable-swagger-default-url: false
    #validator-url: 'none'   # 'none' : no validation
  api-docs:
    path: /swagger-ui/api-docs
    enabled: true

OpenAPI Generator

Readings

ReDoc

Configuration
Scheme Item Type Default Description Remarks
theme.openapi expandDefaultResponse boolean Enables or disables expanding default response content panel
expandDefaultRequest boolean
expandResponses string
CLI
Command Syntax Description Options Remarks
build-docs redocly build-docs api option1 option2 ... builds Redoc into an HTML file. --config, --disableGoogleFont, --output(-o), --title
Typical Usages
  • Running ReDoc server.
$ redoc-cli serve ./api-spec.json --port 8088
  • Minimal configuration file
features.openapi:
  expandDefaultServerVariables: true
  expandDefaultRequest: true
  expandDefaultResponse: true
  expandSingleSchemaField: true
  expandResponses: '200'
  schemaExpansionLevel: 3
  sortTagsAlphabetically: true

Doxygen

  • http://www.stack.nl/~dimitri/doxygen/
  • Desc. : a documentation system for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D.
  • License : GPL

Sphinx

References
CLI
Command Syntax Description Remarks
sphinx-build sphinx-build [options] sourcedir outputdir [filename …] Generates documentation from the files in sourcedir and places it in the outputdir
sphinx-quickstart sphinx-quickstart An interactive tool that asks some questions about your project and then generates a complete documentation directory and sample Makefile to be used with sphinx-build
Extensions
Extension Description Remarks
sphinxcontrib-openapi a Sphinx extension to generate APIs docs from OpenAPI (fka Swagger) spec.
Solidity Domain for Sphinx

Pandoc

  • http://johnmacfarlane.net/pandoc/
  • Desc. : convert documents in markdown, reStructuredText, textile, HTML, DocBook, or LaTeX to HTML formats, word processor formats, documentation formats, TeX formats, PDF, and/or lightweight markup formats.
  • License : GPL
  • Sources

Asciidoctor

  • https://asciidoctor.org/
  • Desc. : A fast text processor & publishing toolchain for converting AsciiDoc to HTML5, DocBook & more.

jax-doclets

xs3p

Enunciate

MireDot


Publication

Medium

Category 3rd-party
Code Sample GitHub Gists
Table Airtable
Equations embed.fun

GitBook

CLI
$ gitbook help serve
    build [book] [output]       build a book
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)
        --format                Format to build to (Default is website; Values are website, json, ebook)
        --[no-]timing           Print timing debug information (Default is false)

    serve [book] [output]       serve the book as a website for testing
        --port                  Port for server to listen on (Default is 4000)
        --lrport                Port for livereload server to listen on (Default is 35729)
        --[no-]watch            Enable file watcher and live reloading (Default is true)
        --[no-]live             Enable live reloading (Default is true)
        --[no-]open             Enable opening book in browser (Default is false)
        --browser               Specify browser for opening book (Default is )
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)
        --format                Format to build to (Default is website; Values are website, json, ebook)

    install [book]              install all plugins dependencies
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)

    parse [book]                parse and print debug information about a book
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)

    init [book]                 setup and create files for chapters
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)

    pdf [book] [output]         build a book into an ebook file
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)

    epub [book] [output]        build a book into an ebook file
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)

    mobi [book] [output]        build a book into an ebook file
        --log                   Minimum log level to display (Default is info; Values are debug, info, warn, error, disabled)
Plugins
Plugin Description Remarks
hints Styled hint blocks in your docs
puml UML Diagrams rendering using PlantUML
prism Plugin for Prism

Read the Docs

  • https://readthedocs.org/
  • Desc. : simplifies software documentation by automating building, versioning, and hosting of your docs for you.

Docsify

Scribus

Publican

Partner Program

mdBook


SQL Client/Database Management

SQuirreL SQL Client

  • http://www.squirrelsql.org/
  • Desc. : A graphical Java program that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc.

HeidiSQL

  • http://www.heidisql.com/
  • Desc. : a useful and reliable tool designed for web developers using the popular MySQL server, Microsoft SQL databases and PostgreSQL
  • License : GPL

MySQL Workbench

OS Location Remarks
Windows %AppData%\MySQL\Workbench\
macOS ~/Library/Application Support/MySQL/Workbench/
Linux ~/.mysql/workbench/
Color/Shape Meaning Remarks
Yellow Key primary key
Red Key primary key, foreign key
Blue Diamond Filled non-null
Red Diamond Filled non-null, foreign key
Blue Diamond Unfilled nullable
Red Diamond Unfilled nullable, foreign key

IBM Data Studio

Oracle SQL Developer

SchemaSpy

  • http://schemaspy.sourceforge.net/
  • Desc. : a Java-based tool (requires Java 5 or higher) that analyzes the metadata of a schema in a database and generates a visual representation of it in a browser-displayable format.
  • License : Lesser GNU Public License 2.1

SQLLine

Robomongo


Software License Analysis

FOSSology

Ninka

OSS Discovery


System Diagnosis/Monitoring

nmon

top

  • Tips
    • Remarkable commands
      • W : Write-the-Configuration-File
      • f | F : :Fields-Management
      • H : Threads-mode toggle
      • I : Irix/Solaris-Mode toggle
      • t : Task/Cpu-States toggle
      • m : Memory/Swap-Usage toggle
      • 1 : Single/Separate-Cpu-States toggle
      • c : Command-Line/Program-Name toggle
      • u | U : Show-Specific-User-Only
      • i : Idle-Process toggle

htop

Wireshark

iperf

Process Explorer

Process Monitor

DebugView


Testing

  • Performance Testing Tools
Tool Description Script Support License Remarks
JMeter Groovy, JSR-223
Gatling a load test tool officially supporting HTTP, WebSocket, Server-Sent-Events and JMS. Java, Kotlin, Scala Apache 2.0
k6 Modern load testing for developers and testers in the DevOps era. JavaScript AGPL-3.0 Grafana Labs
Locust an easy to use, scriptable and scalable performance testing tool. Python MIT

JMeter

  • http://jmeter.apache.org/
  • Des. : a 100% pure Java application designed to load test functional behavior and measure performance.
  • License : Apache License v2
References
Category Component Description Remarks
Configuration User Defined Variables
SSL Manager a way to select a client certificate so that you can test applications that use Public Key Infrastructure (PKI) Basic Authentication, Digest Authentication, Kerberos
HTTP Authorization Manager lets you specify one or more user logins for web pages that are restricted using server authentication
CSV Data Set Config
Logic Controllers Switch Controller acts like the Interleave Controller in that it runs one of the subordinate elements on each iteration, but rather than run them in sequence, the controller runs the element defined by the switch value.
Pre Processors User Parameters
Timer Constant Throughput Timer introduces variable pauses, calculated to keep the total throughput (in terms of samples per minute) as close as possible to a give figure.
Assertions Response Assertion lets you add pattern strings to be compared against various fields of the request or response Perl5-style regular expressions
JSON Assertion
Category Function Description Remarks
Scripting __groovy Evaluates Apache Groovy scripts passed to it, and returns the result Apache Groovy Documentation
__BeanShell Evaluates the script passed to it, and returns the result BeanShell User Manual - version 1.3
__javaScript Executes a piece of JavaScript code and returns its value Not recommanded
Variables __V Returns the result of evaluating a variable name expression ${__V(A${N})}
__eval Returns the result of evaluating a string expression ${__eval(${SQL})}
Readings
Plugins
Tips and Tricks
Using variables in assertion

In 'Response Assertion', the variable defined via 'CSV Data Set Config' or 'User Defined Variables' can be used in test pattern.
In the following sample, certHash is variable defined in 'CSV Data Set Config'

${__escapeOroRegexpChars(\"cert_hash\":\"${certHash}\")}
Running JMeter with GraalVM and Graal.js
  1. Install GraalVM
  2. Install Graal.js using GraalVM Updater
  3. Change JAVA_HOME in jmeter command-line
    • The below sample is for MacOS
#!/bin/bash

#JAVA_HOME="/usr/local/opt/openjdk" exec "/usr/local/Cellar/jmeter/5.5/libexec/bin/jmeter"  "$@"
JAVA_HOME="/Library/Java/JavaVirtualMachines/graalvm-ce-java17-22.3.1/Contents/Home" exec "/usr/local/Cellar/jmeter/5.5/libexec/bin/jmeter"  "$@"
  1. Check full command-line using ps
$ ps auxww | grep jmeter
...

k6

Command-line
Command Description Remarks
archive
inspect
run
pause
resume
scale
status
stats
Readings

Artillery

Section Element Description Remarks
config target the endpoint of the system under test
variables can define multiple values for a variable and access them randomly in your scenarios.
Hooks
Hook Description Signature Remarks
beforeScenario called before a virtual user executes a scenario
afterScenario called after a virtual user executes a scenario
beforeRequest called before sending a request
afterResponse called after a response has been received
function may be run at any point in a scenario

Locust

ApacheBench

Eclipse TPTP

  • http://www.eclipse.org/tptp/
  • Desc. : provides an open platform supplying powerful frameworks and services that allow software developers to build unique test and performance tools, both open source and commercial, that can be easily integrated with the platform and with other tools.

Testopia

TestLink

FitNesse

  • http://fitnesse.org/
  • Desc. : The fully integrated standalone wiki and acceptance testing framework.

CodePro Analytix

Postman

References
Scripting
pm Object
Property/Function Data-type Description Members Remarks
pm.variables Object Accessing variables at different scopes and setting local variables.
pm.variables.get(key: String) Access a variable at any scope including local
pm.variables.set(key: String, value) Use to define a local variable.
pm.environment Object Access and manipulate variables in the active (currently selected) environment.
pm.collectionVariables Object Access and manipulate variables in the collection.
pm.global Object Access and manipulate variables at global scope within the workspace.
pm.request.url Url
pm.request.url.query.get(param:String)
pm.request.url.path[index] 0-based index
pm.request.method String
pm.request.headers HeaderList
pm.request.body RequestBody
pm.response.code Number HTTP response status code
pm.response.status String HTTP response status text
pm.response.headers HeaderList HTTP response status code
pm.response.text() String response body as a plain text
pm.response.json() Object response body as a JSON object
pm.cookies Object
pm.info Object Provides data related to the request and the script itself, including name, request ID, and iteration count.
pm.test(name:String, criteria:Function)
pm.sendRequest(url:String, handler:Function) Send a request asynchronously from a Pre-request or Test script.
pm.expect(assertions) Chai Assertion BDD
Postman Collection SDK
Class Description Members Remarks
Request A Postman HTTP request object
Response Holds data related to the request body. code: Number, status: String, body: String, json(): Object
Sources
Module/Class Description Remarks
class Postman
class Postman
interface PostmanLegacy
Request
Response
Readings
Sample Scripts
  • Using script scope variables and defining conditional test function
// https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox_api_reference
// https://www.chaijs.com/api/bdd/

let payload = pm.response.json();

pm.test('Response code should be 200', () => {

  pm.response.to.have.status(200);

});

pm.test('Server should have NON-empty complete ledgers', () => {

  pm.expect(payload.result.info.complete_ledgers).to.not.equal('empty');

});

if(pm.variables.get('hostname')){

  pm.test('Node should have "hostid" same with hostname of the hosted machine', () => {
    pm.expect(payload.result.info.hostid).to.be.equal(pm.variables.get('hostname'));
  });
}
  • Parsing path and request before sending request
const reqBody = JSON.parse(pm.request.body.raw);

//not working - variables are not bound yet in 'Pre-request Script'
//const securityId = pm.request.url.path[pm.request.url.path.indexOf('securities') + 1]; 

const securityId = pm.variables.get('__default_security_id');
const sender = pm.variables.get(reqBody['sender'].slice(2, -2));
const recipient = pm.variables.get(reqBody['recipient'].slice(2, -2));

const baseUrl = pm.variables.get('base_url');

pm.sendRequest(`${baseUrl}/securities/${securityId}/holders/${sender}/balance`, (err, resp) => {

  pm.expect(resp.code).be.within(200, 299); 
  const respBody = resp.json();
  pm.expect(respBody.balance).at.least(0);

  pm.variables.set('sender_balance_before', respBody.balance);

});

pm.sendRequest(`${baseUrl}/securities/${securityId}/holders/${recipient}/balance`, (err, resp) => {

  pm.expect(resp.code).be.within(200, 299);
  const respBody = resp.json();
  pm.expect(respBody.balance).exist;

  pm.variables.set('recipient_balance_before', respBody.balance);
});
  • Sending another request in the test script to pull the result (async operation case)
let payload = pm.response.json();
let baseUrl = pm.variables.get('base_url');

pm.test('Response code should be 200', () => {

  pm.response.to.have.status(200);

}).test('Response body should have task ID', () => {

  pm.expect(payload.taskId).to.exist;

  pm.globals.set("__last_task_id", payload.taskId);
  console.log(`Last task ID : ${pm.globals.get("__last_task_id")}, Task Type : Issue Tokens`);

}).test('The result after polling Task API should have success state.', () => {

  setTimeout(() => {
    pm.sendRequest(`${baseUrl}/tasks/${payload.taskId}`, (err, resp) => {
      let result = resp.json();
      console.log(result);

      pm.expect(result.state).to.equal('SUCCESS');
      pm.expect(result.taskId).to.equal(payload.taskId);
    });
  }, 2000);
});
  • Polling the result for the additional async request in test script - Using setInterval() instead of setTimeout()
'use strict';
const payload = pm.response.json();
const baseUrl = pm.variables.get('base_url');

pm.test('Response code should be 2XX', () => {
  pm.response.to.be.success;

}).test('Response body should have task ID', () => {
  pm.expect(payload.taskId).to.exist;

  pm.globals.set("__last_task_id", payload.taskId);
  console.log(`Last task ID : ${pm.globals.get("__last_task_id")}, Task Type : Issue Tokens`);

}).test('The result after polling Task API should have success state.', () => {
  let tries = 0;
  const maxTries = 5;  
  (function check() {
    let result = {};
    setTimeout(() => {
      pm.sendRequest(`${baseUrl}/tasks/${payload.taskId}`, (err, resp) => {
        result = resp.json();

        if(result.state === 'SUCCESS'){
          pm.expect(result.taskId).to.equal(payload.taskId);
          checkPostConditions();
        }else if(result.state === 'FAILURE'){
          pm.expect.fail();
          console.log(result)
        }else{
          tries++;
          if(tries === maxTries){ pm.expect.fail("Too many tries."); }
          else{ check(); }
        }
      })
    }, 1_000)
  })();

});

function checkPostConditions(){
  const securityId = pm.request.url.path[pm.request.url.path.indexOf('securities') + 1];
  const reqBody = JSON.parse(pm.request.body.raw);  
  const sender = reqBody['sender'];
  const recipient = reqBody['recipient'];
  const delta = reqBody['amount'];

  // check sender's balance 
  pm.test(`Sender's balance is expected to be decreased as match`, () => {
    pm.sendRequest(`${baseUrl}/securities/${securityId}/holders/${sender}/balance`, (err, resp) => {
      pm.expect(resp.code).be.within(200, 299); 
      const respBody = resp.json();
      pm.expect(respBody.balance).to.equal(pm.variables.get('sender_balance_before') - delta);
    });
  });

  // check recipient's balance
  pm.test(`Recipient's balance is expected to be increased as match`, () => {
    pm.sendRequest(`${baseUrl}/securities/${securityId}/holders/${recipient}/balance`, (err, resp) => {
      pm.expect(resp.code).be.within(200, 299); 
      const respBody = resp.json();
      pm.expect(respBody.balance).to.equal(pm.variables.get('recipient_balance_before') + delta);
    });
  });
}
  • Reusable statements
// request
pm.expect(payload.id).to.equal(pm.request.url.path[pm.request.url.path.indexOf('products') + 1]);

const reqBody = JSON.parse(pm.request.body.raw);
const sender = reqBody['sender'];
const recipient = reqBody['recipient'];


// response
pm.response.to.have.status(200);
pm.response.to.be.success;
pm.response.to.be.error;
pm.response.to.be.clientError;
pm.response.to.be.serverError;
pm.response.to.be.notFound;

pm.response.code; // Number, eg. 200, 404
pm.expect(pm.response.code).to.within(400, 599);
pm.response.status; // String, eg. 'Not Found'

let payload = pm.response.json();

Newman

Fiddler

  • Readings

Phoronix Test Suite

  • http://www.phoronix-test-suite.com/
  • Desc. : the most comprehensive testing and benchmarking platform available for Linux, Solaris, Mac OS X, and BSD operating systems.
  • License : GNU GPL

Blogbench


Log Viewer

Lilith

  • http://lilith.huxhorn.de/
  • Desc. : Lilith is a logging and access event viewer for the Logback logging framework, log4j and java.util.logging.
  • License :

Build

Maven

Ant

  • http://ant.apache.org/
  • Desc. : a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other.
  • >> On Ant

Gradle

  • http://www.gradle.org/
  • Desc. : automate the building, testing, publishing, deployment and more of software packages or other types of projects such as generated static websites, generated documentation or indeed anything else.
  • License :
  • Source :
References
Key Description Handler Remarks
repositories Declaring repositories
dependencies Declaring dependencies DependencyHandler
Properties
Property Description Default Remarks
org.gradle.daemon=(true,false) When set to true the Gradle Daemon is used to run the build. true
org.gradle.debug=(true,false) When set to true, Gradle will run the build with remote debugging enabled, listening on port 5005. false
org.gradle.java.home=(path to JDK home) Specifies the Java home for the Gradle build process.
org.gradle.jvmargs=(JVM arguments) Specifies the JVM arguments used for the Gradle Daemon. Does NOT affect the version of Java used to launch the Gradle client VM
org.gradle.logging.level=(quiet,warn,lifecycle,info,debug)
Environment Variable Description Remarks
JAVA_HOME Specifies the JDK installation directory to use for the client VM.
GRADLE_USER_HOME Specifies the Gradle user home directory. default : $USER_HOME/.gradle
GRADLE_OPTS Specifies JVM arguments to use when starting the Gradle client VM.
Commands
  • Common commands
Command Description Plugin-in Remarks
$ gradle help --task taskname gives you detailed information about a specific task
$ gradle tasks --all gives you a list of the main tasks of the selected project
$ gradle build designate assembling all outputs and running all checks Base
$ gradle run assembles the application and executes some script or binary
$ gradle clean delete the contents of the build directory
$ gradle project gives you a list of the sub-projects of the selected project, displayed in a hierarchy
$ gradle dependencies gives you a list of the dependencies of the selected project, broken down by configuration
Plugins
Plugin Description Tasks Remarks
Base Provides some tasks and conventions that are common to most builds and adds a structure to the build that promotes consistency in how they are run. assemble, build, clean Java Provides support for building any type of Java project.
Java Library Provides support for building a Java library.
Java Platform Provides support for building a Java platform.
Groovy Provides support for building any type of Groovy project.
Category Plugin Title Description Tasks Remarks
Gradle com.palantir.git-version A plugin that generates a version for use with Gradle by calling git-describe.
Docker com.palantir.docker A simple docker orchestrator for executing docker build and push from within Gradle.
Spring org.springframework.boot Spring Boot Gradle Plugin provides Spring Boot support in Gradle. bootJar, bootRun
Java Plugin
Dependency Parents Description Remarks
compile Compile time dependencies. Superseded by implementation.
implementation compile Implementation only dependencies.
compileOnly Compile time only dependencies, not used at runtime.
compileClasspath compile, compileOnly, implementation Compile classpath, used when compiling source. Used by task compileJava.
annotationProcessor Annotation processors used during compilation.
runtime compile Runtime dependencies. Superseded by runtimeOnly.
runtimeOnly Runtime only dependencies.
runtimeClasspath runtimeOnly, runtime, implementation Runtime classpath contains elements of the implementation, as well as runtime only elements.
Java Library Plugin
Spring Boot Gradle Plugin
Typical Configurations
plugins {
  id 'java'
  id 'org.springframework.boot'
  id 'io.spring.dependency-management'
  id 'eclipse'
}

group = 'foo.bar'
version = '1.0.0'
sourceCompatibility = '17'
targetCompatibility = '17'

eclipse {
  classpath {
    downloadSources = true
    downloadJavadoc = true
  }
}

repositories {
  mavenCentral()
}
Readings

Package Management

  • Package Management Softwares
Software Scope Remarks
APT (Advanced Package Tool) Ubuntu, Debian a set of tools for managing Debian packages, and therefore the applications installed on your Debian system
RPM CentOS, RHLP a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages
yum CentOS, RHLP an automatic updater and package installer/remover for rpm systems
Chocolatey Windows the package manager for Windows
Homebrew macOS The Missing Package Manager for macOS
npm JavaScript the package manager for JavaScript
yarn JavaScript a package manager for JavaScript
pip Python the PyPA recommended tool for installing Python packages
RubyGems Ruby allows you to easily download, install, and use ruby software packages on your system
Bundler Ruby provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed

RPM

  • http://rpm.org/
  • Desc. : a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages.
References
Option Long Option Description Remarks
-U --upgrade Upgrade/install
-I --install Install
-e --erase Remove
-q --query Query
-V --verify Verify
--showrc Display final rpmrc and macro configuration
Readings
Samples
$ # install or upgrade. (do NOT use rpm -i ... as possible)
$ rpm -Uhv mysql-workbench-community-6.2.3-1.el6.x86_64.rpm

$ # list files in a installed package
$ rpm -ql mysql-workbench-community

$ # list files in a rpm file
$ rpm -qlp mysql-workbench-community-6.2.3-1.el6.x86_64.rpm

$ # list install/erase scriptlets in a rpm file
$ rpm -qp --scripts mysql-workbench-community-6.2.3-1.el6.x86_64.rpm

yum

  • Commands
Command Description Remarks
yum check-update See which installed packages on your system have updates available.
yum update Update a single package, multiple packages, or all packages at once.
yum search Search all RPM package names, descriptions and summaries.
yum list Listing Packages yum list [all|available|installed|...|recent] [glob_expr1 glob_expr2 ...]
yum list all Lists all installed and available(packages in any repository enabled on your system) packages.
yum list installed Lists all packages installed on your system. rpm -qa
yum list available Lists all available packages in all enabled repositories.
yum list extras Lists any installed package which no longer appears in any of your enabled repositories. Useful for finding packages which linger between upgrades or things installed not from a repo.
yum list obsoletes Lists any obsoleting relationships between any available package and any installed package.
yum list updates Lists any package in an enabled repository which is an update for any installed package.
yum list recent Lists any package in an enabled repository which is an update for any installed package.
yum provides Advanced Searches
  • Examples
    • yum -v repolist enabled //list only enabled repositories
    • yum -v list all subversion --enablerepo=rpmforge-extras //search subversion packages both installed and available including 'rpmforge-extras' repository
    • yum -v list installed //list all installed packages

APT

  • https://wiki.debian.org/Apt
  • Desc. : a free software user interface that works with core libraries to handle the installation and removal of software on the Debian, Slackware and other Linux distributions

Homebrew

RubyGems

  • http://rubygems.org/
  • Desc. : allows you to easily download, install, and use ruby software packages on your system
  • License : Ruby License
  • Written in : Ruby

Bundler


Frontend

MySchedule


Networking

OpenSSL

  • https://www.openssl.org/
  • Desc. : a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library.
  • License :
  • Sources : https://github.com/openssl/openssl
References
Commands
Command Description Remarks
openssl genrsa Generates an RSA private key
openssl req Creates and processes certificate requests in PKCS#10 format
openssl x509 Certificate display and signing utility
openssl pkcs12 PKCS#12 file utility PKCS 12
Readings
Basic Certificate Fields
Certificate Extensions
Books
Tips and Tricks
Checking the details of RSA private key in PEM file

Use openssl rsa command on the certificate file. You maybe asked to provide passphrase of the encrypted key.

$ openssl rsa -in tls-server.key -inform PEM -text -noout
Checking the details of CSR file in PEM file

Use openssl req command on the CSR file. You maybe asked to provide passphrase of the encrypted key.

$ openssl req -in tls-server.csr -inform PEM -text -noout -verify
Checking the details of a certificate including subject, X.509 extension and so on

Use openssl x509 command on the certificate file

$ openssl x509 -in tls-server.crt -inform PEM -text -noout
ls
$ openssl x509 -in ~/Library/"Group Containers"/group.com.docker/pki/front-proxy-client.crt -inform PEM -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1198170262028128809 (0x10a0c181509f9229)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN=kubernetes
        Validity
            Not Before: Jul 16 00:14:06 2020 GMT
            Not After : Jul 16 00:14:07 2021 GMT
        Subject: CN=front-proxy-client
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:c5:a7:3e:ab:aa:cf:a0:77:64:c5:a1:f2:1f:9e:
                    d6:df:0e:53:55:ac:b5:6b:62:a5:46:28:70:92:d5:
                    b7:c5:3c:b2:4e:74:6b:15:bb:aa:26:f6:00:e3:bf:
                    be:da:de:62:61:04:4c:d1:10:d9:a4:23:34:c4:c1:
                    e5:95:ff:de:8e:24:35:7c:9d:f1:2b:bc:c5:3b:f6:
                    23:f8:88:b3:f4:23:d2:96:1e:d6:84:8c:01:7b:ab:
                    2f:a5:90:46:83:21:29:dd:82:b6:39:ac:a9:83:ce:
                    08:91:cd:8a:b5:80:7b:c1:1c:c0:6c:63:75:57:51:
                    19:24:ba:4a:7b:d1:1e:01:93:4f:67:f9:91:5c:34:
                    6e:40:7f:a4:56:a3:f2:63:06:76:0b:a0:72:8e:d0:
                    ef:ed:54:dc:ed:a6:31:00:09:3d:8b:6f:b9:0c:e2:
                    14:d5:9b:e5:3a:d0:a1:64:c9:28:87:04:c3:a3:d7:
                    b6:bf:0f:06:c1:ac:06:ca:6f:bf:97:5b:13:ea:37:
                    7e:09:e5:b8:00:75:2a:dc:cf:53:d4:6d:da:a3:93:
                    82:f8:3c:85:62:ee:4c:a4:e6:95:40:bc:b2:0b:26:
                    40:60:d4:2e:29:57:28:8c:22:62:ff:e2:46:7e:34:
                    34:80:9a:47:11:f2:91:e5:16:f4:9c:d2:db:c2:fc:
                    d9:87
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication
    Signature Algorithm: sha256WithRSAEncryption
         91:76:cd:17:27:db:34:1c:5b:8b:cd:b8:d3:29:05:19:4d:aa:
         58:9c:eb:8a:fb:d3:3a:63:18:39:e5:5c:9e:5e:fc:f5:4c:fc:
         c8:5a:b0:ce:cd:87:cc:9c:98:7a:45:8c:35:9d:a8:4b:2f:32:
         19:95:01:37:7b:fb:9e:b4:7c:37:0c:6f:07:46:18:ba:44:b5:
         59:03:8d:4b:f1:b6:72:5c:79:a2:df:ad:59:c1:31:f2:29:84:
         26:95:b8:69:ac:b7:ee:19:fd:13:41:74:f0:9d:99:50:d6:4c:
         8a:05:93:b3:a9:19:db:c0:a0:b2:ca:17:15:1f:10:00:e1:bf:
         5b:f9:a0:76:e1:8d:df:da:60:72:87:1c:d0:c9:28:6f:65:41:
         4f:f6:9b:2a:7c:ab:64:fc:f4:1a:64:a6:43:3f:0b:30:a9:53:
         0e:a1:61:df:aa:ce:17:cc:7f:cf:07:c8:31:c7:a0:c7:b6:21:
         e0:d6:66:a0:0d:20:ee:d6:14:34:38:75:2f:6d:ae:3b:5d:fe:
         ea:16:d8:a9:01:59:9e:1c:31:04:72:03:26:98:1f:ef:f4:60:
         8c:ec:a9:c5:a3:41:13:0e:38:17:fa:7f:8d:36:fe:21:ca:41:
         e7:11:48:27:11:48:79:7d:af:ef:32:97:7b:2d:dd:b5:1d:cb:
         55:72:f7:df

curl

  • http://curl.haxx.se/
  • Desc. : a command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP.
  • License :

websocat

  • https://github.com/vi/websocat
  • Desc. : Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions
  • License : MIT License
Examples
echo '{ "id": 2, 
  "command": "ledger", 
  "ledger_index": 10000000, 
  "transactions": true }' | websocat -01q 'ws://tracker1/' | jq "."

PuTTY

  • http://www.putty.org/
  • Desc. : an SSH and telnet client, developed originally by Simon Tatham for the Windows platform.

PuTTY Session Manager

  • https://puttysm.sourceforge.io/
  • Desc. : a tool that allows system adminstrators to organise their PuTTY sessions into folders and assign hotkeys to their favourite sessions.

Pageant

KiTTY

ConEmu

Readings

Poderosa


Security

GPG

  • https://gnupg.org/
  • Desc. : a complete and free implementation of the OpenPGP standard as defined by RFC4880 (also known as PGP)
  • License :
  • Written in :
  • Sources

HashiCorp Vault

References
Environment Variables
Variable Description Related Values Remarks
VAULT_FORMAT vault operator init -format table, json, yaml
VAULT_TOKEN Vault authentication token.
Commands
Command Subcommand Description Remarks
list lists data from Vault at the given path.
read reads data from Vault at the given path.
write writes data to Vault at the given path.
kv interacting with Vault's key/value secrets engine.
put writes the data to the given path in the K/V secrets engine.
get retrieves the value from K/V secrets engine at the given key name.
list returns a list of key names at the specified location.
server starts a Vault server that responds to API requests.
operator groups subcommands for operators interacting with Vault.
init initializes a Vault server. -key-shares, -key-threshold, -pgp-keys, -root-token-pgp-key
policy groups subcommands for interacting with policies.
secrets interacting with Vault's secrets engines.
enable enables an secrets engine at a given path.
list lists the enabled secrets engines on the Vault server.
login authenticates users or machines to Vault using the provided arguments.
Policies
  • Default Policy
rules    # Allow tokens to look up their own properties
path "auth/token/lookup-self" {
    capabilities = ["read"]
}

# Allow tokens to renew themselves
path "auth/token/renew-self" {
    capabilities = ["update"]
}

# Allow tokens to revoke themselves
path "auth/token/revoke-self" {
    capabilities = ["update"]
}

# Allow a token to look up its own capabilities on a path
path "sys/capabilities-self" {
    capabilities = ["update"]
}

# Allow a token to look up its own entity by id or name
path "identity/entity/id/{{identity.entity.id}}" {
  capabilities = ["read"]
}
path "identity/entity/name/{{identity.entity.name}}" {
  capabilities = ["read"]
}


# Allow a token to look up its resultant ACL from all policies. This is useful
# for UIs. It is an internal path because the format may change at any time
# based on how the internal ACL features and capabilities change.
path "sys/internal/ui/resultant-acl" {
    capabilities = ["read"]
}

# Allow a token to renew a lease via lease_id in the request body; old path for
# old clients, new path for newer
path "sys/renew" {
    capabilities = ["update"]
}
path "sys/leases/renew" {
    capabilities = ["update"]
}

# Allow looking up lease properties. This requires knowing the lease ID ahead
# of time and does not divulge any sensitive information.
path "sys/leases/lookup" {
    capabilities = ["update"]
}

# Allow a token to manage its own cubbyhole
path "cubbyhole/*" {
    capabilities = ["create", "read", "update", "delete", "list"]
}

# Allow a token to wrap arbitrary values in a response-wrapping token
path "sys/wrapping/wrap" {
    capabilities = ["update"]
}

# Allow a token to look up the creation time and TTL of a given
# response-wrapping token
path "sys/wrapping/lookup" {
    capabilities = ["update"]
}

# Allow a token to unwrap a response-wrapping token. This is a convenience to
# avoid client token swapping since this is also part of the response wrapping
# policy.
path "sys/wrapping/unwrap" {
    capabilities = ["update"]
}

# Allow general purpose tools
path "sys/tools/hash" {
    capabilities = ["update"]
}
path "sys/tools/hash/*" {
    capabilities = ["update"]
}

# Allow checking the status of a Control Group request if the user has the
# accessor
path "sys/control-group/request" {
    capabilities = ["update"]
}
Auth Methods
Method Description Enabling Script API Remarks
userpass allows users to authenticate with Vault using a username and password combination. vault auth enable userpass Userpass Auth Method API
Secret Engines
  • Secrets engines: components which store, generate, or encrypt data.
Engine Description Enabling Script API Remarks
Identity the identity management solution for Vault. Identity Secrets Engine API
Transit handles cryptographic functions on data in-transit. Transit Secrets Engine API POST /transit/keys/:name
POST /transit/encrypt/:name
POST /transit/sign/:name(/:hash_algorithm)
Readings
Tips and Tricks
Typical Commandlines for Admins
$ export VAULT_ADDR="http://127.0.0.1:8200"   # setup VAULT_ADDR env. variable

$ vault operator unseal ...    # unseal vault

$ export VAULT_TOKEN=...       # setup VAULT_TOKEN (session ID) env. variable   

$ vault secrets list           # list all enabled secret engines

$ vault auth list              # list all enabled auth methods

$ vault auth enable userpass   # enable the most common auth method - Userpass

# Adding a new auth(user) seems not to add corresponding "identity" automatically.
# If the new "user" has no identity, it seems that an "identity" would be generated automatically when the user first succeeds login
$ vault write auth/userpass/users/foo password=bar   # add a new account whose username is 'foo' and password is 'bar'
Typical Commandlines for End-users
$ vault login -method=userpass username=foo   # try login as a normal user

$ export VAULT_TOKEN=...       # setup VAULT_TOKEN (session ID) env. variable for current session
Commands vs. APIs
  • Adding a new normal account
    • Commandline : vault write auth/userpass/users/foo password=bar
    • API : curl -H "X-Vault-Token: $VAULT_TOKEN" -X PUT -d '{"password":"bar"}' $VAULT_ADDR/v1/auth/userpass/users/foo
Best Practices

SoftHSM

Readings
Command Description Remarks
softhsm2.conf SoftHSM configuration file
softhsm2-util support tool for libsofthsm2
softhsm2-keyconv converting from BIND to PKCS#8 key file format

Nmap

  • http://nmap.org/
  • Desc. : a free and open source (license) utility for network discovery and security auditing.
References
Options
Option Description Remarks
-Pn Treat all hosts as online -- skip host discovery
-n Never do DNS resolution
-sS TCP SYN scan : half-open scanning default scan type for privileged users
-sT TCP connect scan
-sU UDP scan
-p <port ranges> Only scan specified ports -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
-sV Probe open ports to determine service/version info
-O Enable OS detection
-sC equivalent to --script=default
Port States
State Description Remarks
open An application is actively accepting TCP connections, UDP datagrams or SCTP associations on this port.
closed A closed port is accessible (it receives and responds to Nmap probe packets), but there is no application listening on it.
filtered Nmap cannot determine whether the port is open because packet filtering prevents its probes from reaching the port.
unfiltered A port is accessible, but Nmap is unable to determine whether it is open or closed.
open|filtered It is unable to determine whether a port is open or filtered.
closed|filtered It is unable to determine whether a port is closed or filtered.
Scripts
Category Script Description Usage/Arguments Remarks
SSH ssh-auth-methods Returns authentication methods that a SSH server supports. ssh.user
ssh-brute Performs brute-force password guessing against ssh servers. ssh-brute.timeout, passdb, userdb, ...
MySQL mysql-info Connects to a MySQL server and prints information such as the protocol and version numbers, thread ID, status, capabilities, and the password salt. nmap --script=mysql-info <target>
mysql-brute Performs password guessing against MySQL. nmap --script=mysql-brute <target>
MongoDB mongodb-info Attempts to get build info and server status from a MongoDB database. Default MongoDB Port
mongodb-brute Performs brute force password auditing against the MongoDB database.
Readings
Tips and Tricks
Scan a single host
$ sudo nmap -Pn -n -sS -sV -O 192.168.10.201
Scan multiple specific hosts
$ sudo nmap -Pn -n -sS -sV -O 192.168.10.201 192.168.10.203 192.168.10.207
Try brute force attack MySQL
$ sudo nmap -Pn --script=mysql-info,mysql-brute -d -p 3306 169.56.90.135

OpenVAS

  • http://www.openvas.org/
  • Desc. : a framework of several services and tools offering a comprehensive and powerful vulnerability scanning and vulnerability management solution
  • License : GPL

Lynis

Readings
Control Category Title Description Remarks
AUTH-9208 Authentication Duplicate accounts or IDs
AUTH-9218 Authentication Accounts without password Lynis checks for users accounts and which ones do not have a password.
AUTH-9283 Authentication Passwords (no password set)
SSH-7412 SSH SSH permit root login For proper authorization purposes, do not use direct root logins.
SSH-7408 SSH SSH configuration Proper hardening of your SSH configuration can reduce known weaknesses. OpenSSH security and hardening

OpenSCAP

OSSEC

CrackLib

hashcat

chkrootkit

  • Rootkit
    • a collection of computer software, typically malicious, designed to enable access to a computer or areas of its software that is not otherwise allowed (for example, to an unauthorized user) and often masks its existence or the existence of other software.

Graphics

Graphviz

Element Attribtues Shapes Remarks
Graph Graph Attributes
Node Node Attributes Node Shapes
Edge Edge Attributes Arrow Shapes

Mscgen

  • http://www.mcternan.me.uk/mscgen/
  • Desc. : a small program that parses Message Sequence Chart descriptions and produces PNG, SVG, EPS or server side image maps (ismaps) as the output.
  • License : GPLv2

OpenSG

  • http://www.opensg.org/
  • Desc. : a portable scenegraph system to create realtime graphics programs.
  • License : LGPL

OpenSceneGraph

  • http://www.openscenegraph.org/projects/osg
  • Desc. : an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modelling. Written entirely in Standard C++ and OpenGL.
  • License : LGPL

ImageMagick

  • https://imagemagick.org/
  • Desc. : a free and open-source cross-platform software suite for displaying, creating, converting, modifying, and editing raster images.
  • License : Apache 2.0
  • Sources :

Visualization

XsdVi


Data Analysis

Metabase

Readings

Cube


ETL

Scriptella


Science

Maxima

SymPy

DataMelt

  • https://jwork.org/dmelt/
  • Desc. : a free software for numeric computation, mathematics, statistics, symbolic calculations, data analysis and data visualization.
  • License :
  • Written in : Java, Python, Ruby, Groovy
  • Sources :

Servers or Engines

Virtualization

VirtualBox

  • https://www.virtualbox.org/
  • Desc : a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use.
  • License : GPL version 2
References
  • Virtual Networking
    • NAT
      • Even though the NAT engine separates the VM from the host, the VM has access to the host's loopback interface and the network services running on it. The host's loopback interface is accessible as IP address 10.0.2.2. This access to the host's loopback interface can be extremely useful in some cases, for example when running a web application under development in the VM and the database server on the loopback interface on the host.

    • Host-Only Networking
VBoxManage
Command Descriptions Parameters Remarks
createmedium creates a new medium filename, size, format createvdi, createhd
storagectl attaches, modifies, and removes a storage controller name, add, portcount
storageattach attaches, modifies, and removes a storage medium connected to a storage controller that was previously added with the storagectl command storagectl, port, type, medium
Menus
Menu Options Description
Input > Keyboard > Keyboard Settings > Auto Capture Keyboard On, Off
Devices > Shared Clipboard> Disabled, Host To Guest, Guest To Host, Bidirectional
Readings
Networking
Storage

Xen Project Hypervisor

Vagrant

References
Namespace Description Remarks
config.vm modify the configuration of the machine that Vagrant manages.
config.ssh configuring how Vagrant will access your machine over SSH
config.vagrant modify the behavior of Vagrant itself
Boxes
Readings
VirtualBox

Packer

References
Component Description Remarks
Builders / VirtualBox / ISO create VirtualBox virtual machines and export them in the OVF format, starting from an ISO image.
Readings

DBMS

HSQLDB

Apache Derby

J2EE Application Server

Jetty

Tomcat

JBoss AS

WildFly

Undertow

  • http://undertow.io/
  • Desc. : a flexible performant web server written in java, providing both blocking and non-blocking API’s based on NIO.
  • Written in : Java
  • License :
  • Readings

TomEE

OpenEJB

Application Server

Apache HTTP Server

Nginx

  • http://nginx.org/
  • Desc. : a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server
  • License :
  • Written in : C
References
Directives
server = server_name, listen, location*

location = proxy_pass, proxy_bind
Context Directive Description Remarks
server server_name Sets names of a virtual server
listen Sets the address and port for IP, or the path for a UNIX-domain socket on which the server will accept requests.
Readings
Proxy
Load Balancer

mongoose

ZooKeeper

Proxy Server

HAProxy

Varnish Cache

Squid

References
Directive Description Format Remarks
acl Defining an Access List. acl aclname acltype argument ...
http_port The socket addresses where Squid will listen for HTTP client requests. [hostname:|ip-address:] port [mode] [options]
Readings

Networking

OpenSSH

  • http://www.openssh.org/
  • Desc. : a FREE version of the SSH connectivity tools that technical users of the Internet rely on.
References
Commands
Command Description Remarks
sshd OpenSSH SSH daemon
ssh OpenSSH SSH client (remote login program)
ssh-add adds private key identities to the OpenSSH authentication agent
Daemon Command Line Options
Option Description Remarks
-4 Forces sshd to use IPv4 addresses only.
-f config_file Specifies the name of the configuration file.
-E log_file Append debug logs to log_file instead of the system log.
-t Test mode. Only check the validity of the configuration file and sanity of the keys.
-T Extended test mode. Check the validity of the configuration file, output the effective configuration to stdout and then exit.
Configurations
Config Description Remarks
sshd_config OpenSSH SSH daemon configuration file
ssh_config OpenSSH SSH client configuration files
  • User specific configuration files
Fiel Description Remarks
~/.ssh/authorized_keys Holds a list of authorized public keys for servers. When the client connects to a server, the server authenticates the client by checking its signed public key stored within this file. server
~/.ssh/id_dsa Contains the DSA private key of the user. client, 600
~/.ssh/id_dsa.pub Contains the DSA public key of the user. client, 644
~/.ssh/id_rsa Contains the RSA private key used by ssh for version 2 of the SSH protocol. client, 600
~/.ssh/id_rsa.pub Contains the RSA public key used by ssh for version 2 of the SSH protocol. client, 644
~/.ssh/identity Contains the RSA private key used by ssh for version 1 of the SSH protocol. client
~/.ssh/identity.pub Contains the RSA public key used by ssh for version 1 of the SSH protocol. client
~/.ssh/known_hosts Contains DSA host keys of SSH servers accessed by the user. client
Daemon Config Options
Option Type Description Remarks
LogLevel enum QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
PermitRootLogin enum no, yes, prohibit-password, forced-commands-only
PermitEmptyPasswords boolean When password authentication is allowed, it specifies whether the server allows login to accounts with empty password strings.
HostbasedAuthentication boolean Specifies whether rhosts or /etc/hosts.equiv authentication together with successful public key client host authentication is allowed
IgnoreRhosts boolean Specifies that .rhosts and .shosts files will not be used in HostbasedAuthentication
AllowTcpForwarding enum yes, no, local, remote
AllowStreamLocalForwarding enum yes, no, local, remote
GatewayPorts enum no, yes, clientspecified
PermitTunnel enum Specifies whether tun device forwarding is allowed. no, yes, no, point-to-point, ethernet
X11Forwarding boolean Specifies whether X11 forwarding is permitted. yes, no
AllowAgentForwarding boolean Specifies whether ssh-agent(1) forwarding is permitted. yes, no
PermitOpen string Specifies the destinations to which TCP port forwarding is permitted.
TCPKeepAlive boolean Specifies whether the system should send TCP keepalive messages to the other side.
ClientAliveInterval integer Sets a timeout interval in seconds after which if no data has been received from the client.
ClientAliveCountMax integer Sets the number of client alive messages which maybe sent with-out sshd(8) receiving any messages back from the client.
Client Config Options
Option Type Description Remarks
TCPKeepAlive boolean Specifies whether the system should send TCP keepalive messages to the other side
ServerAliveInterval integer Sets a timeout interval in seconds after which if no data has been received from the server
ServerAliveCountMax integer Sets the number of server alive messages which may be sent without ssh(1) receiving any messages back from the server
ControlPersist boolean When used in conjunction with ControlMaster, specifies that the master connection should remain open in the background after the initial client connection has been closed.
Readings
Match User limited-user
   AllowTcpForwarding yes
   PermitOpen 192.168.1.101:22
   ForceCommand echo 'This account can only be used for ...'

VyOS

  • https://vyos.io/
  • Desc. : an open source network operating system that can be installed on physical hardware or a virtual machine on your own server, or a cloud platform .
  • License :
  • Sources : https://github.com/vyos
References
Operational Mode Commands
Command Description Remarks
show Show system information
show configuration Show running configuration
show configuration commands Show running configuration as set commands
show interfaces Show network interface information
show ip route Show IP routes
show system login users Show user account information
show log Show contents of current master log file
ping Send IPv4 or IPv6 ICMP echo requests
traceroute Track network path to node
traceroute ipv4 Track network path to hostname or IPv4 address
configure Enter configure mode
restart Restart a service
reset Reset a service
show system syslog Show system logging daemon
show vrrp Show VRRP (Virtual Router Redundancy Protocol) information
Configuration Mode Commands
Command Description Remarks
set Set the value of a parameter or create a new element
delete Delete a configuration element
discard Discard uncommitted changes
commit Commit the current set of changes
compare Compare configuration revisions compare 1, compare 1 2
show protocols static Show the configuration of static route parameters
set protocols static route Set the value of a parameter or create a new element for static IPv4 route
delete protocols static route Delete a static route
show service Show services
set service Set services dhcp-relay, dhcp-server, dns, https, nat, snmp, ssh, telnet, ...
delete service Delete services
Configurations
Category Files Remarks
General/Overall /opt/vyatta/etc/
/opt/vyatta/preconfig.d/
/opt/vyatta/postconfig.d/
/config/
SSH /etc/default/ssh
NTP /etc/default/ntp
logrotate /etc/logrotate.conf
/etc/logrotate.d/
/opt/vyatta/etc/logrotate/global
Services
Service Description Remarks
connsync
dhcp-relay
dhcp-server
diamond
dns
flow-monitoring
https
nat
path-monitor
portmonitor
snmp
ssh
telnet
Commands by Topic
  • Manage Services
$ configure
$ show service           # list all services
$ set service ...        # create or modify a service
$ exit
$ restart ...            # restart service
$ configure
$ delete ...             # remove service
$ exit
  • Manage SSHD
$ configure
$ show service ssh
$ set service ssh listen-address ...
$ set service ssh timeout '60'
$ commit
$ cat /etc/ssh/sshd_config
  • Manage Loggings
$ configure
$ show system syslog                            # show syslog configuration
$ set system syslog global archive size 1000    # set size of log files (KB)
$ set system syslog global archive files 300    # set numbers of saved files
$ commit
  • Manage VRRP
$ show vrrp
Readings
Tips and Tricks
Remarkable Command-line
$ # list operational mode commands
$ show [tab]  

$ # show routing table
$ show ip route

$ # show running config
$ show configuration

$ # enter configure mode
$ configure

$ # compare working configuration and last revision
$ compare 1 

$ # compare last revision configuration and the right previous one of it
$ compare 1 2

OpenVPN


Security

Dogtag PKI

OpenXPKI

EJBCA

  • https://www.ejbca.org/
  • Desc. : a PKI Certificate Authority software, built using Java (JEE) technology
  • License :
  • Sources :

Boulder


Media Streaming Server

LIVE555 Media Server

Red5

Darwin Streaming Server

  • http://dss.macosforge.org/
  • Desc. : the open source server technology that allows you to send streaming media to clients across the Internet using the industry standard RTP and RTSP protocols.
  • License : Apple Public Source License

NoSQL

Redis

  • http://redis.io/
  • Desc : an open-source, networked, in-memory, key-value data store with optional durability.
  • License : BSD
References
Commands
Command Description Remarks
CONFIG GET param Read the configuration parameters of a running Redis server. glob-style pattern
GET key Get the value of key. O(1)
Readings
Companions
lettuce
Spring Data Redis
embedded-redis
Redis Commander
FastoRedis

MongoDB

References
Readings

CouchDB


Search Engine

Elasticsearch

References
Field datatypes
Datatype Description Remarks
keyword a field to index structured content such as email addresses, hostnames, status codes, zip codes or tags
Readings

Version Control Software

Subversion

  • Examples
$ svn info .   //show status including working copy path, repository path, base revision and et al.
$ svn status . //show only locally modified items under the current directory of working copy
$ svn update   //update working copy
$ svn commit   //send changes from your working copy to the repository
$ svn --force --depth infinity add .  //add all unversioned files to local change
$ svn copy ^/trunk/foundation ^/branches/foundation-20141123 -c "Created a new branch of /trunk/foundation" //making branch

Git

Team Foundation Version Control

Harvest


Repository Management Software

Artifactory


Configuration Management Software

Chef

  • https://www.chef.io/
  • Desc. : a powerful automation platform that transforms infrastructure into code
  • License : Apache License 2.0

Puppet

Ansible

Fabric

Companions
fabtools

SaltStack

Terraform

Packer


System Monitoring Software


Wiki

DokuWiki

  • https://www.dokuwiki.org/
  • Desc. : a simple to use and highly versatile Open Source wiki software that doesn't require a database.
  • License : GPL
  • Written in : PHP

MoinMoin

  • http://moinmo.in/
  • Desc : an advanced, easy to use and extensible WikiEngine with a large community of users.
  • License : GPL

gollum


Issue Tracking Software

Jira


Content Management System

Jekyll

  • http://jekyllrb.com/
  • Desc. : a parsing engine bundled as a ruby gem used to build static websites from dynamic components such as templates, partials, liquid code, markdown, etc.
  • License : The MIT License
  • Written in : Ruby
  • Sources : https://github.com/mojombo/jekyll
References
Themes
Theme Description Remarks
Mediumish Jekyll theme a blogging theme Medium styled, built with Bootstrap 4.
Readings
Samples

Beautiful Jekyll

Confluence

Macro Description Remarks
Blog Posts Macro Add the Blog Posts macro to a page to display a curated list of blog posts. You can choose to show the just the title, an excerpt from the blog, or the entire contents of each blog post.
Code Block Macro Display code examples with syntax highlighting.
PDF Macro Display the content of a PDF document.
Office PowerPoint Macro Display the content of a PowerPoint presentation.
Panel Macro Format your text in a customizable coloured panel.
Tips and Tricks
Simple HTML Macro for page scope styling
<style>
#content {
  font-family: Tahoma, Verdana, Georgia, sans-serif;
  font-size: 14px;
  line-height: 1.6;
}

#content a {
  target-name:new;
  target-new:tab;
}

#content code:not([class]) {
  /* Windows : Consolas, Mack : Monaco */
  font-family: Consolas, DejaVu Sans Mono, Monaco;
  font-size: 85%;
  margin: 0;
  padding: .2em .4em;
  background-color: rgb(175, 184, 193, 0.2);
  border-radius: 6px;
}

#content .code.panel.output-block {
  margin-left:40px !important;
}

#content .pdl .syntaxhighlighter code{

  /* Windows : Consolas, Mack : Monaco */
  font-family: Consolas, DejaVu Sans Mono, Monaco;
  font-size: 12px;
  font-weight: normal;
  line-height: 1.3;
}

table.confluenceTable, .wiki-content .confluence-embedded-file-wrapper .confluence-embedded-image{
  margin-left:40px
}
</style>

Drupal

  • http://drupal.org/
  • Desc : a powerful content management system which allows you to create and maintain many different types of websites without needing to know any coding languages.
  • License : GPL

JBake

Joomla

  • http://www.joomla.org/
  • Desc : a content management system (CMS), which enables you to build Web sites and powerful online applications.
  • License : GPL

Tiki Wiki CMS Groupware

  • http://info.tiki.org/
  • Desc. : a free and open source wiki-based, content management system and Online office suite
  • License : LGPL 2.1
  • Written in : PHP

Desktop Sharing

x11vnc

TightVNC


BPM Engine

Activiti

  • http://www.activiti.org/
  • Desc : a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins.
  • License : Apache License 2.0

misc

Openfire

Supervisor

  • http://supervisord.org/
  • Desc. : a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.
  • License :
  • Written in : Python

Spring Loaded

Docker

Vagrant

  • https://www.vagrantup.com/
  • Desc. : provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.
  • License :

Slack

  • https://slack.com/
  • Desc. : a cloud-based set of proprietary team collaboration tools and services
Readings
Category Character/Style Format Remarks
Escape Character Ampersand (&) &amp;
Less-Than Sign (<) &lt;
Greater-Than Sign (>) &gt;
Markup Bold *text*
Italic _text_
Strike Through ~text~
Inline Code `text`

Utilities

Browser

Chrome

  • Chrome Extensions
Extension Keyword Description Remarks
Markdown Viewer Markdown Markdown Viewer
Asciidoctor.js Live Preview AsciiDoc Render AsciiDoc (.ad, .adoc, .asc, .asciidoc) as HTML inside your browser!

Firefox

Thunderbird

Location Item Preferred Value/State Remarks
Preferences > Privacy & Security > Thunderbird Data Collection and Use Allow Thunderbird to send technical and interaction data to Mozilla Unchecked
Allow Thunderbird to send backlogged crash reports on your behalf Unchecked
Readings
Troubleshooting

PC Diagnostic and Recovery

GNU GRUB

Hiren's BootCD


PC Security

AVG

Comodo Internet Security

Eraser

  • https://eraser.heidi.ie/
  • Desc. : an advanced security tool for Windows which allows you to completely remove sensitive data from your hard drive by overwriting it several times with carefully selected patterns.

File System

rsync

Partition Wizard


Office

Notepad++

LibreOffice

Calc
Calc Functions
Category Function Description Remark
Text VALUE(text) Returns a number, given a text representation. TO_NUMBER
TEXT(number; format) Returns number converted to text, according to the format code specified by format. TO_TEXT
LEFT(text; number) Returns text from the left side of a text string. number: length
RIGHT(text; number) Returns text from the right side of a text string. number: length
MID(text; start; number) Returns text from the middle of a text string. 1 based
FIND(findtext; texttosearch[; startposition]) Returns the character position of the first occurrence of findtext within texttosearch. case-sensitive, no regex support
SEARCH(findtext; texttosearch[; startposition]) Returns the character position of the first occurrence of findtext within texttosearch. case-insensitive, regex support
REGEX(text; expression[; replacement[; flag|occurrence]]) Matches and extracts or optionally replaces text using regular expressions. supports ICU Regular Expressions
Logical IF(test; value1; value2) Returns one of two values, depending on a test condition.
NOT(value) Returns TRUE if the argument is FALSE, and FALSE if the argument is TRUE.
AND(arg1; arg2 ...arg30)
OR(arg1; arg2 ...arg30)
Math SUMIF(range; criteria[; sum-range]) Adds the cells specified by a given criteria.
SUMIFS(func-range[; range ; criterion]{1:127}) Returns the sum of the values of cells in a range that meets multiple criteria in multiple ranges.
Statistical COUNTIF(range; criteria) Returns a non-negative integer which is the number of cells in range that satisfy the given criteria.
MAXIFS(func-range[; range; criterion]{1:127}) Returns the maximum of the values of cells in a range that meet multiple criteria in multiple ranges.
Predicates ISBLANK(value) Returns TRUE if the reference to a cell is blank
ISTEXT(value) Returns TRUE if the cell contents refer to text
ISNUMBER(value) Returns TRUE if the value refers to a number
ISEVEN(value) Returns TRUE if the value is an even integer, or FALSE if the value is odd
  • Samples
VALUE(LEFT(TRIM(A1), LEN(TRIM(A1)) - 1))   # +1,000P -> 1000, -20,000P  -> 20000, ...

SUMIF(M3:M30,"Y",L3:L30)
SUMIF(M3:M30,"<>Y",L3:L30)                 # inequality expression

SUMIFS(E$2:E$17, $A$2:$A$17, LEFT($C25, 1), $D$2:$D$17, $D25)
SUMIF($A$2:$A$117,"1/*/2022",$B$2:$B$117)/COUNTIF($A$2:$A$117,"1/*/2022")    # wild-card support

LEFT(E3, SEARCH("\(|/", E3) - 1)           # regex support (requires an option enabled)

IF(REGEX(C3, $S$1, "")="", "O", "X")       # utilize regex regardless of options

# Date calculation - no direct date calculation functions
DATE(YEAR(C3), MONTH(C3), DAY(C3) + 5)     # adding 5 days

# Get the day of week
TEXT("2024-03-03", "NN")


# Conditional calculation 
IF(AND(ISNUMBER(R4), ISNUMBER(G4)), QUOTIENT(R4 * G4, 1000000), "")
Number Format Codes
Category Placeholder Description Remarks
Decimal Number # Does not display extra zeros.
0 Displays extra zeros if the number has less places than zeros in the format.
Date YYYY Year as 1900 to 2078
YY Year as 00 to 99
M Month
MM Month
MMM Month as Jan to Dec
D Day
DD Day
NN Day as Sun to Sat
NNN Day as Sunday to Saturday
Impress

Microsoft Office

Excel
Excel Configuration
Config Menu Description Remarks
Cell Auto-completion File > Options > Advanced > Editing Options > Enable AutoComplete for Cell Values
Excel Functions
Category Function Description Remark
Math SUMIF(range, criteria, [sum_range]) Sum the values in a range that meet criteria that you specify
SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...) Adds all of its arguments that meet multiple criteria
PowerPoint

Image Viewer/Editor

Picasa

GIMP

  • https://www.gimp.org/
  • Desc. : a cross-platform image editor available for GNU/Linux, OS X, Windows and more operating systems.
  • License : GPL v3
  • Typical Tasks
Task Tool/Dialog Remarks
Removing image background Fuzzy Select Tool
Select by Color Tool
Foreground Select Tool
Resizing Selection Windows > Dockable Dialogs > Tool Options
  • Dockable Dialogs
Dialog Description Remarks
Undo History
Tool Options
Tool Presets
Readings

Video Editing


Screen Capture/Recording

PicPick

  • https://picpick.app/
  • Desc. : A full-featured screen capture tool, intuitive image editor, color picker, color palette, pixel-ruler, protractor, crosshair, whiteboard and more.

ShareX

OBS Studio

Ezvid For Windows


Disk Image

CDBurnerXP

  • http://cdburnerxp.se
  • Desc. : Application to burn CDs and DVDs, including Blu-Ray and HD-DVDs.
  • License
    • Limited grants you (the licensee) a permission to use the software at no cost, both for commercial and non-commercial purposes on any computer in your possession.

ImgBurn

  • Features
    • supports a wide range of image file formats - including BIN, CCD, CDI, CUE, DI, DVD, GI, IMG, ISO, MDS, NRG and PDI.

InfraRecorder

WinCDEmu

  • Features
    • One-click mounting of ISO, CUE, NRG, MDS/MDF, CCD, IMG images.
    • Supports data, DVD-video and BD-video images.

Virtual CloneDrive

  • Features
    • Supports common image formats such as ISO, BIN, CCD
    • Virtual CloneDrive is freeware, you may use it at no cost.

misc

CCleaner

Hangul Typing

misc

Standards

eTOM

ONVIF

  • http://www.onvif.org/
  • Desc. : an open industry forum for the development of a global standard for the interface of IP-based physical security products.
  • Search
    • FindEvents
      • starts a search session, looking for recording events in the scope that matches the search filter defined in the request.
    • GetEventSearchResults
      • acquires the results from a recording event search session previously initiated by a FindEvents operation.
    • FindRecordings
      • starts a search session, looking for recordings that matches the scope defined in the request.
    • GetRecordingSearchResults
      • acquires the results from a recording search session previously initiated by a FindRecordings operation.
    • FindMetadata
      • starts a search session, looking for metadata in the scope that matches the search filter defined in the request.
    • GetMetadataSearchResults
      • acquires the results from a recording search session previously initiated by a FindMetadata operation.

Services

Amazon Redshift

Microsoft Project Oxford

  • https://www.projectoxford.ai/
  • Desc. : a set of services for understanding data and adding ‘smart’ to your applications.
  • Components
    • Computer Vision APIs
    • Face APIs
    • Emotion APIs
    • Speech APIs
    • Spell Check APIs
    • Language Understanding Intelligent Service

Awards Winner

JAX Innovation Awards

Categories Winners Remarks
Most innovative contribution to the Java ecosystem Spring Boot
Most innovative solution to software delivery and DevOps Docker
Special Jury Award Let’s Encrypt
Categories Winners Remarks
Most Innovative Java Technology Java 8
Most Innovative Open Tech Akka
Special Jury Award Netflix OSS
Categories Winners Remarks
Most Innovative Java Technology Vert.x a tool-kit for building reactive applications on the JVM
Most Innovative Open Technology Docker an open platform for distributed applications for developers and sysadmins
Most Innovative Open Tech Business Hazelcast The Leading Open Source In-Memory Data Grid
Categories Winners Remarks
Most Innovative Java Technology Restructure101 commercial product
Most Innovative Java Company JetBrains
Top Java Ambassador Adam Bien
Special Jury Award Charlie Nutter
Categories Winners Remarks
Most Innovative Java Technology JRebel
Most Innovative Java Company Red Hat
Top Java Ambassador Martin Odersky
Special Jury Award Brian Goetz

Software Ranking

Code Assessment Platforms

Platform Description Remarks
HackerRank Matching developers with great companies.
Codility Remote tech hiring, everywhere
Coderbyte the #1 website for technical interview prep and coding challenges
LeetCode the best platform to help you enhance your skills, expand your knowledge and prepare for technical interviews.

Font

  • SERIF VS SANS SERIF FONTS
    • serif : n. a short flat line at the top or bottom of some printed letters
    • sans : prep. without – usually used humorously
    • Serif fonts : Times New Roman, Georgia, Palatino and Garamond.

Graphics Asset

Collection Description Adopted by Remarks
SVG Logos A curated collection of SVG logos for developers/DevOps/geeks PlantUML, Slidev Catalog
Open Iconic PlantUML, Creole
Tango Desktop Project Defines an icon style guideline to which artists and designers can adhere and provides a sample implementation of the style as an icon theme based upon a standardized icon naming specification.
Silk Icons A smooth, free icon set, containing over 700 16-by-16 pixel icons in strokably-soft PNG format.
Liquid Look And Feel Java2 Swing Look and Feel of Mosfet Liquid KDE 3.x theme.
Open Source Web Design A site to download free web design templates and share yours with others.
IconFinder provides high quality icons for webdesigners and developers in an easy and efficient way.
Openclipart a community and collection of vector clip art that is free content Openclipart(Wikipedia)
Classroom Clipart a great source for free clipart for not only for students, teachers and parents, but for everyone.
SOLUTION ICONS FOR ARCHITECTURAL DIAGRAMS The official set of icons to build architectural diagrams of Google Cloud Platform
Cisco Network Topology Icons Cisco icons are globally recognized and generally accepted as standard for network icon topologies.
Advertisement