3rdstage's Wiki
Tag: Source edit
 
(348 intermediate revisions by the same user not shown)
Line 21: Line 21:
 
* Desc. : a flexible framework for writing robot software.
 
* Desc. : a flexible framework for writing robot software.
 
* License :
 
* License :
  +
  +
----
   
 
==Frameworks==
 
==Frameworks==
Line 61: Line 63:
 
** [http://docs.sencha.com/touch/2-1/#!/guide/getting_started Getting Started with Sencha Touch 2.1.1]
 
** [http://docs.sencha.com/touch/2-1/#!/guide/getting_started Getting Started with Sencha Touch 2.1.1]
 
** [http://docs.sencha.com/touch/2-1/#!/guide/command Sencha Cmd Guide]
 
** [http://docs.sencha.com/touch/2-1/#!/guide/command Sencha Cmd Guide]
  +
  +
----
   
 
==Libraries==
 
==Libraries==
Line 85: Line 89:
 
* Desc. : transforms the WSDL into HTML.
 
* Desc. : transforms the WSDL into HTML.
 
* License : New BSD License
 
* License : New BSD License
  +
  +
----
   
 
===Networking===
 
===Networking===
Line 101: Line 107:
 
* Desc. : a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.
 
* Desc. : a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.
 
* License : BSD License
 
* License : BSD License
  +
  +
----
   
 
===Security===
 
===Security===
  +
  +
* [https://crypto.stackexchange.com/questions/273/is-there-any-open-source-white-box-implementation-of-aes-or-des Is there any open-source white-box implementation of AES or DES?] (Jul 30 '11)
   
 
====NSS====
 
====NSS====
Line 124: Line 134:
   
 
* [https://dogtagpki.github.io/jss/v4.5.x/javadocs/ JSS 4.5.x API]
 
* [https://dogtagpki.github.io/jss/v4.5.x/javadocs/ JSS 4.5.x API]
  +
  +
----
  +
  +
===Syntax Highlighter===
  +
  +
* [https://en.wikipedia.org/wiki/Syntax_highlighting Syntax highlighting]
  +
  +
{| class='wikitable'
  +
! Library !! Written in !! Description !! Supporting Languages || Remarkable Languages || Used-by
  +
|-
  +
| [https://pygments.org/ Pygments] || Python || Python syntax highlighter
  +
| [https://pygments.org/languages/ languages] || || MediaWiki, Asciidoctor
  +
|-
  +
| [http://coderay.rubychan.de/ CodeRay] || Ruby || a Ruby library for syntax highlighting
  +
| [http://coderay.rubychan.de/doc/CodeRay/Encoders.html Encoders] || || Asciidoctor
  +
|-
  +
| [https://github.com/rouge-ruby/rouge Rouge] || Ruby || a pure Ruby syntax highlighter
  +
| [https://rouge-ruby.github.io/docs/file.Languages.html language] || || Asciidoctor
  +
|-
  +
| [https://highlightjs.org/ highlight.js] || || Syntax highlighting for the Web
  +
| [https://highlightjs.org/static/demo/ language] || || Asciidoctor
  +
|-
  +
| [https://github.com/PrismJS/prism Prism] || JavaScript
  +
| a lightweight, robust, and elegant syntax highlighting library.
  +
| [https://prismjs.com/#supported-languages languages] || <code>plantuml</code> || Slidev
  +
|-
  +
| [https://github.com/shikijs/shiki Shiki] || || a beautiful Syntax Highlighter
  +
| [https://github.com/shikijs/shiki/blob/main/docs/languages.md#all-languages languages] || ||
  +
|}
  +
  +
{| class='wikitable'
  +
! Language !! Pygments !! CodeRay !! CodeRay !! Rouge !! highlight.js !! Prism !! Shiki
  +
|-
  +
| PostgreSQL SQL Dialect || <code>postgres</code>, <code>postgresql</code> || || || || || ||
  +
|}
   
 
===misc===
 
===misc===
Line 144: Line 189:
 
* Desc. : A free source code editing component for Win32, GTK+, and OS X
 
* Desc. : A free source code editing component for Win32, GTK+, and OS X
 
* License : permits use in any free project or commercial product.
 
* License : permits use in any free project or commercial product.
  +
  +
----
   
 
==Tools==
 
==Tools==
Line 149: Line 196:
 
===IDE===
 
===IDE===
   
  +
* [https://microsoft.github.io/language-server-protocol/ Language Server Protocol]
====NetBeans====
 
  +
** 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.
  +
** [https://www.eclipse.org/community/eclipse_newsletter/2017/may/article1.php Language Server Protocol]
   
  +
====VS Code====
* 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
 
   
  +
* https://code.visualstudio.com/
====IntelliJ IDEA====
 
  +
* Desc. :
  +
* License : MIT license
  +
* Sources : https://github.com/Microsoft/vscode/
   
  +
=====Settings=====
* https://www.jetbrains.com/idea/
 
* Desc. : intelligent IDE for Java and other technologies with an exceptional out-of-the-box feature set
 
* License :
 
   
  +
* [https://code.visualstudio.com/docs/getstarted/settings#_default-settings Default settings]
=====Plugins=====
 
   
{| class='wikitable' style='margin-left:20px'
+
{| class='wikitable'
! Plugin !! Site !! Description !! Remarks
+
! Category !! Key !! Description || Type/Values !! Default Value !! Recommended Value !! Scope !! Remarks
 
|-
 
|-
  +
| <code>telemetry</code> || <code>telemetryLevel</code>
| BashSupport
 
  +
| Controls the different types of telemetry we send with a single setting
| https://www.plugin-dev.com/project/bashsupport/
 
  +
| <code>string</code> || <code>all</code> || <code>off</code> || <code>User</code> || usage report, crash report
| provides an almost complete development environment to work with Bash scripts in IntelliJ platform products
 
  +
|-
  +
| <code>update</code> || <code>mode</code>
  +
| Controls the auto-update of VS Code
  +
| <code>string</code> || <code>default</code> || <code>none</code> || <code>User</code> ||
  +
|-
  +
| <code>extensions</code> || <code>autoUpdate</code>
  +
| Enable of disable the auto-update of extensions
  +
| <code>boolean</code> || || <code>false</code> || <code>User</code> ||
  +
|-
  +
| <code>workbench</code> || <code>workbenche.ditor.revealIfOpen</code>
  +
| Controls whether an editor is revealed in any of the visible groups if opened.
  +
| <code>boolean</code> || || <code>false</code> || ||
  +
|-
  +
| || <code>workbench.tree.indent</code>
  +
| Controls tree indentation in pixels
  +
| <code>integer</code> || 8 || 16 || ||
  +
|-
  +
| || <code>enableExperiments</code>
  +
| Enable or disable experimental features
  +
| <code>boolena</code> || || <code>false</code> || <code>User</code> ||
  +
|-
  +
| <code>files</code> || <code>files.exclude</code>
  +
| Configures glob patterns for excluding files and folders.
  +
| <code>object</code> || || || ||
  +
|-
  +
| || <code>files.watcherExclude</code>
  +
| Configures paths or glob patterns to exclude from file watching.
  +
| <code>object</code> || || || ||
  +
|}
  +
  +
=====Extensions=====
  +
  +
* [https://marketplace.visualstudio.com/VSCode VS Code Extension Marketplace]
  +
  +
{| class='wikitable'
  +
! Category !! Extension !! Provider !! Description !! Settings !! Remarks
  +
|-
  +
| General Editing Support || [https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker Code Spell Checker] ||
  +
| A basic spell checker that works well with camelCase code.
  +
| [https://streetsidesoftware.com/vscode-spell-checker/docs/configuration/#cspellwords <code>cSpell.*</code>] || <code>cSpell.enabled: boolean</code>, <code>cSpell.words: string[]</code>
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=wmaurer.change-case Change Case Extension] ||
  +
| Quickly change the case of the current selection or current word. || || [https://github.com/wmaurer/vscode-change-case#commands <code>extension.changeCase.*</code> commands]
  +
|-
  +
| Java Support || [https://marketplace.visualstudio.com/items?itemName=redhat.java Language Support for Java]
  +
| [https://marketplace.visualstudio.com/publishers/redhat Red Hat]
  +
| Java Linting, Intellisense, formatting, refactoring, Maven/Gradle support and more... || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=vmware.vscode-spring-boot Spring Boot Tools]
  +
| [https://marketplace.visualstudio.com/publishers/vmware VMware]
  +
| Provides validation and content assist for Spring Boot <code>application.properties</code>, <code>application.yml</code> properties files. As well as Boot-specific support for <code>.java</code> files. || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-dependency Project Manager for Java]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Manage Java projects in Visual Studio Code || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug Debugger for Java]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| A lightweight Java Debugger based on Java Debug Server which extends the Language Support for Java by Red Hat. || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-maven Maven for Java]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Manage Maven projects, execute goals, generate project from archetype, improve user experience for Java developers. || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle Gradle for Java]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Manage Gradle Projects, run Gradle tasks and provide better Gradle file authoring experience in VS Code || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-test Test Runner for Java]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Run and debug JUnit or TestNG test cases. || ||
  +
|-
  +
| JavaScript/TypeScript Support || [https://marketplace.visualstudio.com/items?itemName=dbaeumer.jshint jshint]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Integrates JSHint into VS Code. || || <code>jshint.enable: boolean</code>, <code>jshint.config</code>, <code>jshint.excludePath</code>
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint ESLint]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Integrates ESLint into VS Code. || ||
  +
|-
  +
| Python Support || [https://marketplace.visualstudio.com/items?itemName=ms-python.python Python]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more. || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance Pylance]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| A performant, feature-rich language server for Python in VS Code || ||
  +
|-
  +
| Rust Support || [https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer rust-analyzer]
  +
| [https://marketplace.visualstudio.com/publishers/rust-lang The Rust Programming Language]
  +
| Provides support for the Rust programming language. || ||
  +
|-
  +
| Solidity Support || [https://marketplace.visualstudio.com/items?itemName=tintinweb.solidity-visual-auditor 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. || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=trufflesuite-csi.truffle-vscode Truffle for VS Code] || ConsenSys Software Inc.
  +
| Build, debug and deploy smart contracts on Ethereum and EVM-compatible blockchains. || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity Solidity] || Nomic Foundation
  +
| Solidity and Hardhat support by the Hardhat team ||
  +
| [https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity#formatting formatting]
  +
|-
  +
| Markup Support || [https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one Markdown All in One] ||
  +
| All you need for Markdown (keyboard shortcuts, table of contents, auto preview and more) || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced 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. ||
  +
| [https://shd101wyy.github.io/markdown-preview-enhanced/#/ MPE documentation]
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=bierner.markdown-mermaid Markdown Preview Mermaid Support] ||
  +
| Adds Mermaid diagram and flowchart support to VS Code's builtin markdown preview || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=asciidoctor.asciidoctor-vscode AsciiDoc] || asciidoctor
  +
| An extension that provides live preview, syntax highlighting and snippets for the AsciiDoc format using Asciidoctor. ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml YAML]
  +
| [https://marketplace.visualstudio.com/publishers/redhat Red Hat]
  +
| YAML Language Support by Red Hat, with built-in Kubernetes syntax support || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=redhat.vscode-xml XML]
  +
| [https://marketplace.visualstudio.com/publishers/redhat Red Hat]
  +
| Provides support for creating and editing XML documents, based on the LemMinX XML Language Server. || ||
  +
|-
  +
| Format Support || [https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml Even Better TOML]
  +
| tamasfe || Fully-featured TOML support || || [https://github.com/toml-lang/toml TOML]
  +
|-
  +
| Tools Support || [https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker Docker]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| Makes it easy to build, manage, and deploy containerized applications from Visual Studio Code. ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml PlantUML] ||
  +
| Rich PlantUML support for Visual Studio Code || ||
  +
|-
  +
| || [https://marketplace.visualstudio.com/items?itemName=antfu.slidev Slidev] ||
  +
| [https://sli.dev/ Slidev] support for VS Code || ||
  +
|-
  +
| Database Support || [https://marketplace.visualstudio.com/items?itemName=ms-ossdata.vscode-postgresql PostgreSQL]
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft]
  +
| An extension for developing PostgreSQL with functionalities including || ||
  +
|}
  +
  +
* Extension Providers
  +
  +
{| class='wikitable'
  +
! Provider !! Description !! Extensions || Remarks
  +
|-
  +
| [https://marketplace.visualstudio.com/publishers/Microsoft Microsoft] ||
  +
| Python, C/C++, C#, IntelliCode, jshint, ESLint, Project Manager for Java, Maven for Java, Gradle for Java, Docker ||
  +
|-
  +
| [https://marketplace.visualstudio.com/publishers/redhat Red Hat] ||
  +
| Language Support for Java, YAML, XML, Ansible, BPMN Editor ||
  +
|-
  +
| [https://marketplace.visualstudio.com/publishers/vmware VMware] ||
  +
| Spring Boot Tools
  +
|}
  +
  +
======Code Spell Checker======
  +
  +
* https://cspell.org/
  +
  +
* [https://cspell.org/configuration/ CSpell Configuration]
  +
** <code>cspell.json</code>, <code>.cspell.json</code>, <code>cspell.yaml</code>, <code>cspell.yml</code>, ...
  +
  +
{| class='wikitable'
  +
! Setting !! Items !! Description !! Sub-items !! Remark
  +
|-
  +
| [https://streetsidesoftware.com/vscode-spell-checker/docs/configuration/ Configuration Settings] || top-level ||
  +
| <code>version</code>, <code>language</code>, <code>words</code>, <code>flagWords</code>, <code>ignorePaths</code>, <code>ignoreWords</code>, <code>patterns</code>, <code>ignoreRegExpList</code>
 
|
 
|
  +
|-
  +
| [https://cspell.org/docs/dictionaries-custom/ Custom Dictionaries] || <code>dictionaries</code>, <code> dictionaryDefinitions </code> ||
  +
| ||
  +
|-
  +
| [https://cspell.org/configuration/language-settings/ Language Settings] || <code>languageSettings</code> ||
  +
| <code>languageId</code>, <code>locale</code>, <code>dictionaries</code>, <code>
 
|}
 
|}
  +
  +
<syntaxhighlight lang='text' enclose='div'>
  +
  +
root: object --+-- $schema: string
  +
|
  +
+-- version: string
  +
|
  +
+-- language: string
  +
|
  +
+-- words: string[]
  +
|
  +
+-- flagWords: string[]
  +
|
  +
  +
</syntaxhighlight>
  +
  +
* [https://github.com/streetsidesoftware/cspell-dicts CSpell Dictionaries]
  +
** language dictionaries, programming dictionaries (bash, Java, Python, TypeScript, ...), specialized dictionaries
  +
  +
* [https://cspell.org/configuration/document-settings/ Inline Document Settings]
  +
** <code>disable</code>, <code>enable</code>, <code>words</code>, <code>ignore</code>, <code>ignoreRegExp</code>, <code>dictionaries</code>
  +
  +
=====Shortcuts=====
  +
  +
* [https://code.visualstudio.com/docs/getstarted/keybindings#_default-keyboard-shortcuts Default Keyboard Shortcuts]
  +
* [https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-keyboard-shortcuts Keyboard Shortcuts]
  +
  +
{| class='wikitable'
  +
! Category !! Command !! Shortcut (Windows) !! Shortcut (macOS) !! Description !! Remarks
  +
|-
  +
| Common || Command Pallette || <code>F1</code> || <code>F1</code> || ||
  +
|-
  +
| Editing || Copy || <code>^C</code> || <code>^C</code> || ||
  +
|-
  +
| || Cut || || || ||
  +
|-
  +
| || Paste || <code>^V</code> || <code>^V</code> || ||
  +
|-
  +
| || Undo || <code>^Z</code> || <code>^Z</code> || ||
  +
|-
  +
| || Indent Lines || <code>^]</code> || <code>^]</code> || ||
  +
|-
  +
| || Outdent Lines || <code>^[</code> || <code>^[</code> || ||
  +
|-
  +
| || Toggle Line Comment(s) || <code>^/</code> || <code>^/</code> || ||
  +
|-
  +
| Run/Debug || Start Debugging || <code>F5</code> || <code>F5</code> || Start debugging session ||
  +
|-
  +
| || Run w/o Debugging || <code>^F5</code> || || ||
  +
|}
  +
  +
=====Typical Configuration=====
  +
  +
* Workspace settings (<code>.vscode/settings.json</code>)
  +
** [https://github.com/3rdstage/general-project-boilerplate/blob/main/.vscode/settings.json sample settings]
  +
  +
<syntaxhighlight lang='json' enclose='div'>
  +
{
  +
"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"
  +
]
  +
}
  +
  +
</syntaxhighlight>
  +
  +
* cSpell settings (<code>.vscode/cspell.json</code>)
  +
** [https://github.com/3rdstage/general-project-boilerplate/blob/main/.vscode/cspell.json sample settings]
  +
  +
<syntaxhighlight lang='json' enclose='div'>
  +
{
  +
"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
  +
]
  +
}
  +
</syntaxhighlight>
  +
  +
=====Readings=====
  +
  +
* [https://code.visualstudio.com/docs/getstarted/settings User and Workspace Settings]
  +
* [https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations User settings file locations]
  +
  +
* [https://code.visualstudio.com/docs/editor/intellisense IntelliSense] : a general term for various code editing features including: code completion, parameter info, quick info, and member lists.
  +
  +
======JavaScript with VS Code======
  +
  +
* [https://code.visualstudio.com/docs/nodejs/working-with-javascript Working with JavaScript]
  +
* [https://code.visualstudio.com/docs/languages/javascript JavaScript in Visual Studio Code]
  +
* [https://github.com/microsoft/TypeScript/wiki/JavaScript-Language-Service-in-Visual-Studio JavaScript Language Service in Visual Studio] (3 Aug 2021)
  +
  +
* [https://stackoverflow.com/questions/34174207/how-to-change-indentation-in-visual-studio-code How to change indentation in Visual Studio Code?]
  +
** <code>"editor.tabSize": 2, "editor.detectIndentation": false</code>
  +
  +
* [https://code.visualstudio.com/docs/typescript/typescript-tutorial#_debugging VS Code Typescript Debugging] : <code>F5</code>
  +
  +
======Rust with VS Code======
  +
  +
* [https://code.visualstudio.com/docs/languages/rust Rust in Visual Studio Code]
  +
* [https://rust-analyzer.github.io/manual.html <code>rust-analyzer</code> User Manual]
  +
* [https://rust-analyzer.github.io/manual.html#configuration <code>rust-analyzer</code> Configuration]
  +
  +
======C/C++ with VS Code======
  +
  +
* [https://code.visualstudio.com/docs/languages/cpp C/C++ for Visual Studio Code]
   
 
====Atom====
 
====Atom====
Line 195: Line 599:
 
| A terminal package for Atom, complete with themes, API and more for PlatformIO IDE. ||
 
| A terminal package for Atom, complete with themes, API and more for PlatformIO IDE. ||
 
|}
 
|}
  +
  +
====Eclipse Theia====
  +
  +
* https://theia-ide.org/
  +
* Desc. : helps you efficiently develop and deliver multi-language Cloud & Desktop IDEs and tools with modern, state-of-the-art web technologies.
  +
* License : EPL 2.0
  +
* Sources : https://github.com/eclipse-theia/theia
  +
  +
====IntelliJ IDEA====
  +
  +
* https://www.jetbrains.com/idea/
  +
* Desc. : intelligent IDE for Java and other technologies with an exceptional out-of-the-box feature set
  +
* License :
  +
  +
=====Plugins=====
  +
  +
{| class='wikitable'
  +
! 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===
 
===UML Modeling===
   
 
* [https://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools List of UML tools]
 
* [https://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools List of UML tools]
  +
* [https://modeling-languages.com/text-uml-tools-complete-list/ Text to UML and other “diagrams as code” tools]
   
 
====PlantUML====
 
====PlantUML====
Line 207: Line 644:
 
* Sources : https://github.com/plantuml/plantuml
 
* Sources : https://github.com/plantuml/plantuml
   
=====Readings=====
+
=====References=====
   
 
* [https://en.wikipedia.org/wiki/PlantUML PlantUML] (Wikipedia)
 
* [https://en.wikipedia.org/wiki/PlantUML PlantUML] (Wikipedia)
  +
* [http://plantuml.com/guide PlantUML Language Reference Guide]
  +
* [https://plantuml.com/sitemap-language-specification PlantUML Language Specification]
 
* [https://plantuml-documentation.readthedocs.io/en/latest/ Ashley’s PlantUML Documentation]
 
* [https://plantuml-documentation.readthedocs.io/en/latest/ Ashley’s PlantUML Documentation]
  +
* [https://crashedmind.github.io/PlantUMLHitchhikersGuide/ The Hitchhiker’s Guide to PlantUML]
** [https://plantuml-documentation.readthedocs.io/en/latest/diagrams/sequence.html UML Sequence Diagram]
 
** [https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html All Skin Parameters]
+
** [https://crashedmind.github.io/PlantUMLHitchhikersGuide/aws/aws.html AWS Diagrams]
  +
** [https://crashedmind.github.io/PlantUMLHitchhikersGuide/kubernetes/kubernetes.html Kubernetes and Azure]
  +
** [https://crashedmind.github.io/PlantUMLHitchhikersGuide/gcp/gcp.html Google Cloud Platform‎]
   
  +
* Diagrams
* [http://plantuml.com/guide PlantUML Language Reference Guide]
 
  +
{| class='wikitable'
* [https://plantuml.com/sequence-diagram Sequence Diagram]
 
  +
! Diagram Type !! Homepage !! Ashley's || Remarks
  +
|-
  +
| Sequence Diagram || [https://plantuml.com/en/sequence-diagram Sequence Diagram]
  +
| [https://plantuml-documentation.readthedocs.io/en/latest/diagrams/sequence.html UML Sequence Diagram] ||
  +
|-
  +
| Class Diagram || [https://plantuml.com/en/class-diagram Class Diagram] || ||
  +
|-
  +
| State Diagram || [https://plantuml.com/state-diagram State Diagram] || ||
  +
|-
  +
| Activity Diagram || [https://plantuml.com/activity-diagram-beta Activity Diagram] || ||
  +
|-
  +
| Usecase Diagram || || ||
  +
|-
  +
| Component Diagram || || ||
  +
|-
  +
| Deployment Diagram || || ||
  +
|-
  +
| ERD || [https://plantuml.com/ie-diagram Entity Relationship Diagram] || ||
  +
|-
  +
| EBNF || [https://plantuml.com/ebnf Extended BNF Diagram] || ||
  +
|-
  +
| JSON || [https://plantuml.com/json JSON Data] || ||
  +
|-
  +
| YAML || [https://plantuml.com/yaml YAML Data] || ||
  +
|-
  +
| WBS || [https://plantuml.com/wbs-diagram Work Breakdown Structure Diagram] || ||
  +
|-
  +
| Mind Map || [https://plantuml.com/mindmap-diagram MindMap Diagram] || ||
  +
|}
  +
  +
* Features
  +
{| class='wikitable'
  +
! Feature !! Description !! Remarks
  +
|-
  +
| [https://plantuml.com/color Color]
  +
| specify fill and line colors using standard CSS color name, RGB(<code>#<i>RRGGBB</i></code>), RGBA(<code>#<i>RRGGBBaa</i></code>), and more ||
  +
|-
  +
| [https://plantuml.com/creole Creole]
  +
| A light-weight Creole engine is integrated in PlantUML to have a standardized way to emit styled text. ||
  +
|-
  +
| [https://plantuml.com/openiconic 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.
  +
| <code><nowiki><&</nowiki><i>icon_name</i><nowiki>></nowiki></code>
  +
|-
  +
| [https://plantuml.com/salt Salt (Wireframe)]
  +
| a subproject included in PlantUML that may help you to design graphical interface or Website Wireframe or Page Schematic or Screen Blueprint. ||
  +
|-
  +
| [https://plantuml.com/sprite Sprite]
  +
| a small graphic element that can be used in diagrams. ||
  +
|-
  +
| [https://plantuml.com/style-evolution Style] || || testing stage
  +
|-
  +
| [https://plantuml.com/skinparam Skinparam]
  +
| can change colors and font of the drawing using the <code>skinparam</code> command. ||
  +
|-
  +
| [https://plantuml.com/theme Themes]
  +
| <code>!them <i>theme_name</i></code> || <code>amiga</code>, <code>mars</code>, <code>metal</code>, <code>mono</code> ...
  +
|-
  +
| [https://plantuml.com/preprocessing Preprocessing]
  +
| ||
  +
|}
  +
  +
======[https://plantuml.com/commons Common Commands]======
  +
  +
{| class='wikitable'
  +
! Command !! Description !! Remarks
  +
|-
  +
| [https://plantuml.com/commons#8413c683b4b27cc3 <tt>'</tt>, <tt>/'</tt> ... <tt>'/</tt>] || single line or multi-lines comments ||
  +
|-
  +
| [https://plantuml.com/commons#f443cae2041edc16 <tt>header</tt>, <tt>footer</tt>] || add a footer or a header on any generated diagram ||
  +
|-
  +
| [https://plantuml.com/commons#4252b72e6ebcd4d4 <tt>scale</tt>] || zoom the generated image ||
  +
|-
  +
| [https://plantuml.com/commons#b78a322350389672 <tt>title</tt>] || put a title || [https://plantuml.com/creole creole formatting]
  +
|-
  +
| [https://plantuml.com/commons#272ba7d164aa8369 <tt>caption</tt>] || put a caption under the diagram ||
  +
|-
  +
| [https://plantuml.com/commons#3b05da228ffe6d52 <tt>legend</tt>] || put a legend ||
  +
|}
  +
  +
======Skin======
  +
  +
* [https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html All Skin Parameters]
  +
* [https://plantuml-documentation.readthedocs.io/en/latest/formatting/color-names.html Color Names and Samples]
  +
{| class='wikitable'
  +
! Category !! Parameters !! Remarks
  +
|-
  +
| [https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html#default Default]
  +
| <tt>DefaultFontName</tt>, <tt>DefaultFontColor</tt> ||
  +
|-
  +
| [https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html#class Class]
  +
| <tt>ClassFontName</tt>, <tt>ClassFontSize</tt> ||
  +
|-
  +
| [https://plantuml-documentation.readthedocs.io/en/latest/formatting/all-skin-params.html#sequence Sequence]
  +
| ||
  +
|}
  +
  +
======[https://plantuml.com/creole Creole Support]======
  +
  +
<syntaxhighlight lang='text' enclose='div'>
  +
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
  +
</syntaxhighlight>
  +
  +
{| class='wikitable'
  +
! Element !! Format !! Remarks !! Sample
  +
|-
  +
| Underlined Text || <code>&lt;u:<i>color</i>&gt;<i>text</i>&lt;/u&gt;</code> || ||
  +
|-
  +
| Wave Underlined Text || <code>&lt;w:<i>color</i>&gt;<i>text</i>&lt;/w&gt;</code> || ||
  +
|-
  +
| Striked Text || <code>&lt;s:<i>color</i>&gt;<i>text</i>&lt;/s&gt;</code> || ||
  +
|-
  +
| Foreground Color || <code>&lt;color:<i>color</i>&gt;<i>text</i>&lt;/color&gt;</code> || ||
  +
|-
  +
| Background Color || <code>&lt;back:<i>color</i>&gt;<i>text</i>&lt;/back&gt;</code> || ||
  +
|-
  +
| Font Size || <code>&lt;size:<i>n</i>&gt;<i>text</i>&lt;/size&gt;</code> || ||
  +
|-
  +
| Link || <code>[[<i>url<i>{<i>tooltip</i>} <i>label</i>]]</code> || <code><i>label</i></code> and <code><i>tooltip</i></code> are optional
  +
| <code><nowiki>[[http://plantuml.com]]</nowiki></code><br/><code><nowiki>[[http://plantuml.com PlantUML Homepage]]</nowiki></code><br/><code><nowiki>[[http://plantuml.com{PlantUML} PlantUML Homepage]]</nowiki></code>
  +
|}
  +
  +
* [https://plantuml.com/openiconic 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.
  +
  +
{| class='wikitable'
  +
! Icon !! Description !! Remarks
  +
|-
  +
| <code><nowiki><&flag></nowiki></code> || flag ||
  +
|-
  +
| <code><nowiki><&pin></nowiki></code> || pin ||
  +
|-
  +
| <code><nowiki><&expland-down></nowiki></code> || expand down ||
  +
|-
  +
| <code><nowiki><&expland-rigght></nowiki></code> || expand down ||
  +
|-
  +
| <code><nowiki><&plus></nowiki></code> || plus sign ||
  +
|}
  +
  +
======[https://plantuml.com/stdlib Standard Library]======
  +
  +
{| class='wikitable'
  +
! Library !! Reference !! Description !! Remarks
  +
|-
  +
| [https://github.com/plantuml-stdlib/Archimate-PlantUML <code>archimate</code>]
  +
| [https://en.wikipedia.org/wiki/ArchiMate ArchiMate]
  +
| PlantUML macros and other includes for creating Archimate Diagrams easily.
  +
| [https://plantuml.com/archimate-diagram ArchiMate Diagram]
  +
|-
  +
| [https://github.com/awslabs/aws-icons-for-plantuml <code>awslib</code>]
  +
| [https://aws.amazon.com/architecture/icons/ AWS Architecture Icons]
  +
| PlantUML images, sprites, macros, and other includes for Amazon Web Services (AWS) services and resources. ||
  +
|-
  +
| [https://github.com/rabelenda/cicon-plantuml-sprites <code>cloudinsight</code>]
  +
| [https://github.com/cloudinsight/cicon Cloudinsight Icons]
  +
| PlantUML sprites generated from Cloudinsight icons, which can easily be used in PlantUML diagrams for nice visual representation of popular technologies. ||
  +
|-
  +
| [https://github.com/Templarian/MaterialDesign <code>material</code>]
  +
| [https://pictogrammers.com/library/mdi/ Material Design Icons]
  +
| free Material style icons from Google and other artists ||
  +
|-
  +
| [https://github.com/plantuml-stdlib/gilbarbara-plantuml-sprites <code>logos</code>]
  +
| [https://github.com/gilbarbara/logos SVG Logos]
  +
| PlantUML sprites generated from Gil Barbara's logos, which can easily be used in PlantUML diagrams for nice visual aid. ||
  +
|}
  +
  +
======Sprite======
  +
  +
* [https://plantuml.com/sprite Sprite] : a small graphic element that can be used in diagrams
  +
  +
* [https://github.com/rabelenda/cicon-plantuml-sprites CloudInsight PlantUML Sprites]
  +
{| class='wikitable'
  +
! Sprite !! Import !! Syntax !! Remarks
  +
|-
  +
| Java || <code>!include <cloudinsight/java></code> || <code><nowiki><$java></nowiki></code> ||
  +
|-
  +
| Tomcat || <code>!include <cloudinsight/tomcat></code> || <code><nowiki><$tomcat></nowiki></code> ||
  +
|-
  +
| Kafka || <code>!include <cloudinsight/kafka></code> || <code><nowiki><$kafka></nowiki></code> ||
  +
|-
  +
| Cassandra || <code>!include <cloudinsight/cassandra></code> || <code><nowiki><$cassandra></nowiki></code> ||
  +
|}
  +
  +
* [https://github.com/rabelenda/cicon-plantuml-sprites/blob/master/sprites-list.md List of CloudInsight PlantUML Sprites]
  +
{| class='wikitable'
  +
! Category !! Sprite !! Description !! Remarks
  +
|-
  +
| Concept || <code>overview</code>, <code>edit</code>, <code>copy</code>, <code>download</code>, <code>play</code>, <code>pause</code>, <code>loading</code>, <code>disable</code>, <code>exit</code>
  +
| ||
  +
|-
  +
| Symbol || <code>remove-sign</code>, <code>point</code>, <code>plus</code>, <code>question</code>, <code>left</code>, <code>right</code> || ||
  +
|-
  +
| Object
  +
| <code>user</code>, <code>trash</code>, <code>bell</code>, <code>dashboard</code>, <code>desktop</code>, <code>server</code>, <code>file</code>
  +
| ||
  +
|-
  +
| Protocol || <code>snmp</code> || ||
  +
|-
  +
| Programming || <code>java</code>, <code>python</code>, <code>nodejs</code>, <code>ruby</code>, <code>php</code> || ||
  +
|-
  +
| O/S || <code>windows</code>, <code>linux</code>, <code>docker</code>, <code>openstack</code> || ||
  +
|-
  +
| Appl. Server || <code>apache</code>, <code>nginx</code>, <code>tomcat</code>, <code>zookeeper</code>, <code>haproxy</code> || ||
  +
|-
  +
| Database || <code>mysql</code>, <code>postgresql</code> || ||
  +
|-
  +
| NoSQL || <code>memcached</code>, <code>mongodb</code>, <code>redis</code>, <code>cassandra</code>, <code>couchbase</code>, <code>couchdb</code>, <code>kafka</code>, <code>hdfs</code>
  +
| ||
  +
|-
  +
| MQ || <code>activemq</code>, <code>rabbitmq</code> || ||
  +
|}
  +
  +
* [https://github.com/plantuml-stdlib/gilbarbara-plantuml-sprites Gil Barbara's Logos PlantUML Sprites]
  +
{| class='wikitable'
  +
! Sprite !! Import !! Syntax !! Remarks
  +
|-
  +
| Kotlin || <code>!include <logos/kotlin></code> || <code><nowiki><$kotlin></nowiki></code> ||
  +
|-
  +
| Kafka || <code>!include <logos/kafka></code> || <code><nowiki><$kafka></nowiki></code> ||
  +
|-
  +
| Cassandra || <code>!include <logos/cassandra></code> || <code><nowiki><$cassandra></nowiki></code> ||
  +
|}
  +
  +
* [https://github.com/plantuml-stdlib/gilbarbara-plantuml-sprites/blob/master/sprites-list.md List of Gil Barbara's Logos PlantUML Sprites]
  +
  +
======[https://plantuml.com/preprocessing Preprocessing]======
  +
  +
* Variable definition : <code>=</code>, <code>?=</code>
  +
* Boolean expression
  +
* Conditions : <code>!if</code>, <code>!else</code>, <code>!elseif</code>, <code>!endif</code>
  +
* While loop : <code>!while</code>, <code>!endwhile</code>
  +
* Including files or URL : <code>!include</code>
  +
* Builtin functions : <code>%''func''</code>
  +
  +
=====Readings=====
  +
  +
* [https://forum.plantuml.net/1353/is-it-possible-to-comment-out-lines-of-diagram-syntax Is it possible to comment out lines of diagram syntax?](Oct 25, 2013)
  +
** single line : <tt>'</tt>, multi line : <tt>/' ... '/</tt>
  +
* [https://stackoverflow.com/questions/67474414/how-to-include-classes-from-another-plantuml-file-into-a-class-diagram How to include classes from another Plantuml file into a class diagram?] (May 10, 2021)
  +
** <code>!include diagram1!foo</code>
  +
* [https://modeling-languages.com/plantuml-textual-uml-online/ An ecosystem of tools around PlantUML to render textual UML diagrams anywhere you want]
  +
** UML to Latex, UML to SQL, UML in Jekyll, UML in Google Docs
  +
  +
=====Typical Source=====
  +
  +
======Diagram Boilerplates======
  +
  +
* Sequence Diagram Boilerplate
  +
  +
<syntaxhighlight lang='text' encode='div'>
  +
@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
  +
</syntaxhighlight>
  +
  +
* Use-Case Diagram Boilerplate
  +
  +
<syntaxhighlight lang='text' encode='div'>
  +
@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
  +
</syntaxhighlight>
  +
  +
* State Diagram Boilerplate
  +
  +
<syntaxhighlight lang='text' encode='div'>
  +
@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
  +
</syntaxhighlight>
  +
  +
* Class Diagram Boilerplate
  +
  +
<syntaxhighlight lang='text' encode='div'>
  +
@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
  +
</syntaxhighlight>
  +
  +
======Sequence Diagrams======
  +
  +
* Using <code>return</code> and delay (<code>|||</code>
  +
  +
<syntaxhighlight lang='plantuml' encode='div'>
  +
  +
@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
  +
</syntaxhighlight>
   
 
====UMLet====
 
====UMLet====
Line 233: Line 1,189:
   
 
* [http://www.umlgraph.org/doc/indexw.html User Manual]
 
* [http://www.umlgraph.org/doc/indexw.html User Manual]
* [http://www.umlgraph.org/doc/cd-umldoc.html Javadocs and UML class diagrams with UMLGraphDoc
+
* [http://www.umlgraph.org/doc/cd-umldoc.html Javadocs and UML class diagrams with UMLGraphDoc]
   
 
====Sirius====
 
====Sirius====
Line 265: Line 1,221:
 
* Desc. : a powerful desktop application that can be used to quickly and effectively generate high-quality diagrams.
 
* Desc. : a powerful desktop application that can be used to quickly and effectively generate high-quality diagrams.
 
* License : ?
 
* License : ?
  +
  +
* Palettes
  +
  +
{| class='wikitable'
  +
! Palette !! Description !! Remarks
  +
|-
  +
| [https://support.spinetix.com/wiki/SpinetiX_pallete_for_yEd SpinetiX pallete for yEd] || ||
  +
|-
  +
| [https://github.com/JustDerb/yed-aws-palettes AWS Simple Icons Palettes for yED] || || AWS
  +
|-
  +
| [https://github.com/danger89/yEd_cisco_network_icons Network Topology Icons for yEd] || || Cisco
  +
|-
  +
| [https://github.com/alswl/yed-palettes SVG icons generated from the Font Awesome collection] || || [https://fontawesome.com/ Font Awesome]
  +
|}
   
 
=====Readings=====
 
=====Readings=====
Line 274: Line 1,244:
 
* [https://yed.yworks.com/support/qa/3277/lines-in-charts-overlapping lines in charts overlapping] (Sep 19, 2013)
 
* [https://yed.yworks.com/support/qa/3277/lines-in-charts-overlapping lines in charts overlapping] (Sep 19, 2013)
 
** <tt>["File" > "Preferences" > "Display" > "Bridge Style", "Bridge Scaling", "Crossing Determination Mode"]</tt>
 
** <tt>["File" > "Preferences" > "Display" > "Bridge Style", "Bridge Scaling", "Crossing Determination Mode"]</tt>
  +
* [https://yed.yworks.com/support/qa/186/how-wrap-text-node-order-prevent-the-graph-becoming-too-wide How can I wrap the text in one node, in order to prevent the graph becoming too wide?] (Oct 28, 2011)
  +
** <tt>Size</tt>: <tt>Fit Node Size</tt>, <tt>Configuration</tt>: <tt>Cropping</tt>
   
=====Palletes=====
+
====Mermaid====
   
  +
* https://mermaid-js.github.io/mermaid/
* [https://support.spinetix.com/wiki/SpinetiX_pallete_for_yEd SpinetiX pallete for yEd]
 
  +
* Desc. : a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams.
* [https://github.com/JustDerb/yed-aws-palettes AWS Simple Icons Palettes for yED]
 
  +
* License : MIT license
* [https://github.com/danger89/yEd_cisco_network_icons Network Topology Icons for yEd] (for Cisco)
 
  +
* Sources : https://github.com/mermaid-js/mermaid
  +
  +
{| class='wikitable'
  +
! Diagram !! Element !! Description !! Remarks
  +
|-
  +
| [http://mermaid.js.org/syntax/sequenceDiagram.html Sequence Diagram]
  +
| <code>sequenceDiagram</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/zenuml.html ZenUML Sequence Diagram]
  +
| <code>zenuml</code> || sequence diagrams with ZenUML || [https://zenuml.com/ ZenUML]
  +
|-
  +
| [http://mermaid.js.org/syntax/classDiagram.html Class Diagram]
  +
| <code>classDiagram</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/stateDiagram.html State Diagram]
  +
| <code>stateDiagram-v2</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/entityRelationshipDiagram.html ERD]
  +
| <code>erDiagram</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/flowchart.html Flowchart]
  +
| <code>flowchart</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/c4.html C4 Diagram]
  +
| <code>C4Context</code>, <code>C4Container</code>, <code>C4Component</code>, <code>C4Dynamic</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/mindmap.html Mind Map]
  +
| <code>mindmap</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/gantt.html Gantt Chart]
  +
| <code>gantt</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/timeline.html Timeline]
  +
| <code>timeline</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/quadrantChart.html Quadrant Chart​]
  +
| <code>quadrantChart</code> || ||
  +
|-
  +
| [http://mermaid.js.org/syntax/pie.html Pie Chart]
  +
| <code>pie</code> || ||
  +
|}
  +
  +
====ZenUML====
  +
  +
* https://zenuml.com/
  +
* Desc. : a multi-platform diagram-as-code solution for sequence diagrams, flow chart and more
  +
  +
* [https://zenuml.atlassian.net/wiki/spaces/Doc/overview ZenUML Docs]
  +
  +
====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
  +
  +
* [https://docs.kroki.io/kroki/ Kroki Documentation]
  +
* [https://kroki.io/examples.html Kroki Examples]
  +
  +
----
   
 
===Data Modeling===
 
===Data Modeling===
  +
  +
====DBML====
  +
  +
* https://dbml.dbdiagram.io/home/
  +
* Desc. : DBML (Database Markup Language) is an open-source DSL language designed to define and document database schemas and structures.
  +
* License : Apache 2.0
  +
* Sources : https://github.com/holistics/dbml
  +
  +
* [https://dbml.dbdiagram.io/docs/ DBML - Full Syntax Docs]
   
 
====SQL Developer Data Modeler====
 
====SQL Developer Data Modeler====
Line 291: Line 1,332:
 
=====References=====
 
=====References=====
   
* [https://docs.oracle.com/cd/E18464_01/doc.30/e15802/toc.htm SQL Developer Data Modeler User's Guide]
+
* [https://docs.oracle.com/en/database/oracle/sql-developer-data-modeler/19.4/dmdug/ Oracle SQL Developer Data Modeler 19.4 User's Guide]
  +
* [https://docs.oracle.com/cd/E18464_01/doc.30/e15802/toc.htm Oracle SQL Developer Data Modeler User's Guide]
   
 
* Features supported or not supported
 
* Features supported or not supported
Line 315: Line 1,357:
   
 
* <tt>datamodeler/bin/datamodeler.conf</tt>
 
* <tt>datamodeler/bin/datamodeler.conf</tt>
<syntaxhighlight lang='text' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='text' enclose='div'>
 
#SetJavaHome ../../jdk
 
#SetJavaHome ../../jdk
 
SetJavaHome C:/lang/jdk1.8
 
SetJavaHome C:/lang/jdk1.8
Line 321: Line 1,363:
   
 
* <tt>ide/bin/ide.conf</tt>
 
* <tt>ide/bin/ide.conf</tt>
<syntaxhighlight lang='text' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='text' enclose='div'>
 
AddVMOption -Duser.language=en
 
AddVMOption -Duser.language=en
 
AddVMOption -Duser.country=US
 
AddVMOption -Duser.country=US
Line 330: Line 1,372:
   
 
* [https://gist.github.com/3rdstage/af8c4992f22fb38ebce264bb4988fd57 Optimized project configuration (<tt>dl_settings.xml</tt>)]
 
* [https://gist.github.com/3rdstage/af8c4992f22fb38ebce264bb4988fd57 Optimized project configuration (<tt>dl_settings.xml</tt>)]
** <nowiki><script src="https://gist.github.com/3rdstage/af8c4992f22fb38ebce264bb4988fd57.js"></script></nowiki>
 
   
 
=====Readings=====
 
=====Readings=====
Line 338: Line 1,379:
 
* [http://www.thatjeffsmith.com/archive/2013/01/configuring-display-of-model-relationships-in-oracle-sql-developer-data-modeler/ Configuring Display of Model Relationships in Oracle SQL Developer Data Modeler] (January 31, 2013)
 
* [http://www.thatjeffsmith.com/archive/2013/01/configuring-display-of-model-relationships-in-oracle-sql-developer-data-modeler/ Configuring Display of Model Relationships in Oracle SQL Developer Data Modeler] (January 31, 2013)
 
** font, color, ...
 
** font, color, ...
  +
* [https://docs.oracle.com/en/database/oracle/sql-developer-data-modeler/19.4/dmdug/data-modeler-concepts-usage.html#GUID-1DA214F8-3DFC-412A-8E82-4E1883B93F3F Arcs]
  +
* [https://helifromfinland.blog/2016/05/10/defining-constraints-for-a-domain/ Defining constraints for a Domain]
  +
** <tt>%column% is NOT NULL</tt>
   
 
====SQL Power Architect====
 
====SQL Power Architect====
Line 346: Line 1,390:
   
 
* Features supported or not supported
 
* Features supported or not supported
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Feature !! Supporting !! Remarks
 
! Feature !! Supporting !! Remarks
 
|-
 
|-
Line 355: Line 1,399:
 
| Defining FK from AK || No ||
 
| Defining FK from AK || No ||
 
|}
 
|}
  +
  +
====DbSchema====
  +
  +
* https://dbschema.com/
  +
* Desc. : a diagram-oriented database designer, with integrated query and data tools.
  +
* License : [https://dbschema.com/editions.html Free for Community Edition, Commercial for Pro Edition]
  +
  +
=====References=====
  +
  +
* [https://dbschema.com/features.html DbSchema Features]
  +
** Logical Design, Physical Design, Database Connectivity, Reverse Engineering, Schema Sync, ...
  +
* [https://dbschema.com/documentation/schema.html Design Database Schema] : Tables, Columns, Indexes, Foreign Keys, Constraints, Views, Sequences
  +
  +
* [https://dbschema.com/documentation/schema.html#table Diagram Symbols]
  +
{| class='wikitable'
  +
! Property !! Symbol !! Description !! Remarks
  +
|-
  +
| Primary Key || Key || ||
  +
|-
  +
| Foreign Key || Outgoing Arrow || ||
  +
|-
  +
| Referenced Column || Incoming Arrow || ||
  +
|-
  +
| Mandatory Column || Double Quotation Mark (<code>"</code>) || ||
  +
|-
  +
| Indexed Column || Magnifier || ||
  +
|}
  +
  +
=====Readings=====
  +
  +
* [https://dbschema.com/documentation/tutorial.html#edit-schema Step-by-Step Tutorials]
  +
* [https://dbschema.com/2023/05/12/postgres/create-table/ DbSchema / PostgreSQL / How to create a table]
  +
  +
----
   
 
===Text Editor===
 
===Text Editor===
Line 368: Line 1,446:
 
=====Commands=====
 
=====Commands=====
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Category !! Command !! Description !! Remarks
 
! Category !! Command !! Description !! Remarks
 
|-
 
|-
| Movement || <tt>G</tt> || Move to the last line ||
+
| Movement || <code>h</code> || Move cursor '''left''' one character ||
 
|-
 
|-
| || <tt>gg</tt> || Move to the first line ||
+
| || <code>j</code> || Move cursor '''down''' one line ||
 
|-
 
|-
| || <tt><i>n</i>G</tt> || Move to the <tt><i>n</i></tt>th line ||
+
| || <code>k</code> || Move cursor '''up''' one line ||
 
|-
 
|-
| Deleting || <tt>x</tt> || Delete single character under cursor ||
+
| || <code>l</code> || Move cursor '''right''' one character ||
 
|-
 
|-
| || <tt>dd</tt> || Delete current line ||
+
| || <code>0</code> || Move cursor to the '''start''' of current line || Zero
 
|-
 
|-
  +
| || <code>^</code> || Move cursor to '''first non-whitespace''' character ||
| || <tt><i>n</i>dd</tt> || Delete the next <tt><i>n</i></tt> lines, including the current line ||
 
 
|-
 
|-
| || <tt>D</tt> || Delete the remainder of the line, starting with current cursor position
+
| || <code>$</code> || Move cursor to the '''end''' of current line ||
 
|-
 
|-
| Copy/Paste || <tt>yy</tt> || Yank current line into the buffer ||
+
| || <code>b</code> || Move cursor to the '''start''' of current or preceding word ||
 
|-
 
|-
| || <tt><i>n</i>yy</tt> || Yank the next <tt><i>n</i></tt> lines, including the current line into the buffer ||
+
| || <code>w</code> || Move cursor to the '''start''' of next word ||
 
|-
 
|-
| || <tt>p</tt> || Paste the line(s) in the buffer into the text after the current line ||
+
| || <code>gg</code> || Move to the '''first line''' ||
 
|-
 
|-
| Misc || <tt>u</tt> || Undo your last action ||
+
| || <code>G</code> || Move to the '''last line''' ||
  +
|-
  +
| || <code><i>n</i>G</code> || Move to the <tt><i>n</i></tt>th line ||
  +
|-
  +
| Deleting || <code>x</code> || Delete single character under cursor ||
  +
|-
  +
| || <code>dd</code> || Delete current line ||
  +
|-
  +
| || <code><i>n</i>dd</code> || Delete the next <tt><i>n</i></tt> lines, including the current line ||
  +
|-
  +
| || <code>D</code> || Delete the remainder of the line, starting with current cursor position
  +
|-
  +
| Copy/Paste || <code>yy</code> || Yank current line into the buffer ||
  +
|-
  +
| || <code><i>n</i>yy</code> || Yank the next <tt><i>n</i></tt> lines, including the current line into the buffer ||
  +
|-
  +
| || <code>p</code> || Paste the line(s) in the buffer into the text after the current line ||
  +
|-
  +
| Misc || <code>u</code> || Undo your last action ||
 
|}
 
|}
   
Line 398: Line 1,494:
 
* [http://glaciated.org/vi/#ex <i>ex</i> Commands]
 
* [http://glaciated.org/vi/#ex <i>ex</i> Commands]
   
<syntaxhighlight lang='text' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='text' enclose='div'>
 
: addr command
 
: addr command
   
Line 425: Line 1,521:
 
</syntaxhighlight>
 
</syntaxhighlight>
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Command !! Description !! Remarks
 
! Command !! Description !! Remarks
 
|-
 
|-
Line 434: Line 1,530:
 
| <tt>:set nu</tt> || Display line numbers ||
 
| <tt>:set nu</tt> || Display line numbers ||
 
|}
 
|}
  +
  +
=====Tips and Trics=====
  +
  +
======Simple Configuration======
  +
  +
* <tt>~/_vimrc</tt>
  +
  +
<syntaxhighlight lang='vim' enclose='div'>
  +
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
  +
</syntaxhighlight>
   
 
====jEdit====
 
====jEdit====
Line 440: Line 1,560:
 
* Desc. : a mature programmer's text editor with hundreds (counting the time developing plugins) of person-years of development behind it
 
* 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
 
* License : GPL 2.0
  +
  +
----
   
 
===Documentation===
 
===Documentation===
Line 455: Line 1,577:
 
** https://mvnrepository.com/artifact/io.swagger.core.v3
 
** https://mvnrepository.com/artifact/io.swagger.core.v3
 
** https://mvnrepository.com/artifact/io.swagger.codegen.v3
 
** https://mvnrepository.com/artifact/io.swagger.codegen.v3
  +
  +
* [https://editor.swagger.io Online Swagger Editor]
   
 
{| class='wikitable'
 
{| class='wikitable'
Line 480: Line 1,604:
 
* [https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Annotations Swagger 2.x Annotations]
 
* [https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Annotations Swagger 2.x Annotations]
 
* [https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X Swagger 1.5.x Annotations]
 
* [https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X Swagger 1.5.x Annotations]
  +
  +
* [https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/ Swagger UI Configuration]
   
 
======API======
 
======API======
   
* [https://www.javadoc.io/doc/io.swagger/swagger-core/ Swagger-Core API]
+
* [https://javadoc.io/doc/io.swagger.core.v3/swagger-models/2.1.12/index.html Swagger-Model v2.1.12 API]
  +
* [http://docs.swagger.io/swagger-core/v2.1.1/apidocs/ Swagger-Annotations 2.1.1 API]
 
* [https://www.javadoc.io/doc/io.swagger/swagger-codegen Swagger-CodeGen API]
+
* [https://docs.swagger.io/swagger-core/v2.2.8/apidocs/ Swagger-Annotations v2.2.8 API]
  +
* [https://docs.swagger.io/swagger-core/v2.1.12/apidocs/ Swagger-Annotations v2.1.12 API]
  +
** [https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Annotations#quick-annotation-overview Quick Annotation Overview]
  +
  +
* [https://javadoc.io/doc/io.swagger.core.v3/swagger-core/2.1.12/index.html Swagger-Core v2.1.12 API]
  +
  +
{| class='wikitable'
  +
! Annotation !! Description !! Elements !! Remarks
  +
|-
  +
| [https://docs.swagger.io/swagger-core/v2.1.12/apidocs/io/swagger/v3/oas/annotations/Operation.html <code>@Operation</code>]
  +
| Used to define a resource method as an OpenAPI Operation, and/or to define additional properties for the Operation. || ||
  +
|-
  +
| [https://docs.swagger.io/swagger-core/v2.1.12/apidocs/index.html?io/swagger/v3/oas/annotations/Parameter.html <code>@Parameter</code>]
  +
| 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 (<code>@PathParam</code>, <code>@QueryParam</code>, <code>@HeaderParam</code>, <code>@FormParam</code> and <code>@BeanParam</code>)
  +
|-
  +
| [https://docs.swagger.io/swagger-core/v2.1.12/apidocs/io/swagger/v3/oas/annotations/parameters/RequestBody.html <code>@RequestBody</code>]
  +
| 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.
  +
| || <code>@Content</code>
  +
|-
  +
| [https://docs.swagger.io/swagger-core/v2.1.12/apidocs/io/swagger/v3/oas/annotations/responses/ApiResponse.html <code>@ApiResponse</code>]
  +
| Used at method level or as field of Operation to define one or more responses of the Operation. || || <code>@Content</code>
  +
|-
  +
| [https://docs.swagger.io/swagger-core/v2.1.12/apidocs/io/swagger/v3/oas/annotations/media/Content.html <code>@Content</code>]
  +
| Used to define the content/media type of a parameter, request or response.
  +
| || <code>@Parameter.content</code>, <code>@RequestBody.content</code>, <code>@ApiResponse.content</code>
  +
|-
  +
| [https://docs.swagger.io/swagger-core/v2.2.20/apidocs/io/swagger/v3/oas/annotations/media/Schema.html '''<code>@Schema</code>''']
  +
| used to define a Schema for a set of elements of the OpenAPI spec, and/or to define additional properties for the schema.
  +
| <code>hidden</code>, <code>example</code>, <code>examples</code>, <code>exampleClasses</code>
  +
| <code>@Parameter.schema</code>, <code>@Content.schema</code>
  +
|}
   
 
* [http://docs.swagger.io/swagger-core/v1.5.X/apidocs/ Swagger-Annotations 1.5 API]
 
* [http://docs.swagger.io/swagger-core/v1.5.X/apidocs/ Swagger-Annotations 1.5 API]
Line 499: Line 1,656:
 
|}
 
|}
   
======CodeGen======
+
======Codegen======
  +
  +
* [https://swagger.io/docs/open-source-tools/swagger-codegen/ Swagger Codegen Documentation]
   
 
* '''3.x'''
 
* '''3.x'''
Line 518: Line 1,677:
 
* [http://stackoverflow.com/questions/32340735/using-javadocs-to-generate-swagger-document Using Javadocs to generate Swagger document]
 
* [http://stackoverflow.com/questions/32340735/using-javadocs-to-generate-swagger-document Using Javadocs to generate Swagger document]
 
* [https://jakubstas.com/spring-jersey-swagger-fine-tuning-exposed-documentation/ Spring Rest API with Swagger – Fine-tuning exposed documentation] (23.11.2014)
 
* [https://jakubstas.com/spring-jersey-swagger-fine-tuning-exposed-documentation/ Spring Rest API with Swagger – Fine-tuning exposed documentation] (23.11.2014)
  +
* [https://stackoverflow.com/questions/51826241/order-of-properties-in-swagger-definitions-changes-from-run-to-run Order of properties in swagger definitions changes from run to run] (Aug 13, 2018)
 
  +
** <code>@JsonPropertyOrder</code>
=====Examples=====
 
   
 
* [https://github.com/swagger-api/swagger-samples/tree/master/java/java-spring-boot Swagger + SpringFox + SpringBoot example]
 
* [https://github.com/swagger-api/swagger-samples/tree/master/java/java-spring-boot Swagger + SpringFox + SpringBoot example]
  +
  +
=====Typical Samples=====
  +
  +
======Callback======
  +
  +
* Operation part
  +
<syntaxhighlight lang='java' enclose='div' highlight='7-16'>
  +
@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){
  +
...
  +
}
  +
</syntaxhighlight>
  +
  +
* Callback request body schema (<tt>foo.bar.AssetCreatedMessage</tt>) part
  +
<syntaxhighlight lang='java' enclose='div'>
  +
@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;
  +
}
  +
</syntaxhighlight>
   
 
====Swagger2Markup====
 
====Swagger2Markup====
Line 557: Line 1,760:
   
 
=====Readings=====
 
=====Readings=====
  +
  +
* [https://www.vojtechruzicka.com/documenting-spring-boot-rest-api-swagger-springfox/ '''Documenting Spring Boot REST API with Swagger and SpringFox''']
  +
** basic dependency : <tt>io.springfox:springfox-swagger2:2.9.2</tt>
  +
** adding UI including <tt>swagger-ui.html</tt> : <tt>io.springfox:springfox-swagger-ui:2.9.2</tt>
  +
** adding JSR-303 support : <tt>io.springfox:springfox-bean-validators:2.9.2</tt>, <tt>@Import(BeanValidatorPluginsConfiguration.class)</tt>
   
 
* [https://indrabasak.wordpress.com/2016/04/07/swagger-2-integration-with-spring-rest/ SWAGGER 2 INTEGRATION WITH SPRING REST] (April 7, 2016)
 
* [https://indrabasak.wordpress.com/2016/04/07/swagger-2-integration-with-spring-rest/ SWAGGER 2 INTEGRATION WITH SPRING REST] (April 7, 2016)
 
* [https://github.com/springfox/springfox/issues/1231 JSR-303 support: @NotNull ignored when @ApiModelProperty is present] (21 Mar 2016)
 
* [https://github.com/springfox/springfox/issues/1231 JSR-303 support: @NotNull ignored when @ApiModelProperty is present] (21 Mar 2016)
 
** Spring annotations (@RequestMapping, @RequestParam) -> JSR-303 plugins (@NotNull) -> Swagger annotations (@ApiModelProperty)
 
** Spring annotations (@RequestMapping, @RequestParam) -> JSR-303 plugins (@NotNull) -> Swagger annotations (@ApiModelProperty)
  +
  +
* [https://github.com/springfox/springfox/issues/3024 Missing Support for new Annotations from Bean Validation API 2.0](13 Jun 2019)
   
 
=====Samples=====
 
=====Samples=====
Line 568: Line 1,778:
 
====springdoc-openapi====
 
====springdoc-openapi====
   
* https://springdoc.github.io/springdoc-openapi-demos/
+
* https://springdoc.org/
 
* Desc. : Library for OpenAPI 3 with spring-boot
 
* Desc. : Library for OpenAPI 3 with spring-boot
 
* License :
 
* License :
 
* Sources : https://github.com/springdoc/springdoc-openapi
 
* Sources : https://github.com/springdoc/springdoc-openapi
  +
  +
=====Readings=====
  +
  +
* [https://springdoc.org/#properties Properties]
  +
{| class='wikitable'
  +
! Property !! Description !! Default !! Remarks
  +
|-
  +
| style='white-space:nowrap' | <code>springdoc.api-docs.resolve-schema-properties</code>
  +
| To enable property resolver on <code>@Schema</code> (name, title and description). || <code>false</code> ||
  +
|-
  +
| <code>springdoc.model-converters.sort-converter.enabled</code>
  +
| To disable Sort converter || <code>true</code> ||
  +
|-
  +
| <code>springdoc.writer-with-order-by-keys</code>
  +
| Enable a deterministic/alphabetical ordering ||<code>false</code>
  +
|-
  +
| <code>springdoc.writer-with-default-pretty-printer</code>
  +
| To enable pretty print of the OpenApi specification.|| <code>false</code> ||
  +
|-
  +
| <code>springdoc.swagger-ui.showCommonExtensions</code>
  +
| Controls the display of extensions (<code>pattern</code>, <code>maxLength</code>, <code>minLength</code>, <code>maximum</code>, <code>minimum</code>) fields and values for Parameters. || ||
  +
|-
  +
| <code>springdoc.swagger-ui.operationsSorter</code>
  +
| Apply a sort to the operation list of each API ||
  +
| [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort <code>Array.prototype.sort()</code>]
  +
|-
  +
| <code>springdoc.swagger-ui.tagsSorter</code>
  +
| Apply a sort to the tag list of each API || ||
  +
|}
  +
  +
* Typical configuration
  +
<syntaxhighlight lang='yaml' enclose='div'>
  +
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
  +
</syntaxhighlight>
   
 
====OpenAPI Generator====
 
====OpenAPI Generator====
Line 593: Line 1,848:
 
* Written in : JavaScript
 
* Written in : JavaScript
 
* Sources : https://github.com/Redocly/redoc
 
* Sources : https://github.com/Redocly/redoc
  +
* Packages : https://www.npmjs.com/package/redoc-cli
   
=====Readings=====
+
=====Configuration=====
  +
  +
* [https://redocly.com/docs/cli/configuration/ Configuration file] : <code>redocly.yaml</code>, <code>.redocly.yaml</code>
  +
* [https://redoc.ly/docs/api-reference-docs/configuration/ Configuration options for API docs] : <code>theme.openapi</code> schema
  +
* [https://redocly.com/docs/api-reference-docs/configuration/theming/ Theming options for API docs] : <code>theme.openapi.theme</code> schema
  +
  +
{| class='wikitable'
  +
! Scheme !! Item !! Type !! Default !! Description !! Remarks
  +
|-
  +
| <code>theme.openapi</code> || <code>expandDefaultResponse</code> || boolean ||
  +
| Enables or disables expanding default response content panel ||
  +
|-
  +
| || <code>expandDefaultRequest</code> || boolean || || ||
  +
|-
  +
| || <code>expandResponses</code> || string || || ||
  +
|}
  +
  +
=====CLI=====
   
  +
* [https://redoc.ly/docs/redoc/quickstart/cli/ Using the Redoc CLI]
 
* [https://github.com/Redocly/redoc/tree/master/cli ReDoc CLI]
 
* [https://github.com/Redocly/redoc/tree/master/cli ReDoc CLI]
   
  +
{| class='wikitable'
====Enunciate====
 
  +
! Command !! Syntax !! Description !! Options !! Remarks
  +
|-
  +
| [https://redocly.com/docs/cli/commands/build-docs/ <code>build-docs</code>]
  +
| <code>redocly build-docs <i>api</i> <i>option1</i> <i>option2</i> ...</code>
  +
| builds Redoc into an HTML file.
  +
| <code>--config</code>, <code>--disableGoogleFont</code>, <code>--output</code>(<code>-o</code>), <code>--title</code> ||
  +
|}
   
  +
=====Typical Usages=====
* http://enunciate.webcohesion.com/
 
  +
* Desc. : an engine for enhancing your Java Web service API
 
  +
* Running ReDoc server.
  +
  +
<syntaxhighlight lang='bash' enclose='div'>
  +
$ redoc-cli serve ./api-spec.json --port 8088
  +
</syntaxhighlight>
  +
  +
* Minimal configuration file
  +
  +
<syntaxhighlight lang='yaml' enclose='div'>
  +
features.openapi:
  +
expandDefaultServerVariables: true
  +
expandDefaultRequest: true
  +
expandDefaultResponse: true
  +
expandSingleSchemaField: true
  +
expandResponses: '200'
  +
schemaExpansionLevel: 3
  +
sortTagsAlphabetically: true
  +
</syntaxhighlight>
   
 
====Doxygen====
 
====Doxygen====
Line 622: Line 1,921:
 
* Desc. :Python documentation generator
 
* Desc. :Python documentation generator
 
* License : BSD license
 
* License : BSD license
  +
  +
=====References=====
  +
  +
* [https://www.sphinx-doc.org/en/master/index.html Sphinx Documentation]
  +
* [https://github.com/yoloseem/awesome-sphinxdoc Awesome Sphinx]
  +
  +
=====CLI=====
  +
  +
* [https://www.sphinx-doc.org/en/master/man/index.html Command-Line Tools]
  +
  +
{| class='wikitable'
  +
! Command !! Syntax !! Description !! Remarks
  +
|-
  +
| [https://www.sphinx-doc.org/en/master/man/sphinx-build.html <code>sphinx-build</code>]
  +
| <code>sphinx-build [''options''] ''sourcedir'' ''outputdir'' [''filename'' …]</code>
  +
| Generates documentation from the files in <code>''sourcedir''</code> and places it in the <code>''outputdir''</code> ||
  +
|-
  +
| [https://www.sphinx-doc.org/en/master/man/sphinx-quickstart.html <code>sphinx-quickstart</code>]
  +
| <code>sphinx-quickstart</code>
  +
| An interactive tool that asks some questions about your project and then generates a complete documentation directory and sample Makefile to be used with <code>sphinx-build</code> ||
  +
|}
  +
  +
=====Extensions=====
  +
  +
{| class='wikitable'
  +
! Extension !! Description !! Remarks
  +
|-
  +
| [https://github.com/sphinx-contrib/openapi <code>sphinxcontrib-openapi</code>]
  +
| a Sphinx extension to generate APIs docs from OpenAPI (fka Swagger) spec. ||
  +
|-
  +
| [https://github.com/cag/sphinxcontrib-soliditydomain <code>Solidity Domain for Sphinx</code>]
  +
| ||
  +
|}
   
 
====Pandoc====
 
====Pandoc====
Line 633: Line 1,965:
 
** [http://pandoc.org/installing.html Installing pandoc]
 
** [http://pandoc.org/installing.html Installing pandoc]
 
** [http://pandoc.org/MANUAL.html Pandoc User’s Guide]
 
** [http://pandoc.org/MANUAL.html Pandoc User’s Guide]
  +
  +
====Asciidoctor====
  +
  +
* https://asciidoctor.org/
  +
* Desc. : A fast text processor & publishing toolchain for converting AsciiDoc to HTML5, DocBook & more.
   
 
====jax-doclets====
 
====jax-doclets====
Line 665: Line 2,002:
 
* Desc. : REST API documentation generator for Java that generates beautiful interactive documentation with minimal configuration effort.
 
* Desc. : REST API documentation generator for Java that generates beautiful interactive documentation with minimal configuration effort.
 
* License : complex -> http://www.miredot.com/price/
 
* License : complex -> http://www.miredot.com/price/
  +
  +
----
   
 
===Publication===
 
===Publication===
   
  +
* [https://github.com/TalAter/awesome-book-authoring Awesome Book Authoring]
  +
* [https://github.com/michaelravedoni/jekyll-book-framework A jekyll framework for publishing book in multiple format (HTML, PDF, epub)]
  +
* [https://github.com/wikiti/pandoc-book-template Pandoc book template]
 
* [https://tex.stackexchange.com/questions/120271/alternatives-to-latex Alternatives to LaTeX](Jun 20 '13)
 
* [https://tex.stackexchange.com/questions/120271/alternatives-to-latex Alternatives to LaTeX](Jun 20 '13)
 
====Scribus====
 
 
* https://www.scribus.net/
 
* Desc. : Open Source Desktop Publishing
 
* Sources : https://github.com/scribusproject/scribus
 
 
====Publican====
 
 
* https://fedorahosted.org/publican/
 
* Desc. :A tool for publishing material authored in DocBook XML.
 
   
 
====Medium====
 
====Medium====
Line 687: Line 2,018:
 
* [https://medium.com/@mesirii/5-tips-for-embedding-tables-in-your-medium-posts-8722f3fc5bf5 5 Tips for Embedding Tables in Your Medium Posts] (Sep 2, 2017)
 
* [https://medium.com/@mesirii/5-tips-for-embedding-tables-in-your-medium-posts-8722f3fc5bf5 5 Tips for Embedding Tables in Your Medium Posts] (Sep 2, 2017)
 
* [https://medium.com/@AntyalT/undocumented-medium-formatting-tricks-c827510c1409 Undocumented Medium Formatting Tricks] (Sep 25, 2017)
 
* [https://medium.com/@AntyalT/undocumented-medium-formatting-tricks-c827510c1409 Undocumented Medium Formatting Tricks] (Sep 25, 2017)
  +
* [https://blog.medium.com/image-links-9e4c14bf9da3 Image Links] (Aug 8, 2014) : <tt>Control + K</tt>, <tt>Command + K</tt>
   
 
{| class='wikitable'
 
{| class='wikitable'
Line 697: Line 2,029:
 
| Equations || [https://embed.fun/ embed.fun]
 
| Equations || [https://embed.fun/ embed.fun]
 
|}
 
|}
  +
  +
====GitBook====
  +
  +
* [https://medium.com/@richdayandnight/simple-tutorial-on-hosting-your-gitbook-documentation-on-github-pages-bonus-with-gitbook-editor-f27f60d5d408 Simple tutorial on hosting your Gitbook documentation on Github pages] (Jun 9, 2020)
  +
  +
* [https://github.com/GitbookIO/gitbook/blob/master/docs/config.md GitBook Configuration] (<code>book.json</code>)
  +
* [https://github.com/GitbookIO/gitbook/tree/3.2.2/docs GitBook v3.2.2 Documentation]
  +
  +
* [https://github.com/GitbookIO/gitbook/blob/3.2.2/docs/templating/variables.md Variables]
  +
  +
=====CLI=====
  +
  +
<syntaxhighlight lang='bash' enclose='div'>
  +
$ 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)
  +
  +
</syntaxhighlight>
  +
  +
=====Plugins=====
  +
  +
{| class='wikitable'
  +
! Plugin !! Description !! Remarks
  +
|-
  +
| [https://github.com/GitbookIO/plugin-hints <code>hints</code>] || Styled hint blocks in your docs ||
  +
|-
  +
| [https://github.com/GitbookIO/plugin-puml <code>puml</code>] || UML Diagrams rendering using PlantUML ||
  +
|-
  +
| [https://github.com/gaearon/gitbook-plugin-prism <code>prism</code>] || 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====
  +
  +
* https://docsify.js.org/
  +
* Desc. : A magical documentation site generator.
  +
* Sources : https://github.com/docsifyjs/docsify/
  +
* License : MIT license
  +
  +
====Scribus====
  +
  +
* https://www.scribus.net/
  +
* Desc. : Open Source Desktop Publishing
  +
* Sources : https://github.com/scribusproject/scribus
  +
  +
====Publican====
  +
  +
* https://fedorahosted.org/publican/
  +
* Desc. :A tool for publishing material authored in DocBook XML.
  +
  +
=====Partner Program=====
  +
  +
* [https://help.medium.com/hc/en-us/articles/360003928833 Setting up payouts with Stripe]
  +
  +
====mdBook====
  +
  +
* https://github.com/rust-lang/mdBook
  +
* Desc. : a utility to create modern online books from Markdown files.
  +
* License :
  +
  +
----
   
 
===SQL Client/Database Management===
 
===SQL Client/Database Management===
Line 704: Line 2,131:
 
* http://www.squirrelsql.org/
 
* 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.
 
* 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====
  +
  +
* https://www.mysql.com/products/workbench/
  +
* Desc. : provides data modeling, SQL development, and comprehensive administration tools for server configuration, user administration, backup, and much more.
  +
  +
* [https://dev.mysql.com/doc/workbench/en/ MySQL Workbench Manual]
  +
  +
* [https://dev.mysql.com/doc/workbench/en/wb-configuring-files.html MySQL Workbench Settings and Log Files]
  +
{| class='wikitable'
  +
! OS !! Location !! Remarks
  +
|-
  +
| Windows || <code>%AppData%\MySQL\Workbench\</code> ||
  +
|-
  +
| macOS || <code>~/Library/Application Support/MySQL/Workbench/</code> ||
  +
|-
  +
| Linux || <code>~/.mysql/workbench/</code> ||
  +
|}
  +
  +
* [https://stackoverflow.com/questions/47991777/how-can-i-change-column-order-through-mysql-workbench How can I change column order through mysql workbench?] (Dec 27 '17) : mouse right-click popup menu
  +
* [https://dataedo.com/kb/tools/mysql-workbench/documentation-generator-plugins 4 database documentation / data dictionary generator plugins for MySQL Workbench] (5th August, 2018)
  +
  +
* [https://stackoverflow.com/questions/10778561/what-do-the-mysql-workbench-column-icons-mean What do the mysql workbench column icons mean] (May 28, 2012)
  +
{| class='wikitable'
  +
! 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====
 
====IBM Data Studio====
Line 730: Line 2,201:
 
* Desc. : Shell-centric cross-platform MongoDB management tool
 
* Desc. : Shell-centric cross-platform MongoDB management tool
   
  +
----
====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
 
   
 
===Software License Analysis===
 
===Software License Analysis===
Line 755: Line 2,222:
 
* Desc. : finds the open source software embedded in applications and installed on computers.
 
* Desc. : finds the open source software embedded in applications and installed on computers.
 
* License : [http://ossdiscovery.sourceforge.net/license.html GNU Affero Public License v3]
 
* License : [http://ossdiscovery.sourceforge.net/license.html GNU Affero Public License v3]
  +
  +
----
   
 
===System Diagnosis/Monitoring===
 
===System Diagnosis/Monitoring===
Line 826: Line 2,295:
 
* https://technet.microsoft.com/en-us/sysinternals/debugview.aspx
 
* https://technet.microsoft.com/en-us/sysinternals/debugview.aspx
 
* Desc. : an application that lets you monitor debug output on your local system, or any computer on the network that you can reach via TCP/IP.
 
* Desc. : an application that lets you monitor debug output on your local system, or any computer on the network that you can reach via TCP/IP.
  +
  +
----
   
 
===Testing===
 
===Testing===
  +
  +
* [https://www.blazemeter.com/blog/open-source-load-testing-tools-which-one-should-you-use Open Source Load Testing Tools: Which One Should You Use?] (Sep 29 2018)
  +
** Grinder, Gatling, Tsung, JMeter, Locust
  +
  +
* Performance Testing Tools
  +
{| class='wikitable'
  +
! Tool !! Description !! Script Support !! License !! Remarks
  +
|-
  +
| JMeter || || Groovy, JSR-223 || ||
  +
|-
  +
| [https://github.com/gatling/gatling Gatling]
  +
| a load test tool officially supporting HTTP, WebSocket, Server-Sent-Events and JMS.
  +
| Java, Kotlin, Scala || Apache 2.0
  +
|-
  +
| [https://github.com/grafana/k6 k6]
  +
| Modern load testing for developers and testers in the DevOps era.
  +
| JavaScript || AGPL-3.0 || Grafana Labs
  +
|-
  +
| [https://github.com/locustio/locust Locust]
  +
| an easy to use, scriptable and scalable performance testing tool.
  +
| Python || MIT
  +
|}
   
 
====JMeter====
 
====JMeter====
Line 841: Line 2,334:
   
 
* [http://jmeter.apache.org/usermanual/component_reference.html Component Reference]
 
* [http://jmeter.apache.org/usermanual/component_reference.html Component Reference]
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Category !! Component !! Description !! Remarks
 
! Category !! Component !! Description !! Remarks
 
|-
 
|-
Line 893: Line 2,386:
 
** [http://jmeter.apache.org/usermanual/functions.html#predefinedvars Pre-defined Variables]
 
** [http://jmeter.apache.org/usermanual/functions.html#predefinedvars Pre-defined Variables]
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Category !! Function !! Description !! Remarks
 
! Category !! Function !! Description !! Remarks
 
|-
 
|-
Line 937: Line 2,430:
   
 
* [https://stackoverflow.com/questions/38015406/is-there-a-way-to-have-jmeter-beautify-json-data-within-the-response-data-tab Is there a way to have jmeter beautify json data within the response data tab?] (Jun 24 '16)
 
* [https://stackoverflow.com/questions/38015406/is-there-a-way-to-have-jmeter-beautify-json-data-within-the-response-data-tab Is there a way to have jmeter beautify json data within the response data tab?] (Jun 24 '16)
  +
  +
* [https://jmeter.apache.org/changes.html#Known%20problems%20and%20workarounds Using JavaScript]
  +
* [https://www.graalvm.org/22.0/reference-manual/js/RunOnJDK/ Run GraalVM JavaScript on a Stock JDK]
  +
* [https://openhab-docs-preview.netlify.app/docs/configuration/jsr223.html JSR223 Scripting]
   
 
=====Plugins=====
 
=====Plugins=====
Line 959: Line 2,456:
 
${__escapeOroRegexpChars(\"cert_hash\":\"${certHash}\")}
 
${__escapeOroRegexpChars(\"cert_hash\":\"${certHash}\")}
 
</syntaxhighlight>
 
</syntaxhighlight>
  +
  +
======Running JMeter with GraalVM and Graal.js======
  +
  +
# [https://www.graalvm.org/22.0/docs/getting-started/#install-graalvm Install GraalVM]
  +
#* Check [https://jmeter.apache.org/changes.html Java versions supported by JMeter] to choose proper version of GraalVM.
  +
# [https://www.graalvm.org/22.0/reference-manual/graalvm-updater/ Install Graal.js using GraalVM Updater]
  +
# Change <code>JAVA_HOME</code> in <code>jmeter</code> command-line
  +
#* The below sample is for MacOS
  +
<syntaxhighlight lang='bash' enclose='div'>
  +
#!/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" "$@"
  +
</syntaxhighlight>
  +
# Check full command-line using <code>ps</code>
  +
<syntaxhighlight lang='bash' enclose='div'>
  +
$ ps auxww | grep jmeter
  +
...
  +
</syntaxhighlight>
  +
  +
====k6====
  +
  +
* https://github.com/grafana/k6
  +
* Modern load testing for developers and testers in the DevOps era.
  +
* License : AGPL-3.0
  +
* Written in : Go
  +
  +
* [https://k6.io/docs/ k6 Documentation]
  +
* [https://k6.io/docs/javascript-api/ k6 API]
  +
* [https://github.com/grafana/awesome-k6 Awesome k6]
  +
  +
=====Command-line=====
  +
  +
{| class='wikitable'
  +
! Command !! Description !! Remarks
  +
|-
  +
| <code>archive</code> || ||
  +
|-
  +
| <code>inspect</code> || ||
  +
|-
  +
| <code>run</code> || ||
  +
|-
  +
| <code>pause</code> || ||
  +
|-
  +
| <code>resume</code> || ||
  +
|-
  +
| <code>scale</code> || ||
  +
|-
  +
| <code>status</code> || ||
  +
|-
  +
| <code>stats</code> || ||
  +
|}
  +
  +
=====Readings=====
  +
  +
* [https://github.com/grafana/k6-template-es6 Template to use ES6 with k6]
  +
** a template repository showing how to use <code>webpack</code>, <code>babel</code> and <code>corejs</code> to bundle a test project dependent on Node modules into a single test script which can be run by k6.
  +
* [https://github.com/grafana/k6-template-typescript Template to use TypeScript with k6]
  +
  +
====Artillery====
  +
  +
* https://github.com/artilleryio/artillery
  +
* a modern open-source performance testing toolkit for SRE and DevOps
  +
  +
* [https://www.artillery.io/docs Artillery Documentationn]
  +
* [https://www.artillery.io/docs/guides/guides/command-line Artillery CLI]
  +
  +
{| class='wikitable'
  +
! Section !! Element !! Description !! Remarks
  +
|-
  +
| [https://www.artillery.io/docs/guides/guides/test-script-reference#config-section <code>config</code>]
  +
| [https://www.artillery.io/docs/guides/guides/test-script-reference#target---target-service <code>target</code>]
  +
| the endpoint of the system under test ||
  +
|-
  +
| || [https://www.artillery.io/docs/guides/guides/test-script-reference#variables---inline-variables <code>variables</code>]
  +
| can define multiple values for a variable and access them randomly in your scenarios. ||
  +
|}
  +
  +
=====Hooks=====
  +
  +
* [https://www.artillery.io/docs/guides/guides/http-reference#writing-custom-logic-in-javascript Writing custom logic in Javascript]
  +
  +
{| class='wikitable'
  +
! Hook !! Description !! Signature !! Remarks
  +
|-
  +
| [https://www.artillery.io/docs/guides/guides/http-reference#function-actions-and-beforescenario--afterscenario-hooks <code>beforeScenario</code>]
  +
| called before a virtual user executes a scenario || ||
  +
|-
  +
| [https://www.artillery.io/docs/guides/guides/http-reference#function-actions-and-beforescenario--afterscenario-hooks <code>afterScenario</code>]
  +
| called after a virtual user executes a scenario || ||
  +
|-
  +
| [https://www.artillery.io/docs/guides/guides/http-reference#beforerequest-hooks <code>beforeRequest</code>]
  +
| called before sending a request || ||
  +
|-
  +
| [https://www.artillery.io/docs/guides/guides/http-reference#afterresponse-hooks <code>afterResponse</code>]
  +
| called after a response has been received || ||
  +
|-
  +
| [https://www.artillery.io/docs/guides/guides/http-reference#function-actions-and-beforescenario--afterscenario-hooks <code>function</code>]
  +
| may be run at any point in a scenario || ||
  +
|}
  +
  +
====Locust====
  +
  +
* https://locust.io/
  +
* an easy to use, scriptable and scalable performance testing tool.
  +
  +
* [https://docs.locust.io/en/stable/ Locust Documentation]
   
 
====ApacheBench====
 
====ApacheBench====
Line 965: Line 2,569:
 
* a single-threaded command line computer program for measuring the performance of HTTP web servers
 
* a single-threaded command line computer program for measuring the performance of HTTP web servers
   
* [https://en.wikipedia.org/wiki/ApacheBench] (on Wikipedia)
+
* [https://en.wikipedia.org/wiki/ApacheBench ApacheBench] (on Wikipedia)
 
* [https://www.tutorialspoint.com/apache_bench/ Apache Bench Tutorial]
 
* [https://www.tutorialspoint.com/apache_bench/ Apache Bench Tutorial]
 
* [https://blog.getpolymorph.com/7-tips-for-heavy-load-testing-with-apache-bench-b1127916b7b6 7 Tips for Heavy Load Testing with Apache Bench] (Sep 7, 2016)
 
* [https://blog.getpolymorph.com/7-tips-for-heavy-load-testing-with-apache-bench-b1127916b7b6 7 Tips for Heavy Load Testing with Apache Bench] (Sep 7, 2016)
Line 1,000: Line 2,604:
 
* https://www.getpostman.com/
 
* https://www.getpostman.com/
 
* Desc. : Build, test, and document your APIs faster.
 
* Desc. : Build, test, and document your APIs faster.
  +
* Sources
  +
** [https://github.com/postmanlabs/postman-sandbox/ <code>postman-sandbox</code>]
  +
** [https://github.com/postmanlabs/postman-collection <code>postman-collection</code>]
   
 
=====References=====
 
=====References=====
Line 1,005: Line 2,612:
 
* [https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables Variables]
 
* [https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables Variables]
 
** Variable Scopes : Global > Collection > Environment > Data > Local
 
** Variable Scopes : Global > Collection > Environment > Data > Local
  +
* [https://learning.postman.com/docs/writing-scripts/script-references/variables-list/ Dynamic Variables]
  +
** <code>$randomInt</code>, <code>$randomCurrencyCode</code>, ...
 
* [https://www.getpostman.com/docs/v6/postman/environments_and_globals/manage_environments Manage environments]
 
* [https://www.getpostman.com/docs/v6/postman/environments_and_globals/manage_environments Manage environments]
 
* [https://www.getpostman.com/docs/environments Setting up an environment with variables]
 
* [https://www.getpostman.com/docs/environments Setting up an environment with variables]
 
* [https://www.getpostman.com/docs/v6/postman/sending_api_requests/generate_code_snippets Generate code snippets]
 
* [https://www.getpostman.com/docs/v6/postman/sending_api_requests/generate_code_snippets Generate code snippets]
  +
  +
=====Scripting=====
  +
  +
* [https://www.getpostman.com/docs/v6/postman/scripts/intro_to_scripts Intro to scripts]
  +
* [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/ Postman JavaScript reference]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-global-variables-in-scripts <code>pm.globals</code>]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-environment-variables-in-scripts <code>pm.environment</code>]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#using-collection-variables-in-scripts <code>pm.collectionVariables</code>]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#scripting-with-request-data <code>pm.request</code>]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#scripting-with-response-data <code>pm.response</code>]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#scripting-with-request-info <code>pm.info</code>]
  +
** [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#scripting-with-request-cookies <code>pm.cookies</code>]
  +
  +
* [https://learning.postman.com/docs/sending-requests/grpc/postman-sandbox-api/ Postman Sandbox API]
  +
* [https://www.postmanlabs.com/postman-collection/index.html Postman Collection SDK API]
  +
  +
* [https://www.getpostman.com/docs/pre_request_scripts Pre Request Scripts]
  +
* [https://blog.getpostman.com/2014/01/27/extracting-data-from-responses-and-chaining-requests/ Extracting data from responses and chaining requests] (27 Jan, 2014)
  +
  +
======<code>pm</code> Object======
  +
  +
* [https://learning.postman.com/docs/sending-requests/grpc/postman-sandbox-api/ Postman Sandbox API]
  +
  +
{| class='wikitable'
  +
! Property/Function !! Data-type !! Description !! Members !! Remarks
  +
|-
  +
| <code>pm.variables</code> || <code>Object</code>
  +
| Accessing variables at different scopes and setting local variables. || ||
  +
|-
  +
| <code>pm.variables.get(<i>key</i>: String)</code> ||
  +
| Access a variable at any scope including local || ||
  +
|-
  +
| <code>pm.variables.set(<i>key</i>: String, <i>value</i>)</code> ||
  +
| Use to define a '''local''' variable. || ||
  +
|-
  +
| <code>pm.environment</code> || <code>Object</code>
  +
| Access and manipulate variables in the active (currently selected) environment. || ||
  +
|-
  +
| <code>pm.collectionVariables</code> || <code>Object</code>
  +
| Access and manipulate variables in the collection. || ||
  +
|-
  +
| <code>pm.global</code> || <code>Object</code>
  +
| Access and manipulate variables at global scope within the workspace. || ||
  +
|-
  +
| <code>pm.request.url</code> || [https://nodejs.org/api/url.html#legacy-urlobject <code>Url</code>] || || ||
  +
|-
  +
| <code>pm.request.url.query.get(<i>param</i>:String)</code> || || || ||
  +
|-
  +
| <code>pm.request.url.path[<i>index</i>]</code> || || || || 0-based index
  +
|-
  +
| <code>pm.request.method</code> || <code>String</code> || || ||
  +
|-
  +
| <code>pm.request.headers</code> || <code>HeaderList</code> || || ||
  +
|-
  +
| <code>pm.request.body</code> || <code>RequestBody</code> || || ||
  +
|-
  +
| <code>pm.response.code</code> || <code>Number</code> || HTTP response status code || ||
  +
|-
  +
| <code>pm.response.status</code> || <code>String</code> || HTTP response status text || ||
  +
|-
  +
| <code>pm.response.headers</code> || <code>HeaderList</code> || HTTP response status code || ||
  +
|-
  +
| <code>pm.response.text()</code> || <code>String</code> || response body as a plain text || ||
  +
|-
  +
| <code>pm.response.json()</code> || <code>Object</code> || response body as a JSON object || ||
  +
|-
  +
| <code>pm.cookies</code> || <code>Object</code> || || ||
  +
|-
  +
| <code>pm.info</code> || <code>Object</code>
  +
| Provides data related to the request and the script itself, including name, request ID, and iteration count. || ||
  +
|-
  +
| style='white-space:nowrap' | <code>pm.test(<i>name</i>:String, <i>criteria</i>:Function)</code> || || || ||
  +
|-
  +
| [https://learning.postman.com/docs/writing-scripts/script-references/postman-sandbox-api-reference/#sending-requests-from-scripts <code>pm.sendRequest(<i>url</i>:String, <i>handler</i>:Function)</code>] ||
  +
| Send a request asynchronously from a Pre-request or Test script. || ||
  +
|-
  +
| <code>pm.expect(assertions)</code> || || || || [https://www.chaijs.com/api/bdd/ Chai Assertion BDD]
  +
|}
  +
  +
======Postman Collection SDK======
  +
  +
* [https://www.postmanlabs.com/postman-collection/index.html Postman Collection SDK API]
  +
  +
{| class='wikitable'
  +
! Class !! Description !! Members !! Remarks
  +
|-
  +
| [https://www.postmanlabs.com/postman-collection/Request.html <code>Request</code>]
  +
| A Postman HTTP request object || ||
  +
|-
  +
| [https://www.postmanlabs.com/postman-collection/Response.html <code>Response</code>]
  +
| Holds data related to the request body.
  +
| <code>code: Number</code>, <code>status: String</code>, <code>body: String</code>, <code>json(): Object</code> ||
  +
|}
  +
  +
======Sources======
  +
  +
{| class='wikitable'
  +
! Module/Class !! Description !! Remarks
  +
|-
  +
| [https://github.com/postmanlabs/postman-sandbox/blob/develop/types/index.d.ts#L69 <code>class Postman</code>] || ||
  +
|-
  +
| [https://github.com/postmanlabs/postman-sandbox/blob/develop/types/sandbox/test.d.ts#L17 <code>class Postman</code>] || ||
  +
|-
  +
| [https://github.com/postmanlabs/postman-sandbox/blob/develop/types/sandbox/test.d.ts#L9 <code>interface PostmanLegacy</code>] || ||
  +
|-
  +
| [https://github.com/postmanlabs/postman-collection/blob/develop/lib/collection/request.js <code>Request</code>] || ||
  +
|-
  +
| [https://github.com/postmanlabs/postman-collection/blob/develop/lib/collection/response.js <code>Response</code>] || ||
  +
|}
   
 
=====Readings=====
 
=====Readings=====
Line 1,016: Line 2,734:
 
* [https://stackoverflow.com/questions/47806876/could-not-get-any-response-response-when-using-postman-with-subdomain “Could not get any response” response when using postman with subdomain] (Dec 14 '17)
 
* [https://stackoverflow.com/questions/47806876/could-not-get-any-response-response-when-using-postman-with-subdomain “Could not get any response” response when using postman with subdomain] (Dec 14 '17)
 
* [http://blog.getpostman.com/2016/08/26/the-postman-console/ The Postman Console] (26 Aug, 2016)
 
* [http://blog.getpostman.com/2016/08/26/the-postman-console/ The Postman Console] (26 Aug, 2016)
 
======Scripting======
 
 
* [https://www.getpostman.com/docs/v6/postman/scripts/intro_to_scripts Intro to scripts]
 
* [https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox Postman Sandbox]
 
* [https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox_api_reference Postman Sandbox API reference]
 
* [https://www.getpostman.com/docs/pre_request_scripts Pre Request Scripts]
 
* [https://blog.getpostman.com/2014/01/27/extracting-data-from-responses-and-chaining-requests/ Extracting data from responses and chaining requests] (27 Jan, 2014)
 
   
 
=====Sample Scripts=====
 
=====Sample Scripts=====
   
======Using script scope variables and defining conditional test function======
+
* Using script scope variables and defining conditional test function
   
<syntaxhighlight lang='javascript'>
+
<syntaxhighlight lang='javascript' enclose='div'>
 
// https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox_api_reference
 
// https://www.getpostman.com/docs/v6/postman/scripts/postman_sandbox_api_reference
  +
// https://www.chaijs.com/api/bdd/
   
var payload = pm.response.json();
+
let payload = pm.response.json();
  +
  +
pm.test('Response code should be 200', () => {
  +
  +
pm.response.to.have.status(200);
   
pm.test('Response code should be 200', function(){
 
pm.response.to.have.status(200);
 
 
});
 
});
   
pm.test('Server should have NON-empty complete ledgers', function(){
+
pm.test('Server should have NON-empty complete ledgers', () => {
  +
  +
pm.expect(payload.result.info.complete_ledgers).to.not.equal('empty');
   
pm.expect(payload.result.info.complete_ledgers).to.not.equal('empty');
 
 
});
 
});
   
 
if(pm.variables.get('hostname')){
 
if(pm.variables.get('hostname')){
  +
pm.test('Node should have "hostid" same with hostname of the hosted machine', function(){
 
  +
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'));
 
  +
pm.expect(payload.result.info.hostid).to.be.equal(pm.variables.get('hostname'));
  +
});
  +
}
  +
</syntaxhighlight>
  +
  +
* Parsing path and request before sending request
  +
  +
<syntaxhighlight lang='javascript' enclose='div'>
  +
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);
  +
});
  +
</syntaxhighlight>
  +
  +
* Sending another request in the test script to pull the result (async operation case)
  +
  +
<syntaxhighlight lang='javascript' enclose='div'>
  +
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);
  +
});
  +
</syntaxhighlight>
  +
  +
* Polling the result for the additional async request in test script - Using <code>setInterval()</code> instead of <code>setTimeout()</code>
  +
  +
<syntaxhighlight lang='javascript' enclose='div'>
  +
'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);
  +
});
  +
});
 
}
 
}
  +
</syntaxhighlight>
  +
  +
* Reusable statements
  +
  +
<syntaxhighlight lang='javascript' enclose='div'>
  +
  +
// 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();
 
</syntaxhighlight>
 
</syntaxhighlight>
   
Line 1,082: Line 2,958:
 
* https://www.pureftpd.org/project/blogbench
 
* https://www.pureftpd.org/project/blogbench
 
* Desc. : a portable filesystem benchmark that tries to reproduce the load of a real-world busy file server.
 
* Desc. : a portable filesystem benchmark that tries to reproduce the load of a real-world busy file server.
  +
  +
----
   
 
===Log Viewer===
 
===Log Viewer===
Line 1,090: Line 2,968:
 
* Desc. : Lilith is a logging and access event viewer for the Logback logging framework, log4j and java.util.logging.
 
* Desc. : Lilith is a logging and access event viewer for the Logback logging framework, log4j and java.util.logging.
 
* License :
 
* License :
  +
  +
----
   
 
===Build===
 
===Build===
Line 1,099: Line 2,979:
 
* http://maven.apache.org/
 
* http://maven.apache.org/
 
* Desc. : a software project management and comprehension tool.
 
* Desc. : a software project management and comprehension tool.
* [[On Maven]]
+
* &gt;&gt; [[On Maven]]
   
 
====Ant====
 
====Ant====
Line 1,105: Line 2,985:
 
* http://ant.apache.org/
 
* 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.
 
* 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]]
+
* &gt;&gt; [[On Ant]]
   
 
====Gradle====
 
====Gradle====
Line 1,114: Line 2,994:
 
* Source :
 
* Source :
   
=====Referencs=====
+
=====References=====
   
 
* [http://www.gradle.org/documentation Gradle documentation]
 
* [http://www.gradle.org/documentation Gradle documentation]
  +
* [https://docs.gradle.org/current/userguide/build_environment.html Build Environment]
   
 
* '''4.6'''
 
* '''4.6'''
 
** [https://docs.gradle.org/4.6/userguide/command_line_interface.html Command-Line Interface]
 
** [https://docs.gradle.org/4.6/userguide/command_line_interface.html Command-Line Interface]
 
** [https://docs.gradle.org/4.6/dsl/ Gradle Build Language Reference]
 
** [https://docs.gradle.org/4.6/dsl/ Gradle Build Language Reference]
  +
{| class='wikitable'
  +
! Key !! Description !! Handler !! Remarks
  +
|-
  +
| <tt>repositories</tt> || [https://docs.gradle.org/current/userguide/declaring_repositories.html Declaring repositories] || ||
  +
|-
  +
| <tt>dependencies</tt> || [https://docs.gradle.org/current/userguide/declaring_dependencies.html Declaring dependencies]
  +
| [https://docs.gradle.org/6.4.1/javadoc/org/gradle/api/artifacts/dsl/DependencyHandler.html <tt>DependencyHandler</tt>] ||
  +
|}
  +
  +
======Properties======
  +
  +
* [https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties Gradle properties]
  +
* [https://docs.gradle.org/current/userguide/build_environment.html#sec:project_properties System properties]
  +
** <code>gradle.wrapperUser</code>, <code>gradle.wrapperPassword</code>, <code>gradle.user.home</code>
  +
* [https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_environment_variables Environment variables]
  +
  +
{| class='wikitable'
  +
! Property !! Description !! Default !! Remarks
  +
|-
  +
| <code>org.gradle.daemon=(true,false)</code>
  +
| When set to <code>true</code> the Gradle Daemon is used to run the build.
  +
| <code>true</code> ||
  +
|-
  +
| <code>org.gradle.debug=(true,false)</code>
  +
| When set to <code>true</code>, Gradle will run the build with remote debugging enabled, listening on port 5005.
  +
| <code>false</code> ||
  +
|-
  +
| <code>org.gradle.java.home=(path to JDK home)</code>
  +
| Specifies the Java home for the Gradle build process. || ||
  +
|-
  +
| <code>org.gradle.jvmargs=(JVM arguments)</code>
  +
| Specifies the JVM arguments used for the Gradle Daemon. || || Does '''NOT''' affect the version of Java used to launch the Gradle client VM
  +
|-
  +
| <code>org.gradle.logging.level=(quiet,warn,lifecycle,info,debug)</code> || || ||
  +
|}
  +
  +
{| class='wikitable'
  +
! Environment Variable !! Description !! Remarks
  +
|-
  +
| <code>JAVA_HOME</code> || Specifies the JDK installation directory to use for the client VM. ||
  +
|-
  +
| <code>GRADLE_USER_HOME</code> || Specifies the Gradle user home directory. || default : <code>$USER_HOME/.gradle</code>
  +
|-
  +
| <code>GRADLE_OPTS</code> || Specifies JVM arguments to use when starting the Gradle client VM. ||
  +
|}
  +
  +
======Commands======
   
 
* Common commands
 
* Common commands
  +
{| class='wikitable' style='margin-left:20px'
 
  +
{| class='wikitable'
! Command !! Description !! Reamrks
 
  +
! Command !! Description !! Plugin-in || Remarks
  +
|-
  +
| <code>$ gradle help --task ''taskname'' || gives you detailed information about a specific task || ||
  +
|-
  +
| <code>$ gradle tasks --all</code> || gives you a list of the main tasks of the selected project || ||
  +
|-
  +
| <code>$ gradle build</code> || designate assembling all outputs and running all checks || <code>Base</code> ||
  +
|-
  +
| <code>$ gradle run</code> || assembles the application and executes some script or binary || ||
  +
|-
  +
| <code>$ gradle clean</code> || delete the contents of the build directory || ||
  +
|-
  +
| <code>$ gradle project</code> || gives you a list of the sub-projects of the selected project, displayed in a hierarchy || ||
 
|-
 
|-
| <code>$ gradle tasks --all</code> || gives you a list of the main tasks of the selected project ||
+
| <code>$ gradle dependencies</code> || gives you a list of the dependencies of the selected project, broken down by configuration || ||
 
|}
 
|}
  +
  +
=====Plugins=====
  +
  +
* [https://docs.gradle.org/current/userguide/plugin_reference.html Gradle Built-in Plugins]
  +
  +
{| class='wikitable sortable'
  +
! Plugin !! Description !! Tasks !! Remarks
  +
|-
  +
| [https://docs.gradle.org/current/userguide/base_plugin.html 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.
  +
| <code>assemble</code>, <code>build</code>, <code>clean</code> ||
  +
|
  +
| [https://docs.gradle.org/current/userguide/java_plugin.html Java]
  +
| Provides support for building any type of Java project. || ||
  +
|-
  +
| [https://docs.gradle.org/current/userguide/java_library_plugin.html Java Library]
  +
| Provides support for building a Java library. || ||
  +
|-
  +
| [https://docs.gradle.org/current/userguide/java_platform_plugin.html Java Platform]
  +
| Provides support for building a Java platform. || ||
  +
|-
  +
| [https://docs.gradle.org/current/userguide/groovy_plugin.html Groovy]
  +
| Provides support for building any type of Groovy project. || ||
  +
|}
  +
  +
* [https://plugins.gradle.org Gradle Plugin Portal]
  +
  +
{| class='wikitable'
  +
! Category !! Plugin !! Title !! Description !! Tasks !! Remarks
  +
|-
  +
| Gradle || [https://plugins.gradle.org/plugin/com.palantir.git-version <tt>com.palantir.git-version</tt>] ||
  +
| A plugin that generates a version for use with Gradle by calling git-describe. || ||
  +
|-
  +
| Docker || [https://plugins.gradle.org/plugin/com.palantir.docker <tt>com.palantir.docker</tt>] ||
  +
| A simple docker orchestrator for executing docker build and push from within Gradle. || ||
  +
|-
  +
| Spring || style='white-space:none' | [https://plugins.gradle.org/plugin/org.springframework.boot <tt>org.springframework.boot</tt>]
  +
| Spring Boot Gradle Plugin || provides Spring Boot support in Gradle. || <tt>bootJar</tt>, <tt>bootRun</tt> ||
  +
|}
  +
  +
======Java Plugin======
  +
  +
* [https://docs.gradle.org/current/userguide/java_plugin.html Java Plugin]
  +
* [https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management Java Plugin / Dependency Management]
  +
  +
{| class='wikitable sortable'
  +
! Dependency !! Parents !! Description !! Remarks
  +
|-
  +
| <del>'''<tt>compile</tt>'''</del> || || Compile time dependencies. || Superseded by <tt>implementation</tt>.
  +
|-
  +
| '''<tt>implementation</tt>''' || <tt>compile</tt> || Implementation only dependencies. ||
  +
|-
  +
| '''<tt>compileOnly</tt>''' || || Compile time only dependencies, not used at runtime. ||
  +
|-
  +
| '''<tt>compileClasspath</tt>''' || <tt>compile</tt>, <tt>compileOnly</tt>, <tt>implementation</tt>
  +
| Compile classpath, used when compiling source. || Used by task <tt>compileJava</tt>.
  +
|-
  +
| '''<tt>annotationProcessor</tt>''' || || Annotation processors used during compilation. ||
  +
|-
  +
| <del>'''<tt>runtime</tt>'''</del> || <tt>compile</tt> || Runtime dependencies. || Superseded by <tt>runtimeOnly</tt>.
  +
|-
  +
| '''<tt>runtimeOnly</tt>''' || || Runtime only dependencies. ||
  +
|-
  +
| '''<tt>runtimeClasspath</tt>''' || <tt>runtimeOnly</tt>, <tt>runtime</tt>, <tt>implementation</tt> || Runtime classpath contains elements of the implementation, as well as runtime only elements. ||
  +
|}
  +
  +
======Java Library Plugin======
  +
  +
* [https://docs.gradle.org/current/userguide/java_library_plugin.html Java Library Plugin]
  +
* [https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_configurations_graph Java Library Plugin Configurations]
  +
** <tt>implementation</tt>, <tt>compileOnly</tt>, <tt>runtimeOnly</tt>, ...
  +
  +
======Spring Boot Gradle Plugin======
  +
  +
* [https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/ Spring Boot Gradle Plugin Reference Guide]
  +
* [https://docs.spring.io/spring-boot/docs/2.3.4.RELEASE/gradle-plugin/api/ Spring Boot Gradle Plugin 2.3.4.RELEASE API]
  +
  +
=====Typical Configurations=====
  +
  +
<syntaxhighlight lang='groovy' enclose='div'>
  +
  +
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()
  +
}
  +
</syntaxhighlight>
   
 
=====Readings=====
 
=====Readings=====
   
 
* [https://coderwall.com/p/evtdbw/aggregate-javadoc-in-multiproject-gradle-builds Aggregate Javadoc in multiproject Gradle builds] (February 25, 2016)
 
* [https://coderwall.com/p/evtdbw/aggregate-javadoc-in-multiproject-gradle-builds Aggregate Javadoc in multiproject Gradle builds] (February 25, 2016)
  +
  +
----
   
 
===Package Management===
 
===Package Management===
   
 
* Package Management Softwares
 
* Package Management Softwares
{| class='wikitable' style='margin-left:20px'
+
{| class='wikitable'
 
! Software !! Scope !! Remarks
 
! Software !! Scope !! Remarks
 
|-
 
|-
| [https://wiki.debian.org/Apt APT] (Advanced Package Tool)
+
| style='white-space:nowrap' | [https://wiki.debian.org/Apt APT] (Advanced Package Tool) || style='white-space:nowrap' | Ubuntu, Debian
| Ubuntu, Debian
 
 
| a set of tools for managing Debian packages, and therefore the applications installed on your Debian system
 
| a set of tools for managing Debian packages, and therefore the applications installed on your Debian system
 
|-
 
|-
| [http://rpm.org/ RPM]
+
| [http://rpm.org/ RPM] || CentOS, RHLP
| CentOS, RHLP
 
 
| a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages
 
| a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages
 
|-
 
|-
| [http://yum.baseurl.org/ yum]
+
| [http://yum.baseurl.org/ yum] || CentOS, RHLP
| CentOS, RHLP
 
 
| an automatic updater and package installer/remover for rpm systems
 
| an automatic updater and package installer/remover for rpm systems
 
|-
 
|-
| [https://chocolatey.org/ Chocolatey]
+
| [https://chocolatey.org/ Chocolatey] || Windows || the package manager for Windows
  +
|-
| Windows
 
  +
| [https://brew.sh Homebrew] || macOS || The Missing Package Manager for macOS
| the package manager for Windows
 
 
|-
 
|-
| [https://www.npmjs.com/ npm]
+
| [https://www.npmjs.com/ npm] || JavaScript || the package manager for JavaScript
| JavaScript
 
| the package manager for JavaScript
 
 
|-
 
|-
| [https://yarnpkg.com/ yarn]
+
| [https://yarnpkg.com/ yarn] || JavaScript || a package manager for JavaScript
| JavaScript
 
| a package manager for JavaScript
 
 
|-
 
|-
| [https://pip.pypa.io/ pip]
+
| [https://pip.pypa.io/ pip] || Python || the PyPA recommended tool for installing Python packages
| Python
 
| the PyPA recommended tool for installing Python packages
 
 
|-
 
|-
| [http://rubygems.org/ RubyGems]
+
| [http://rubygems.org/ RubyGems] || Ruby || allows you to easily download, install, and use ruby software packages on your system
| Ruby
 
| allows you to easily download, install, and use ruby software packages on your system
 
 
|-
 
|-
| [http://bundler.io/ Bundler]
+
| [http://bundler.io/ Bundler] || Ruby
| Ruby
 
 
| provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed
 
| provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed
 
|}
 
|}
Line 1,220: Line 3,255:
 
=====Samples=====
 
=====Samples=====
   
<syntaxhighlight lang="bash" enclose="div" style="margin-left:40px">
+
<syntaxhighlight lang="bash" enclose="div">
 
$ # install or upgrade. (do NOT use rpm -i ... as possible)
 
$ # install or upgrade. (do NOT use rpm -i ... as possible)
 
$ rpm -Uhv mysql-workbench-community-6.2.3-1.el6.x86_64.rpm
 
$ rpm -Uhv mysql-workbench-community-6.2.3-1.el6.x86_64.rpm
Line 1,287: Line 3,322:
 
| Advanced Searches ||
 
| Advanced Searches ||
 
|}
 
|}
 
 
   
 
* Examples
 
* Examples
Line 1,303: Line 3,336:
 
* https://wiki.debian.org/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
 
* 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
  +
 
* Readings
 
* Readings
 
** [https://wiki.debian.org/AptCLI#Installing_Packages '''APT CLI''']
 
** [https://wiki.debian.org/AptCLI#Installing_Packages '''APT CLI''']
 
** [https://www.debian.org/doc/manuals/apt-guide/index.en.html APT User's Guide]
 
** [https://www.debian.org/doc/manuals/apt-guide/index.en.html APT User's Guide]
  +
  +
====Homebrew====
  +
  +
* >> [[On Mac#Homebrew| On Homebrew]]
   
 
====RubyGems====
 
====RubyGems====
Line 1,331: Line 3,369:
 
** [https://bundler.io/docs.html Bundler official documentation]
 
** [https://bundler.io/docs.html Bundler official documentation]
 
** [https://bundler.io/v1.16/man/gemfile.5.html <code>Gemfile</code>] : A format for describing gem dependencies for Ruby programs
 
** [https://bundler.io/v1.16/man/gemfile.5.html <code>Gemfile</code>] : A format for describing gem dependencies for Ruby programs
  +
  +
----
   
 
===Frontend===
 
===Frontend===
Line 1,338: Line 3,378:
 
* http://code.google.com/p/myschedule/
 
* http://code.google.com/p/myschedule/
 
* Desc. : a web application for managing Quartz Schedulers.
 
* Desc. : a web application for managing Quartz Schedulers.
  +
  +
----
   
 
===Networking===
 
===Networking===
  +
  +
* [https://www.raymond.cc/blog/how-to-discover-hidden-wireless-network/ 8 WiFi Scanners to Discover Hidden Wireless Networks]
   
 
====OpenSSL====
 
====OpenSSL====
Line 1,358: Line 3,402:
 
=====Commands=====
 
=====Commands=====
   
* [https://www.openssl.org/docs/man1.1.0/apps/ 1.1.0 manpage]
+
* [https://www.openssl.org/docs/manpages.html manpages]
   
{| class='wikitable' style='margin-left:20px'
+
{| class='wikitable'
 
! Command !! Description !! Remarks
 
! Command !! Description !! Remarks
 
|-
 
|-
| [https://www.openssl.org/docs/man1.1.0/apps/openssl-genrsa.html <code>openssl genrsa</code>]
+
| [https://www.openssl.org/docs/man1.1.1/apps/openssl-genrsa.html <code>openssl genrsa</code>]
 
| Generates an RSA private key
 
| Generates an RSA private key
 
|
 
|
 
|-
 
|-
| [https://www.openssl.org/docs/man1.1.0/apps/openssl-req.html <code>openssl req</code>]
+
| [https://www.openssl.org/docs/man1.1.1/apps/openssl-req.html <code>openssl req</code>]
 
| Creates and processes certificate requests in PKCS#10 format
 
| Creates and processes certificate requests in PKCS#10 format
 
|
 
|
 
|-
 
|-
| [https://www.openssl.org/docs/man1.1.0/apps/openssl-x509.html <code>openssl x509</code>]
+
| [https://www.openssl.org/docs/man1.1.1/apps/openssl-x509.html <code>openssl x509</code>]
 
| Certificate display and signing utility
 
| Certificate display and signing utility
 
|
 
|
 
|-
 
|-
| [https://www.openssl.org/docs/man1.1.0/apps/openssl-pkcs12.html <tt>openssl pkcs12</tt>]
+
| [https://www.openssl.org/docs/man1.1.1/apps/openssl-pkcs12.html <tt>openssl pkcs12</tt>]
 
| PKCS#12 file utility
 
| PKCS#12 file utility
 
| [https://en.wikipedia.org/wiki/PKCS_12 PKCS 12]
 
| [https://en.wikipedia.org/wiki/PKCS_12 PKCS 12]
Line 1,435: Line 3,479:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
$ openssl x509 -in tls-server.crt -inform PEM -text -noout
 
$ openssl x509 -in tls-server.crt -inform PEM -text -noout
  +
</syntaxhighlight>ls
  +
  +
<syntaxhighlight lang='bash' enclose='div'>
  +
$ 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
 
</syntaxhighlight>
 
</syntaxhighlight>
   
Line 1,456: Line 3,558:
 
=====Examples=====
 
=====Examples=====
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
echo '{ "id": 2,
 
echo '{ "id": 2,
 
"command": "ledger",
 
"command": "ledger",
Line 1,502: Line 3,604:
   
 
* [https://stackoverflow.com/questions/20202269/set-up-git-bash-to-work-with-tabs-on-windows Set up git bash to work with tabs on windows] (Nov 25 '13)
 
* [https://stackoverflow.com/questions/20202269/set-up-git-bash-to-work-with-tabs-on-windows Set up git bash to work with tabs on windows] (Nov 25 '13)
  +
* [https://conemu.github.io/en/ConEmuArgs.html ConEmu.exe command line switches]
  +
** <tt>-LoadCfgFile</tt>, <tt>-SaveCfgFile</tt>
   
 
====Poderosa====
 
====Poderosa====
Line 1,509: Line 3,613:
 
* Sources : https://github.com/poderosaproject/poderosa
 
* Sources : https://github.com/poderosaproject/poderosa
 
* License : Apache License 2.0
 
* License : Apache License 2.0
  +
  +
----
   
 
===Security===
 
===Security===
Line 1,600: Line 3,706:
 
* Default Policy
 
* Default Policy
   
<syntaxhighlight lang='javascript' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='javascript' enclose='div'>
 
rules # Allow tokens to look up their own properties
 
rules # Allow tokens to look up their own properties
 
path "auth/token/lookup-self" {
 
path "auth/token/lookup-self" {
Line 1,703: Line 3,809:
   
 
======Secret Engines======
 
======Secret Engines======
  +
  +
* Secrets engines: components which store, generate, or encrypt data.
   
 
{| class='wikitable'
 
{| class='wikitable'
 
! Engine !! Description !! Enabling Script !! API !! Remarks
 
! Engine !! Description !! Enabling Script !! API !! Remarks
 
|-
 
|-
| style='white-space:nowrap' | [https://www.vaultproject.io/docs/secrets/identity/index.html <tt>identity</tt>]
+
| style='white-space:nowrap' | [https://www.vaultproject.io/docs/secrets/identity/index.html <tt>Identity</tt>]
 
| the identity management solution for Vault. ||
 
| the identity management solution for Vault. ||
 
| style='white-space:nowrap' | [https://www.vaultproject.io/api/secret/identity/index.html Identity Secrets Engine API] ||
 
| style='white-space:nowrap' | [https://www.vaultproject.io/api/secret/identity/index.html Identity Secrets Engine API] ||
  +
|-
  +
| style='white-space:nowrap' | [https://www.vaultproject.io/api-docs/secret/transit '''<tt>Transit</tt>''']
  +
| handles cryptographic functions on data in-transit. ||
  +
| style='white-space:nowrap' | [https://www.vaultproject.io/api-docs/secret/transit Transit Secrets Engine API]
  +
| <tt>POST /transit/keys/:name</tt><br/><tt>POST /transit/encrypt/:name</tt><br/><tt> POST /transit/sign/:name(/:hash_algorithm)</tt>
 
|}
 
|}
   
Line 1,718: Line 3,831:
   
 
* [https://www.hashicorp.com/resources/adopting-hashicorp-vault Adopting HashiCorp Vault] (JAN 15, 2019)
 
* [https://www.hashicorp.com/resources/adopting-hashicorp-vault Adopting HashiCorp Vault] (JAN 15, 2019)
 
 
* [https://www.katacoda.com/hashicorp/scenarios/vault-identity Vault Identity]
 
* [https://www.katacoda.com/hashicorp/scenarios/vault-identity Vault Identity]
   
Line 1,724: Line 3,836:
 
* [https://quarkus.io/guides/vault QUARKUS - WORKING WITH HASHICORP VAULT]
 
* [https://quarkus.io/guides/vault QUARKUS - WORKING WITH HASHICORP VAULT]
 
* [https://blog.octo.com/en/gardez-les-cles-de-votre-infrastructure-a-labri-avec-vault/ Keep your infrastructure keys safe with Vault] (27/12/2018)
 
* [https://blog.octo.com/en/gardez-les-cles-de-votre-infrastructure-a-labri-avec-vault/ Keep your infrastructure keys safe with Vault] (27/12/2018)
  +
  +
* [https://github.com/hashicorp/vault/issues/4594 '''Transit engine ecdsa-secp256k1 support'''] (Open)
   
 
=====Tips and Tricks=====
 
=====Tips and Tricks=====
Line 1,729: Line 3,843:
 
======Typical Commandlines for Admins======
 
======Typical Commandlines for Admins======
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ export VAULT_ADDR="http://127.0.0.1:8200" # setup VAULT_ADDR env. variable
 
$ export VAULT_ADDR="http://127.0.0.1:8200" # setup VAULT_ADDR env. variable
   
Line 1,750: Line 3,864:
 
======Typical Commandlines for End-users======
 
======Typical Commandlines for End-users======
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
   
 
$ vault login -method=userpass username=foo # try login as a normal user
 
$ vault login -method=userpass username=foo # try login as a normal user
Line 1,812: Line 3,926:
 
* [https://nmap.org/book/man-briefoptions.html Options Summary]
 
* [https://nmap.org/book/man-briefoptions.html Options Summary]
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Option !! Description !! Remarks
 
! Option !! Description !! Remarks
 
|-
 
|-
Line 1,838: Line 3,952:
 
* [https://nmap.org/book/man-port-scanning-basics.html Port Scanning Basics]
 
* [https://nmap.org/book/man-port-scanning-basics.html Port Scanning Basics]
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! State !! Description !! Remarks
 
! State !! Description !! Remarks
 
|-
 
|-
Line 1,858: Line 3,972:
 
* [https://nmap.org/nsedoc/index.html Scripts]
 
* [https://nmap.org/nsedoc/index.html Scripts]
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Category !! Script !! Description !! Usage/Arguments !! Remarks
 
! Category !! Script !! Description !! Usage/Arguments !! Remarks
 
|-
 
|-
Line 1,898: Line 4,012:
 
======Scan a single host======
 
======Scan a single host======
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div' >
 
$ sudo nmap -Pn -n -sS -sV -O 192.168.10.201
 
$ sudo nmap -Pn -n -sS -sV -O 192.168.10.201
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 1,904: Line 4,018:
 
======Scan multiple specific hosts======
 
======Scan multiple specific hosts======
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ sudo nmap -Pn -n -sS -sV -O 192.168.10.201 192.168.10.203 192.168.10.207
 
$ sudo nmap -Pn -n -sS -sV -O 192.168.10.201 192.168.10.203 192.168.10.207
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 1,910: Line 4,024:
 
======Try brute force attack MySQL======
 
======Try brute force attack MySQL======
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div' >
 
$ sudo nmap -Pn --script=mysql-info,mysql-brute -d -p 3306 169.56.90.135
 
$ sudo nmap -Pn --script=mysql-info,mysql-brute -d -p 3306 169.56.90.135
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 1,933: Line 4,047:
 
* [https://cisofy.com/lynis/controls/ Lynis security controls]
 
* [https://cisofy.com/lynis/controls/ Lynis security controls]
   
{| class='wikitable' style='margin-left:40px'
+
{| class='wikitable'
 
! Control !! Category !! Title !! Description !! Remarks
 
! Control !! Category !! Title !! Description !! Remarks
 
|-
 
|-
Line 2,000: Line 4,114:
 
* [https://en.wikipedia.org/wiki/Rootkit Rootkit]
 
* [https://en.wikipedia.org/wiki/Rootkit 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.''
 
** ''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===
 
===Graphics===
Line 2,008: Line 4,124:
 
* Desc. : open source graph visualization software.
 
* Desc. : open source graph visualization software.
 
* License : EPL
 
* License : EPL
  +
  +
* [http://www.graphviz.org/doc/info/lang.html DOT Language] : Abstract grammar for defining Graphviz '''nodes''', '''edges''', '''graphs''', '''subgraphs''', and '''clusters'''.
  +
* [http://www.graphviz.org/doc/info/attrs.html All Attributes]
  +
  +
{| class='wikitable'
  +
! Element !! Attribtues !! Shapes !! Remarks
  +
|-
  +
| Graph || [http://www.graphviz.org/docs/graph/ Graph Attributes] || ||
  +
|-
  +
| Node || [http://www.graphviz.org/docs/nodes/ Node Attributes] || [http://www.graphviz.org/doc/info/shapes.html Node Shapes] ||
  +
|-
  +
| Edge || [http://www.graphviz.org/docs/edges/ Edge Attributes] || [http://www.graphviz.org/doc/info/arrows.html Arrow Shapes] ||
  +
|}
  +
  +
* [https://unix.stackexchange.com/a/670534 How to set default font, or default style in Graphviz's Dot language] (Sep 24, 2021)
  +
** <syntaxhighlight inline class='inline' lang='dot'>node [fontname="default-node-font"]</syntaxhighlight>
   
 
====Mscgen====
 
====Mscgen====
Line 2,026: Line 4,158:
 
* 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.
 
* 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
 
* 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 :
  +
  +
* [http://im.snibgo.com/ Snibgo's ImageMagick pages]
  +
  +
----
   
 
===Visualization===
 
===Visualization===
Line 2,034: Line 4,177:
 
* Desc. : transform W3C XML Schema instances into interactive diagrams in SVG format.
 
* Desc. : transform W3C XML Schema instances into interactive diagrams in SVG format.
 
* License : GPLv2
 
* License : GPLv2
  +
  +
----
   
 
===Data Analysis===
 
===Data Analysis===
  +
  +
* [https://www.knowi.com/blog/best-business-intelligence-tools-2020/ Best 7 Business Intelligence Tools 2020: Round One, Fight!]
  +
** Knowi, Power BI, Metabase, Tableau, Looker, Google Data Studio, Sisense
  +
* [https://www.holistics.io/blog/metabase-limitations-and-top-alternatives-bi/ Metabase Limitations and Top 4 Alternatives (BI)] (4 MARCH 2020)
  +
** Holistics, Tableau, PowerBI, Looker, Redash
  +
  +
====Metabase====
  +
  +
* https://www.metabase.com/
  +
* Desc. : an open source business intelligence tool.
  +
* License : AGPL
  +
* Written in :
  +
* Sources : https://github.com/metabase/metabase
  +
  +
=====Readings=====
  +
  +
* [https://www.metabase.com/docs/latest/ Metabase Documentation]
  +
  +
* [https://www.metabase.com/docs/latest/operations-guide/environment-variables.html Configuring settings using environment variables]
  +
* [https://www.metabase.com/docs/latest/operations-guide/configuring-application-database.html Configuring the Metabase Application Database]
  +
** <tt>export MB_DB_TYPE=h2</tt>
  +
** <tt>export MB_DB_FILE=/the/path/to/my/h2.db</tt>
  +
* [https://www.metabase.com/docs/latest/operations-guide/log-configuration.html Configuring Logging Level]
  +
  +
* [https://github.com/metabase/metabase/blob/master/docs/api-documentation.md API Documentation for Metabase]
   
 
====Cube====
 
====Cube====
Line 2,042: Line 4,212:
 
* Desc. : a system for collecting timestamped events and deriving metrics.
 
* Desc. : a system for collecting timestamped events and deriving metrics.
 
* License : Apache License 2.0
 
* License : Apache License 2.0
  +
  +
----
   
 
===ETL===
 
===ETL===
Line 2,049: Line 4,221:
 
* http://scriptella.javaforge.com/
 
* http://scriptella.javaforge.com/
 
* Desc. : An open source ETL (Extract-Transform-Load) and script execution tool written in Java.
 
* Desc. : An open source ETL (Extract-Transform-Load) and script execution tool written in Java.
  +
  +
----
   
 
===Science===
 
===Science===
Line 2,089: Line 4,263:
 
* [https://www.virtualbox.org/manual/UserManual.html User Manual]
 
* [https://www.virtualbox.org/manual/UserManual.html User Manual]
 
* [https://www.virtualbox.org/manual/ch08.html <code>VBoxManage</code> reference] : VirtualBox CLI
 
* [https://www.virtualbox.org/manual/ch08.html <code>VBoxManage</code> reference] : VirtualBox CLI
  +
* [https://www.virtualbox.org/manual/ch06.html#network_hostonly Virtual networking]
 
  +
* [https://www.virtualbox.org/manual/ch06.html Virtual Networking]
  +
** [https://www.virtualbox.org/manual/ch06.html#network_nat NAT]
  +
*** <blockquote class='bared'>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.</blockquote>
  +
** [https://www.virtualbox.org/manual/ch06.html#network_hostonly Host-Only Networking]
   
 
======VBoxManage======
 
======VBoxManage======
Line 2,103: Line 4,281:
 
|-
 
|-
 
| [https://www.virtualbox.org/manual/ch09.html#vboxmanage-storageattach <tt>storageattach</tt>] || attaches, modifies, and removes a storage medium connected to a storage controller that was previously added with the storagectl command || <tt>storagectl</tt>, <tt>port</tt>, <tt>type</tt>, <tt>medium</tt> ||
 
| [https://www.virtualbox.org/manual/ch09.html#vboxmanage-storageattach <tt>storageattach</tt>] || attaches, modifies, and removes a storage medium connected to a storage controller that was previously added with the storagectl command || <tt>storagectl</tt>, <tt>port</tt>, <tt>type</tt>, <tt>medium</tt> ||
  +
|}
  +
  +
======Menus======
  +
  +
{| class='wikitable'
  +
! Menu !! Options !! Description
  +
|-
  +
| <tt>Input > Keyboard > Keyboard Settings > Auto Capture Keyboard</tt> || On, Off ||
  +
|-
  +
| <tt>Devices > Shared Clipboard</tt>> || <tt>Disabled</tt>, <tt>Host To Guest</tt>, <tt>Guest To Host</tt>, <tt>Bidirectional</tt> ||
 
|}
 
|}
   
Line 2,111: Line 4,299:
 
* [http://www.jeramysingleton.com/install-centos-7-minimal-in-virtualbox/ Install a CentOS 7 Minimal Virtual Machine with VirtualBox]
 
* [http://www.jeramysingleton.com/install-centos-7-minimal-in-virtualbox/ Install a CentOS 7 Minimal Virtual Machine with VirtualBox]
 
* [http://www.virtualbox.org/manual/ch09.html#rawdisk Using a raw host hard disk from a guest]
 
* [http://www.virtualbox.org/manual/ch09.html#rawdisk Using a raw host hard disk from a guest]
* [http://searchvirtualdesktop.techtarget.com/tip/Four-virtual-disk-formats-every-VDI-admin-needs-to-know Four virtual disk formats every VDI admin needs to know]
 
 
* [http://xmodulo.com/how-to-create-and-start-virtualbox-vm-without-gui.html How to create and start VirtualBox VM without GUI] (May 9, 2013)
 
* [http://xmodulo.com/how-to-create-and-start-virtualbox-vm-without-gui.html How to create and start VirtualBox VM without GUI] (May 9, 2013)
  +
* [https://askubuntu.com/questions/63420/how-to-fix-virtualboxs-copy-and-paste-to-host-machine How to fix virtualbox's copy and paste to host-machine?] (Sep 28 '11)
  +
** <tt>$ killall VBoxClient; VBoxClient-all</tt>
  +
* [https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox How to run Ubuntu Desktop on a virtual machine using VirtualBox]
  +
** ''Download an Ubuntu Image'' > ''Download and install VirtualBox'' > ''Create a new virtual machine'' > ''Install your image'' > ''Changing the window resolution''
  +
  +
* [https://superuser.com/questions/569836/fixing-command-tab-on-virtual-box Fixing Command + Tab on Virtual Box] (Mar 22, 2013)
  +
** Disable <tt>[Input / Keyboard / Keyboard Settings / '''Auto Keyboard Capture''']</tt>
  +
* [https://www.techrepublic.com/article/how-to-enable-copy-and-paste-in-virtualbox/ How to enable copy and paste in VirtualBox](November 8, 2017)
  +
** <tt>[Devices / Shared Clipboard]</tt>
  +
  +
======Networking======
  +
  +
* [https://www.nakivo.com/blog/virtualbox-network-setting-guide/ '''VirtualBox Network Settings: Complete Guide'''] (July 16, 2019)
  +
* [https://superuser.com/questions/749546/how-to-expose-local-loopback-to-virtualbox-vm-connecting-to-host-via-nat-virt How to expose local loopback to (VirtualBox) VM connecting to host via NAT (VirtualBox NatNetwork)] (May 4, 2014)
  +
** <tt>10.0.2.2</tt>
 
* [https://2buntu.com/articles/1513/accessing-your-virtualbox-guest-from-your-host-os/ Accessing your Virtualbox Guest from your Host OS] : Host-only networks
 
* [https://2buntu.com/articles/1513/accessing-your-virtualbox-guest-from-your-host-os/ Accessing your Virtualbox Guest from your Host OS] : Host-only networks
  +
  +
======Storage======
  +
  +
* [http://searchvirtualdesktop.techtarget.com/tip/Four-virtual-disk-formats-every-VDI-admin-needs-to-know Four virtual disk formats every VDI admin needs to know]
  +
* [https://stackoverflow.com/questions/26740113/virtualbox-shared-folder-permissions Virtualbox shared folder permissions] (Nov 4, 2014)
  +
** ''Add yourself to the <code>vboxsf</code> group within the guest VM'' and then reboot.
 
* [https://askubuntu.com/questions/446317/how-to-make-guest-os-follow-symlinks-from-shared-folder How to make Guest OS follow symlinks from shared folder] (Apr 11 '14)
 
* [https://askubuntu.com/questions/446317/how-to-make-guest-os-follow-symlinks-from-shared-folder How to make Guest OS follow symlinks from shared folder] (Apr 11 '14)
 
** <code>VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1</code>
 
** <code>VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1</code>
* [https://askubuntu.com/questions/63420/how-to-fix-virtualboxs-copy-and-paste-to-host-machine How to fix virtualbox's copy and paste to host-machine?] (Sep 28 '11)
 
** <tt>$ killall VBoxClient; VBoxClient-all</tt>
 
   
 
====Xen Project Hypervisor====
 
====Xen Project Hypervisor====
Line 2,375: Line 4,581:
 
======Directives======
 
======Directives======
   
<syntaxhighlight lang='bnf' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bnf' enclose='div' >
   
 
server = server_name, listen, location*
 
server = server_name, listen, location*
Line 2,488: Line 4,694:
 
* [https://www.ssltrust.com.au/help/setup-guides/setup-squid-proxy Setup Squid Forward Proxy] (25/09/2018)
 
* [https://www.ssltrust.com.au/help/setup-guides/setup-squid-proxy Setup Squid Forward Proxy] (25/09/2018)
 
* [http://linuxplayer.org/2012/02/why-squid-listen-on-high-udp-port-number why squid listen on high udp port number] (February 17, 2012)
 
* [http://linuxplayer.org/2012/02/why-squid-listen-on-high-udp-port-number why squid listen on high udp port number] (February 17, 2012)
  +
  +
----
   
 
===Networking===
 
===Networking===
Line 2,515: Line 4,723:
 
|-
 
|-
 
| [https://man.openbsd.org/ssh <tt>ssh</tt>] || OpenSSH SSH client (remote login program) ||
 
| [https://man.openbsd.org/ssh <tt>ssh</tt>] || OpenSSH SSH client (remote login program) ||
  +
|-
  +
| [https://man.openbsd.org/ssh-add <tt>ssh-add</tt>] || adds private key identities to the OpenSSH authentication agent ||
 
|}
 
|}
   
Line 2,534: Line 4,744:
   
 
======Configurations======
 
======Configurations======
  +
  +
* [https://docs.fedoraproject.org/en-US/Fedora/17/html/System_Administrators_Guide/s1-ssh-configuration.html An OpenSSH Configuration]
  +
* [https://www.ssh.com/ssh/config/ SSH CONFIG FILE] : OpenSSH client configuration
   
 
{| class='wikitable'
 
{| class='wikitable'
Line 2,543: Line 4,756:
 
|}
 
|}
   
  +
* User specific configuration files
* [https://www.ssh.com/ssh/config/ SSH CONFIG FILE] : OpenSSH client configuration
 
  +
{| class='wikitable'
  +
! Fiel !! Description !! Remarks
  +
|-
  +
| <tt>~/.ssh/authorized_keys</tt> || 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
  +
|-
  +
| <tt>~/.ssh/id_dsa</tt> || Contains the DSA private key of the user. || client, 600
  +
|-
  +
| <tt>~/.ssh/id_dsa.pub</tt> || Contains the DSA public key of the user. || client, 644
  +
|-
  +
| <tt>~/.ssh/id_rsa</tt> || Contains the RSA private key used by ssh for version 2 of the SSH protocol. || client, 600
  +
|-
  +
| <tt>~/.ssh/id_rsa.pub</tt> || Contains the RSA public key used by ssh for version 2 of the SSH protocol. || client, 644
  +
|-
  +
| <tt>~/.ssh/identity</tt> || Contains the RSA private key used by ssh for version 1 of the SSH protocol. || client
  +
|-
  +
| <tt>~/.ssh/identity.pub</tt> || Contains the RSA public key used by ssh for version 1 of the SSH protocol. || client
  +
|-
  +
| <tt>~/.ssh/known_hosts</tt> || Contains DSA host keys of SSH servers accessed by the user. || client
  +
|}
   
 
======Daemon Config Options======
 
======Daemon Config Options======
Line 2,605: Line 4,837:
 
* [https://linux-audit.com/audit-and-harden-your-ssh-configuration/ OpenSSH security and hardening]
 
* [https://linux-audit.com/audit-and-harden-your-ssh-configuration/ OpenSSH security and hardening]
 
* [https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding How to create a restricted SSH user for port forwarding?] (Jun 10 '11)
 
* [https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding How to create a restricted SSH user for port forwarding?] (Jun 10 '11)
<syntaxhighlight lang='text' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='text' enclose='div' >
 
Match User limited-user
 
Match User limited-user
 
AllowTcpForwarding yes
 
AllowTcpForwarding yes
Line 2,611: Line 4,843:
 
ForceCommand echo 'This account can only be used for ...'
 
ForceCommand echo 'This account can only be used for ...'
 
</syntaxhighlight>
 
</syntaxhighlight>
  +
  +
* [https://superuser.com/questions/215504/permissions-on-private-key-in-ssh-folder Permissions on private key in .ssh folder?] (Nov 26 '10)
  +
* [https://stackoverflow.com/questions/2419566/best-way-to-use-multiple-ssh-private-keys-on-one-client Best way to use multiple SSH private keys on one client] (Mar 10 '10)
  +
* [https://www.redhat.com/sysadmin/manage-multiple-ssh-key-pairs How to manage multiple SSH key pairs] (August 30, 2019)
   
 
====VyOS====
 
====VyOS====
Line 2,753: Line 4,989:
 
* Manage Services
 
* Manage Services
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ configure
 
$ configure
 
$ show service # list all services
 
$ show service # list all services
Line 2,766: Line 5,002:
 
* Manage SSHD
 
* Manage SSHD
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ configure
 
$ configure
 
$ show service ssh
 
$ show service ssh
Line 2,777: Line 5,013:
 
* Manage Loggings
 
* Manage Loggings
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ configure
 
$ configure
 
$ show system syslog # show syslog configuration
 
$ show system syslog # show syslog configuration
Line 2,787: Line 5,023:
 
* Manage VRRP
 
* Manage VRRP
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ show vrrp
 
$ show vrrp
 
</syntaxhighlight>
 
</syntaxhighlight>
Line 2,800: Line 5,036:
 
======Remarkable Command-line======
 
======Remarkable Command-line======
   
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div' >
   
 
$ # list operational mode commands
 
$ # list operational mode commands
Line 2,827: Line 5,063:
 
* License :
 
* License :
 
* Sources : https://github.com/OpenVPN/openvpn
 
* Sources : https://github.com/OpenVPN/openvpn
  +
  +
----
   
 
===Security===
 
===Security===
Line 2,858: Line 5,096:
 
* Written-in : Go
 
* Written-in : Go
 
* Sources : https://github.com/letsencrypt/boulder/
 
* Sources : https://github.com/letsencrypt/boulder/
  +
  +
----
   
 
===Media Streaming Server===
 
===Media Streaming Server===
Line 2,927: Line 5,167:
 
* 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.
 
* 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
 
* License : Apple Public Source License
  +
  +
----
   
 
===NoSQL===
 
===NoSQL===
Line 3,049: Line 5,291:
 
*** [https://github.com/apache/couchdb/blob/ac7a00cd9f654825e4a3bb39b7a07871598ecef6/rel/overlay/etc/default.ini <code>default.ini</code>]
 
*** [https://github.com/apache/couchdb/blob/ac7a00cd9f654825e4a3bb39b7a07871598ecef6/rel/overlay/etc/default.ini <code>default.ini</code>]
 
*** [https://github.com/apache/couchdb/blob/ac7a00cd9f654825e4a3bb39b7a07871598ecef6/rel/overlay/etc/local.ini <code>local.ini</code>]
 
*** [https://github.com/apache/couchdb/blob/ac7a00cd9f654825e4a3bb39b7a07871598ecef6/rel/overlay/etc/local.ini <code>local.ini</code>]
 
   
 
* Readings
 
* Readings
Line 3,061: Line 5,302:
 
* Books
 
* Books
 
** [http://guide.couchdb.org/index.html ''CouchDB The Definitive Guide'']
 
** [http://guide.couchdb.org/index.html ''CouchDB The Definitive Guide'']
  +
  +
----
   
 
===Search Engine===
 
===Search Engine===
Line 3,081: Line 5,324:
 
* [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html Field datatypes]
 
* [https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html Field datatypes]
   
{| class='wikitable' style='margin-left:40px;'
+
{| class='wikitable'
 
! Datatype !! Description !! Remarks
 
! Datatype !! Description !! Remarks
 
|-
 
|-
Line 3,092: Line 5,335:
   
 
* [https://www.elastic.co/guide/en/elasticsearch/reference/6.4/config-monitoring-indices.html Configuring Indices for Monitoring]
 
* [https://www.elastic.co/guide/en/elasticsearch/reference/6.4/config-monitoring-indices.html Configuring Indices for Monitoring]
  +
  +
----
   
 
===Version Control Software===
 
===Version Control Software===
Line 3,147: Line 5,392:
   
 
* Examples
 
* Examples
<syntaxhighlight lang='bash' enclose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='bash' enclose='div'>
 
$ svn info . //show status including working copy path, repository path, base revision and et al.
 
$ 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 status . //show only locally modified items under the current directory of working copy
Line 3,174: Line 5,419:
 
** [ftp://mf.cai.com/caproducts/cccharvest/r121/Beta/Bookshelf/Bookshelf.html CA SCM (Harvest) 12.1 Documentation]
 
** [ftp://mf.cai.com/caproducts/cccharvest/r121/Beta/Bookshelf/Bookshelf.html CA SCM (Harvest) 12.1 Documentation]
 
** [ftp://mf.cai.com/caproducts/cccharvest/r121/Beta/Bookshelf/Bookshelf_Files/HTML/CA_SCM_Workbench_ENU/index.htm?toc.htm?ignore_files.html .scmignore file of Harvest]
 
** [ftp://mf.cai.com/caproducts/cccharvest/r121/Beta/Bookshelf/Bookshelf_Files/HTML/CA_SCM_Workbench_ENU/index.htm?toc.htm?ignore_files.html .scmignore file of Harvest]
  +
  +
----
   
 
===Repository Management Software===
 
===Repository Management Software===
Line 3,182: Line 5,429:
 
* Desc : Binary Repository Manager for Maven, Ivy, Gradle modules, etc.
 
* Desc : Binary Repository Manager for Maven, Ivy, Gradle modules, etc.
 
* License : LGPLv3
 
* License : LGPLv3
  +
  +
----
   
 
===Configuration Management Software===
 
===Configuration Management Software===
Line 3,264: Line 5,513:
 
* Written in : Go
 
* Written in : Go
 
* Sources : https://github.com/hashicorp/packer
 
* Sources : https://github.com/hashicorp/packer
  +
  +
----
   
 
===System Monitoring Software===
 
===System Monitoring Software===
   
 
* &gt;&gt; [[On Monitoring|On Monitoring]]
 
* &gt;&gt; [[On Monitoring|On Monitoring]]
  +
  +
----
   
 
===Wiki===
 
===Wiki===
Line 3,290: Line 5,543:
 
* License : The MIT License
 
* License : The MIT License
 
* Written in : Ruby
 
* Written in : Ruby
  +
  +
----
  +
  +
===Issue Tracking Software===
  +
  +
====Jira====
  +
  +
* [https://www.atlassian.com/software/jira Jira Software]
  +
  +
* [https://confluence.atlassian.com/jirasoftwareserver076/advanced-searching-941595912.html#Advancedsearching-referenceReference JQL(JIRA Query Language) Reference]
  +
** [https://confluence.atlassian.com/jirasoftwareserver076/advanced-searching-fields-reference-941595922.html Field Reference]
  +
** [https://confluence.atlassian.com/jirasoftwareserver076/advanced-searching-operators-reference-941595924.html Operators Reference]
  +
** [https://confluence.atlassian.com/jirasoftwareserver076/advanced-searching-keywords-reference-941595923.html Keywords Reference]
  +
** [https://confluence.atlassian.com/jirasoftwareserver076/advanced-searching-functions-reference-941595925.html Functions Reference]
  +
  +
----
   
 
===Content Management System===
 
===Content Management System===
  +
  +
* [https://en.wikipedia.org/wiki/List_of_content_management_systems List of content management systems]
  +
** WordPress, Drupal, Joomla, DokuWiki, TWiki, XWiki
   
 
====Jekyll====
 
====Jekyll====
Line 3,314: Line 5,586:
 
* [https://github.com/Shopify/liquid/wiki/Liquid-for-Designers Liquid for Designers]
 
* [https://github.com/Shopify/liquid/wiki/Liquid-for-Designers Liquid for Designers]
 
* [https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers List of supported languages and lexers of Rouge]
 
* [https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers List of supported languages and lexers of Rouge]
  +
  +
======Themes======
  +
  +
{| class='wikitable'
  +
! Theme !! Description !! Remarks
  +
|-
  +
| [https://jekyllthemes.io/theme/mediumish Mediumish Jekyll theme]
  +
| a blogging theme Medium styled, built with Bootstrap 4. ||
  +
|}
   
 
=====Readings=====
 
=====Readings=====
Line 3,334: Line 5,615:
 
* License : The MIT License
 
* License : The MIT License
 
* Sources : https://github.com/daattali/beautiful-jekyll
 
* Sources : https://github.com/daattali/beautiful-jekyll
  +
  +
====Confluence====
  +
  +
* [https://confluence.atlassian.com/doc/confluence-wiki-markup-251003035.html#ConfluenceWikiMarkup-TextEffects Confluence Wiki Markup]
  +
* [https://confluence.atlassian.com/doc/macros-139387.html#Macros-Confluencemacros Confluence Macros]
  +
  +
{| class='wikitable'
  +
! Macro !! Description !! Remarks
  +
|-
  +
| [https://confluence.atlassian.com/doc/blog-posts-macro-139470.html 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. ||
  +
|-
  +
| [https://confluence.atlassian.com/doc/code-block-macro-139390.html Code Block Macro]
  +
| Display code examples with syntax highlighting. ||
  +
|-
  +
| [https://confluence.atlassian.com/doc/pdf-macro-375849180.html PDF Macro]
  +
| Display the content of a PDF document. ||
  +
|-
  +
| style='white-space:nowrap' | [https://confluence.atlassian.com/doc/office-powerpoint-macro-375849178.html Office PowerPoint Macro]
  +
| Display the content of a PowerPoint presentation. ||
  +
|-
  +
| [https://confluence.atlassian.com/doc/panel-macro-51872380.html Panel Macro]
  +
| Format your text in a customizable coloured panel. ||
  +
|}
  +
  +
* [https://bobswift.atlassian.net/wiki/spaces/info/pages/31916055/How+to+display+SVG+attachments+in+Confluence How to display SVG attachments in Confluence]
  +
** <tt>!mindmap.svg</tt>
  +
* [https://blog.servicerocket.com/adoption/the-safest-way-to-inject-css/html/javascript-to-confluence-pages The Safest Way To Inject CSS/HTML/Javascript to Confluence Pages] (September 28, 2020)
  +
** single page scope CSS style =&gt; HTML Macro
  +
  +
=====Tips and Tricks=====
  +
  +
======Simple HTML Macro for page scope styling======
  +
  +
<syntaxhighlight lang='html5' enclose='div'>
  +
<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>
  +
</syntaxhighlight>
   
 
====Drupal====
 
====Drupal====
Line 3,340: Line 5,696:
 
* 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.
 
* 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
 
* License : GPL
  +
  +
====JBake====
  +
  +
* https://jbake.org/
  +
* Desc. : a Java based, open source, static site/blog generator for developers & designers
  +
* License : MIT
  +
* Sources : https://github.com/jbake-org/jbake/
  +
  +
* [https://jbake.org/docs/2.6.7/ JBake v2.6.7 Documentation]
   
 
====Joomla====
 
====Joomla====
Line 3,353: Line 5,718:
 
* License : LGPL 2.1
 
* License : LGPL 2.1
 
* Written in : PHP
 
* Written in : PHP
  +
  +
----
   
 
===Desktop Sharing===
 
===Desktop Sharing===
Line 3,369: Line 5,736:
 
* Desc. : a free remote control software package.
 
* Desc. : a free remote control software package.
 
* License : GPL
 
* License : GPL
  +
  +
----
   
 
===BPM Engine===
 
===BPM Engine===
Line 3,377: Line 5,746:
 
* Desc : a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins.
 
* Desc : a light-weight workflow and Business Process Management (BPM) Platform targeted at business people, developers and system admins.
 
* License : Apache License 2.0
 
* License : Apache License 2.0
  +
  +
----
   
 
===misc===
 
===misc===
  +
  +
* [https://www.goodfirms.co/blog/best-free-open-source-document-management-software 8 Best Free and Open Source Document Management Software Solutions]
  +
** OpenDocMan, OpenKM, SeedDMS, Mayan EDMS (in Python)
   
 
====Openfire====
 
====Openfire====
Line 3,405: Line 5,779:
 
* License : Apache License Version 2.0
 
* License : Apache License Version 2.0
 
* Source : https://github.com/docker/docker
 
* Source : https://github.com/docker/docker
  +
  +
* &gt;&gt; [[On Docker| On Docker]]
   
 
====Vagrant====
 
====Vagrant====
Line 3,420: Line 5,796:
   
 
* [https://api.slack.com/docs/message-formatting Formatting messages]
 
* [https://api.slack.com/docs/message-formatting Formatting messages]
  +
{| class='wikitable'
  +
! Category !! Character/Style !! Format !! Remarks
  +
|-
  +
| Escape Character || Ampersand (<code>&amp;</code>) || <code>&amp;amp;</code> ||
  +
|-
  +
| || Less-Than Sign (<code>&lt;</code>) || <code>&amp;lt;</code> ||
  +
|-
  +
| || Greater-Than Sign (<code>&gt;</code>) || <code>&amp;gt;</code> ||
  +
|-
  +
| Markup || Bold || <code>*<i>text</i>*</code> ||
  +
|-
  +
| || Italic || <code>_<i>text</i>_</code> ||
  +
|-
  +
| || Strike Through || <code>~<i>text</i>~</code> ||
  +
|-
  +
| || Inline Code || <code>`<i>text</i>`</code> ||
  +
|}
  +
 
* [https://get.slack.help/hc/en-us/articles/202035138-Add-an-app-to-your-workspace Add an app to your workspace]
 
* [https://get.slack.help/hc/en-us/articles/202035138-Add-an-app-to-your-workspace Add an app to your workspace]
  +
  +
* [https://www.markdownguide.org/tools/slack/#slack-markdown-support-in-messages Slack Markdown Support in Messages] : Poor!
  +
* [https://www.markdownguide.org/tools/slack/#slack-markdown-support-in-posts Slack Markdown Support in Posts] : Poor!
   
 
==Utilities==
 
==Utilities==
   
 
===Browser===
 
===Browser===
  +
  +
====Chrome====
  +
  +
* Chrome Extensions
  +
  +
{| class='wikitable'
  +
! Extension !! Keyword !! Description !! Remarks
  +
|-
  +
| [https://chrome.google.com/webstore/detail/markdown-viewer/ckkdlimhmcjmikdlpkmbgfkaikojcbjk/ Markdown Viewer]
  +
| Markdown
  +
| Markdown Viewer ||
  +
|-
  +
| [https://chrome.google.com/webstore/detail/asciidoctorjs-live-previe/iaalpfgpbocpdfblpnhhgllgbdbchmia Asciidoctor.js Live Preview]
  +
| [https://asciidoc.org/ AsciiDoc]
  +
| Render AsciiDoc (.ad, .adoc, .asc, .asciidoc) as HTML inside your browser! ||
  +
|}
   
 
====Firefox====
 
====Firefox====
Line 3,435: Line 5,848:
 
====Thunderbird====
 
====Thunderbird====
   
  +
{| class='wikitable'
* Readings
 
  +
! Location !! Item !! Preferred Value/State !! Remarks
** [http://thunderbirdtweaks.blogspot.com/2011/11/thunderbird-and-exchange-owa.html Thunderbird and Exchange / OWA]
 
  +
|-
** [http://kb.mozillazine.org/Outlook_Web_Access mozillaZine : Outlook Web Access]
 
  +
| <code>Preferences > Privacy & Security > Thunderbird Data Collection and Use</code>
** [https://wiki.mozilla.org/Calendar:FAQ#How_do_I_save_my_calendar_file_on_a_local.2Fnetwork_drive Calendar : How do I save my calendar file on a local/network drive]
 
  +
| Allow Thunderbird to send technical and interaction data to Mozilla || Unchecked ||
** [http://kb.mozillazine.org/Keep_it_working_-_Thunderbird Keep it working - Thunderbird]
 
  +
|-
  +
| || Allow Thunderbird to send backlogged crash reports on your behalf || Unchecked ||
  +
|}
  +
  +
=====Readings=====
  +
  +
* [http://thunderbirdtweaks.blogspot.com/2011/11/thunderbird-and-exchange-owa.html Thunderbird and Exchange / OWA]
  +
* [http://kb.mozillazine.org/Outlook_Web_Access mozillaZine : Outlook Web Access]
  +
* [https://wiki.mozilla.org/Calendar:FAQ#How_do_I_save_my_calendar_file_on_a_local.2Fnetwork_drive Calendar : How do I save my calendar file on a local/network drive]
  +
* [http://kb.mozillazine.org/Keep_it_working_-_Thunderbird Keep it working - Thunderbird]
  +
  +
=====Troubleshooting=====
  +
  +
* [http://kb.mozillazine.org/Disappearing_mail Disappearing mail]
  +
* [http://kb.mozillazine.org/MozBackup MozBackup]
  +
* [https://support.mozilla.org/ko/questions/1090306 Inbox completely empty after compacting folders] (15. 10. 23)
  +
* [https://support.mozilla.org/ko/questions/990235 All messages disappeared from Thunderbird Inbox] (14. 3. 16)
  +
* [https://datahelpsoftware.com/blog/thunderbird-inbox-email-missing-and-deleted-messages-reappear.html How to Repair & Rebuild MSF File to Remove Thunderbird Inbox Email Missing Error] (2018-02-15)
   
  +
----
* Troubleshooting
 
** [http://kb.mozillazine.org/Disappearing_mail Disappearing mail]
 
** [http://kb.mozillazine.org/MozBackup MozBackup]
 
** [https://support.mozilla.org/ko/questions/1090306 Inbox completely empty after compacting folders] (15. 10. 23)
 
** [https://support.mozilla.org/ko/questions/990235 All messages disappeared from Thunderbird Inbox] (14. 3. 16)
 
   
 
===PC Diagnostic and Recovery===
 
===PC Diagnostic and Recovery===
Line 3,462: Line 5,889:
 
* Articles
 
* Articles
 
** [http://www.hirensbootcd.org/usb-booting/ Launching Hiren's BootCD from USB Flash Drive]
 
** [http://www.hirensbootcd.org/usb-booting/ Launching Hiren's BootCD from USB Flash Drive]
  +
  +
----
   
 
===PC Security===
 
===PC Security===
   
====AVG AntiVirus FREE====
+
====AVG====
   
* https://www.avg.com/en-ww/free-antivirus-download
+
* https://www.avg.com/
  +
* Desc. : Powerful protection and performance for your PC and beyond
* Desc. :
 
  +
  +
* Download
  +
** [https://www.avg.com/en-ww/installation-files-prd-gsr-free AVG AntiVirus FREE Online/Offline Installer and Update File]
   
 
====Comodo Internet Security====
 
====Comodo Internet Security====
Line 3,480: Line 5,912:
 
* https://eraser.heidi.ie/
 
* 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.
 
* 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===
 
===File System===
Line 3,492: Line 5,926:
   
 
* http://www.partitionwizard.com/
 
* http://www.partitionwizard.com/
  +
  +
----
   
 
===Office===
 
===Office===
Line 3,501: Line 5,937:
 
* License : GPL
 
* License : GPL
   
  +
* [https://github.com/notepad-plus-plus/nppPluginList/blob/master/doc/plugin_list_x64.md Notepad++ 64-bit Plugin List]
 
* [https://stackoverflow.com/questions/455037/convert-tabs-to-spaces-in-notepad Convert tabs to spaces in Notepad++] (Jan 18 '09)
 
* [https://stackoverflow.com/questions/455037/convert-tabs-to-spaces-in-notepad Convert tabs to spaces in Notepad++] (Jan 18 '09)
 
** <tt>Edit -> Blank Operations -> TAB to Space</tt>
 
** <tt>Edit -> Blank Operations -> TAB to Space</tt>
Line 3,511: Line 5,948:
 
* License : [https://www.libreoffice.org/about-us/licenses/ Mozilla Public License v2.0]
 
* License : [https://www.libreoffice.org/about-us/licenses/ Mozilla Public License v2.0]
   
  +
* [https://help.libreoffice.org/4.3/Writer/Changing_the_Default_Template Writer - Changing the Default Template]
=====Readings=====
 
   
  +
=====Calc=====
* [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Functions_listed_by_category Calc Functions listed by category]
 
  +
* [https://help.libreoffice.org/Calc/Functions_by_Category Calc Functions by Category]
 
  +
* [https://help.libreoffice.org/7.4/en-US/text/scalc/01/04060100.html LibreOffice 7.4 Calc Functions by Category]
  +
* [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Functions_listed_alphabetically OpenOffice Calc Functions by Name]
  +
* [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Functions_listed_by_category OpenOffice Calc Functions by Category]
 
* [https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=20125 Can Not Click Merge Cells Button] (Jun 25, 2009)
 
* [https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=20125 Can Not Click Merge Cells Button] (Jun 25, 2009)
 
** Disable "Record Changes" option
 
** Disable "Record Changes" option
  +
* [https://www.libreofficehelp.com/sumif-and-sumifs-function-with-examples-in-libreoffice-calc/ SUMIF and SUMIFS Function with Examples in LibreOffice Calc] (October 9, 2020)
  +
* [https://superuser.com/questions/598871/how-to-color-rows-based-on-cell-value-in-openoffice-and-libreoffice How to color rows based on cell value in OpenOffice and LibreOffice] (May 23 '13)
  +
** <code>Format</code> &gt; <code>Conditional</code> &gt; <code>Condition...</code>
   
  +
* [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Calc Regular Expressions in Calc]
=====Calc Functions=====
 
  +
* [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Writer Regular Expressions in Writer]
  +
  +
======Calc Functions======
   
 
{| class='wikitable'
 
{| class='wikitable'
! Function !! Description !! Remark
+
! Category !! Function !! Description !! Remark
  +
|-
  +
| [https://help.libreoffice.org/7.4/en-US/text/scalc/01/04060110.html Text] || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_VALUE_function <code>VALUE(''text'')</code>]
  +
| Returns a number, given a text representation. || <tt>TO_NUMBER</tt>
  +
|-
  +
| || [https://help.libreoffice.org/7.4/en-US/text/scalc/01/04060110.html#hd_id3147132 <code>TEXT(''number''; ''format'')</code>]
  +
| Returns ''<tt>number</tt>'' converted to text, according to the format code specified by ''<tt>format</tt>''. || <tt>TO_TEXT</tt>
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_LEFT_function <code>LEFT(''text''; ''number'')</code>]
  +
| Returns text from the left side of a text string. || <tt>number</tt>: length
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_RIGHT_function <code>RIGHT(''text''; ''number'')</code>]
  +
| Returns text from the right side of a text string. || <tt>number</tt>: length
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_MID_function <code>MID(''text''; ''start''; ''number'')</code>]
  +
| Returns text from the middle of a text string. || 1 based
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_FIND_function <code>FIND(''findtext''; ''texttosearch''<nowiki>[</nowiki>; ''startposition''<nowiki>]</nowiki>)</code>]
  +
| Returns the character position of the first occurrence of ''<tt>findtext</tt>'' within ''<tt>texttosearch</tt>''. || case-sensitive, no regex support
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_SEARCH_function <code>SEARCH(''findtext''; ''texttosearch''<nowiki>[</nowiki>; ''startposition''<nowiki>]</nowiki>)</code>]
  +
| Returns the character position of the first occurrence of ''<tt>findtext</tt>'' within ''<tt>texttosearch</tt>''. || case-insensitive, regex support
  +
|-
  +
| || [https://help.libreoffice.org/7.4/en-US/text/scalc/01/func_regex.html <code>'''REGEX'''(''text''; ''expression''<nowiki>[</nowiki>; ''replacement''<nowiki>[</nowiki>; ''flag''<nowiki>|</nowiki>''occurrence''<nowiki>]]</nowiki>)</code>]
  +
| Matches and extracts or optionally replaces text using regular expressions. || supports [https://unicode-org.github.io/icu/userguide/strings/regexp.html ICU Regular Expressions]
  +
|-
  +
| [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Logical_functions Logical]
  +
| [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_IF_function <code>IF(''test''; ''value1''; ''value2'')</code>]
  +
| Returns one of two values, depending on a test condition. ||
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_NOT_function <code>NOT(''value'')</code>]
  +
| Returns <tt>TRUE</tt> if the argument is <tt>FALSE</tt>, and <tt>FALSE</tt> if the argument is <tt>TRUE</tt>. ||
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_AND_function <code>AND(''arg1''; ''arg2'' ...''arg30'')</code>] || ||
  +
|-
  +
| || [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_OR_function <code>OR(''arg1''; ''arg2'' ...''arg30'')</code>] || ||
  +
|-
  +
| [https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_Mathematical_functions Math]
  +
| [https://wiki.documentfoundation.org/Documentation/Calc_Functions/SUMIF <code>SUMIF(''range''; ''criteria''<nowiki>[</nowiki>; ''sum-range''<nowiki>]</nowiki>)</code>]
  +
| Adds the cells specified by a given criteria. ||
  +
|-
  +
| || style='white-space:nowrap' | [https://wiki.documentfoundation.org/Documentation/Calc_Functions/SUMIFS <code>SUMIFS(''func-range''<nowiki>[</nowiki>; ''range'' ; ''criterion''<nowiki>]</nowiki>{1:127})</code>]
  +
| Returns the sum of the values of cells in a range that meets multiple criteria in multiple ranges. ||
  +
|-
  +
| Statistical || [https://wiki.documentfoundation.org/Documentation/Calc_Functions/COUNTIF <code>COUNTIF(''range''; ''criteria'')</code>]
  +
| Returns a non-negative integer which is the number of cells in ''<code>range</code>'' that satisfy the given ''<code>criteria</code>''. ||
  +
|-
  +
| || [https://wiki.documentfoundation.org/Documentation/Calc_Functions/MAXIFS <code>MAXIFS(''func-range''<nowiki>[</nowiki>; ''range''; ''criterion''<nowiki>]</nowiki>{1:127})</code>]
  +
| Returns the maximum of the values of cells in a range that meet multiple criteria in multiple ranges. ||
 
|-
 
|-
  +
| [https://help.libreoffice.org/7.4/en-US/text/scalc/01/04060104.html?DbPAR=CALC Predicates]
| style='margin-left:40px' | <tt>VALUE(text)</tt> || Returns a number, given a text representation. ||
 
  +
| <code>ISBLANK(''value'')</code> || Returns TRUE if the reference to a cell is blank ||
 
|-
 
|-
| style='margin-left:40px' | <tt>LEFT(text; number)</tt> || Returns text from the left side of a text string. || <tt>number</tt>: length
+
| || <code>ISTEXT(''value'')</code> || Returns TRUE if the cell contents refer to text ||
 
|-
 
|-
| style='margin-left:40px' | <tt>RIGHT(text; number)</tt> || Returns text from the right side of a text string. || <tt>number</tt>: length
+
| || <code>ISNUMBER(''value'')</code> || Returns TRUE if the value refers to a number ||
 
|-
 
|-
| style='margin-left:40px' | <tt>MID(text; start; number)</tt> || Returns text from the middle of a text string. || 1 based
+
| || <code>ISEVEN(''value'')</code> || Returns TRUE if the value is an even integer, or FALSE if the value is odd ||
 
|}
 
|}
   
 
* '''Samples'''
 
* '''Samples'''
   
<syntaxhighlight lang='text' enlose='div' style='margin-left:40px'>
+
<syntaxhighlight lang='java' enclose='div'>
   
=VALUE(LEFT(TRIM(A1), LEN(TRIM(A1)) - 1)) # +1,000P -> 1000, -20,000P -> 20000, ...
+
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), "")
   
 
</syntaxhighlight>
 
</syntaxhighlight>
   
====Excel====
+
======Number Format Codes======
  +
  +
{| class='wikitable'
  +
! Category !! Placeholder !! Description !! Remarks
  +
|-
  +
| Decimal Number || <code>#</code> || Does not display extra zeros. ||
  +
|-
  +
| || <code>0</code> || Displays extra zeros if the number has less places than zeros in the format. ||
  +
|-
  +
| Date || <code>YYYY</code> || Year as <code>1900</code> to <code>2078</code> ||
  +
|-
  +
| || <code>YY</code> || Year as <code>00</code> to <code>99</code> ||
  +
|-
  +
| || <code>M</code> || Month ||
  +
|-
  +
| || <code>MM</code> || Month ||
  +
|-
  +
| || <code>MMM</code> || Month as <code>Jan</code> to <code>Dec</code> ||
  +
|-
  +
| || <code>D</code> || Day ||
  +
|-
  +
| || <code>DD</code> || Day ||
  +
|-
  +
| || <code>NN</code> || Day as <code>Sun</code> to <code>Sat</code> ||
  +
|-
  +
| || <code>NNN</code> || Day as <code>Sunday</code> to <code>Saturday</code> ||
  +
|}
  +
  +
=====Impress=====
  +
  +
* [https://ask.libreoffice.org/t/cant-select-text-box-in-impress-to-move-it/60954 Can’t select text box in impress to move it]
  +
** <tt>Tools - Options… - LibreOffice Impress - General - Allow quick editing</tt>
  +
  +
====Microsoft Office====
  +
  +
* [https://learn.microsoft.com/en-us/deployoffice/compat/office-file-format-reference File format reference for Word, Excel, and PowerPoint] (10/28/2022)
  +
* [https://bettersolutions.com/word/templates/index.htm Word Templates]
  +
** <tt>Normal.dotm</tt>, User Templates, Workgroup Templates, Global Templates
  +
  +
=====Excel=====
   
  +
* [https://support.microsoft.com/en-us/office/Formulas-and-functions-294d9486-b332-48ed-b489-abe7d0f9eda9 Excel Formulas and Functions] - Excel for Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010
 
* [https://support.office.com/en-ie/article/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb Excel functions (by category)]
 
* [https://support.office.com/en-ie/article/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb Excel functions (by category)]
 
* [https://support.office.com/en-ie/article/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188 Excel functions (alphabetical)]
 
* [https://support.office.com/en-ie/article/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188 Excel functions (alphabetical)]
Line 3,548: Line 6,103:
 
* [https://www.ablebits.com/office-addins-blog/2016/06/01/split-text-string-excel/ How to split text string in Excel by comma, space, character or mask] (May 30, 2019)
 
* [https://www.ablebits.com/office-addins-blog/2016/06/01/split-text-string-excel/ How to split text string in Excel by comma, space, character or mask] (May 30, 2019)
 
* [http://capzzang.tistory.com/14 Generate Gantt like chart in Excel](Korean)
 
* [http://capzzang.tistory.com/14 Generate Gantt like chart in Excel](Korean)
  +
  +
======Excel Configuration======
  +
  +
{| class='wikitable'
  +
! Config !! Menu !! Description !! Remarks
  +
|-
  +
| Cell Auto-completion || <code>File > Options > Advanced > Editing Options > Enable AutoComplete for Cell Values</code> ||
  +
  +
|}
  +
  +
======Excel Functions======
  +
  +
{| class='wikitable'
  +
! Category !! Function !! Description !! Remark
  +
|-
  +
| Math || [https://support.microsoft.com/en-us/office/sumif-function-169b8c99-c05c-4483-a712-1697a653039b <tt><nowiki>SUMIF(range, criteria, [sum_range])</nowiki></tt>]
  +
| Sum the values in a range that meet criteria that you specify ||
  +
|-
  +
| || style='white-space:nowrap' | [https://support.microsoft.com/en-us/office/sumifs-function-c9e748f5-7ea7-455d-9406-611cebce642b <tt><nowiki>SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)</nowiki></tt>]
  +
| Adds all of its arguments that meet multiple criteria ||
  +
|}
  +
  +
=====PowerPoint=====
  +
  +
* [https://www.free-power-point-templates.com/articles/how-to-mirror-an-image-in-powerpoint-2010/ How to Mirror an Image in PowerPoint (Easy Way)] (DECEMBER 14TH, 2022)
  +
** <code>Picture Format</code> &gt; <code>Arrange</code> &gt; <code>Rotate</code> &gt; <code>Flip Horizontal</code>
  +
  +
* [https://support.microsoft.com/en-us/office/change-a-shape-into-another-shape-b6ea0d00-9a93-4a12-aea8-e13ba10bb61c Change a shape into another shape]
  +
** <code>Shape Format</code> &gt; <code>Insert Shapes</code> &gt; <code>Edit Shape</code> &gt; <code>Change Shape</code>
  +
  +
----
   
 
===Image Viewer/Editor===
 
===Image Viewer/Editor===
Line 3,563: Line 6,149:
 
* License : GPL v3
 
* License : GPL v3
   
  +
* Typical Tasks
* Readings
 
  +
** [https://docs.gimp.org/2.8/en/ Official user manual]
 
  +
{| class='wikitable'
** [https://docs.gimp.org/en/gimp-tool-move.html Move Tool] : used to move layers, selections, paths or guides
 
  +
! Task !! Tool/Dialog !! Remarks
** [http://www.dreevoo.com/content.php?id=664 Floating selection in Gimp]
 
  +
|-
** [https://docs.gimp.org/en/plug-in-align-layers.html Align Visible Layers] : can very precisely position the visible layers
 
  +
| Removing image background
** [http://gimptips.com/articles/removing-image-backgrounds-gimp-fuzzy-select Removing Image Backgrounds - GIMP Fuzzy Select] (31 Oct 2010)
 
  +
| <code>Fuzzy Select Tool</code><br/><code>Select by Color Tool</code><br/><code>Foreground Select Tool</code> ||
  +
|-
  +
| Resizing Selection
  +
| <code>Windows</code> &gt; <code>Dockable Dialogs</code> &gt; <code>Tool Options</code> ||
  +
|}
  +
  +
* Dockable Dialogs
  +
  +
{| class='wikitable'
  +
! Dialog !! Description !! Remarks
  +
|-
  +
| <code>Undo History</code> || ||
  +
|-
  +
| <code>Tool Options</code> || ||
  +
|-
  +
| <code>Tool Presets</code> || ||
  +
|}
  +
  +
=====Readings=====
  +
  +
* [https://docs.gimp.org/2.8/en/ Official user manual]
  +
* [https://docs.gimp.org/en/gimp-tool-move.html Move Tool] : used to move layers, selections, paths or guides
  +
* [http://www.dreevoo.com/content.php?id=664 Floating selection in Gimp]
  +
* [https://docs.gimp.org/en/plug-in-align-layers.html Align Visible Layers] : can very precisely position the visible layers
  +
  +
* [http://gimptips.com/articles/removing-image-backgrounds-gimp-fuzzy-select Removing Image Backgrounds - GIMP Fuzzy Select] (31 Oct 2010)
  +
* [https://www.alphr.com/gimp-make-background-transparent/ How To Make A Background Transparent In GIMP] (November 24, 2021)
  +
** Using the 'Fuzzy Select Tool' : One of the easiest ways to get rid of a background
  +
** Using 'Select by Color Tool' : another perfect method for beginners
  +
** Using the 'Foreground Select Tool' : particularly advantageous if the main subject of your image has a lot of fine hairs you wish to crop around
  +
** Using Layer Masks : better suited to more advanced GIMP editors as it includes finetuning specific details of an image
  +
* [https://superuser.com/questions/925394/how-do-i-tell-the-dimensions-of-the-current-selection-in-gimp How do I tell the dimensions of the current selection in GIMP?] (Jun 8, 2015)
  +
** <code>Windows</code> &gt; <code>Dockable Dialogs</code> &gt; <code>Tool Options</code>
  +
  +
----
  +
  +
===Video Editing===
  +
  +
* [https://www.lifewire.com/best-open-source-video-editing-software-4590219 The 9 Best Open-Source Video Editing Software of 2022] (February 28, 2022)
  +
** Shotcut, OpenShot, Blender, Kdenlive, Flowblade, Avidemux, VidCutter, LiVES, Natron
  +
* [https://blog.capterra.com/open-source-video-editing-software/ Top 3 Open Source Video Editing Software] (April 20, 2022)
  +
** OpenShot, Shotcut, PowerDirector (commercial)
  +
  +
----
   
 
===Screen Capture/Recording===
 
===Screen Capture/Recording===
Line 3,598: Line 6,228:
 
* Desc. : The Easiest Screen Recorder And Video Editor
 
* Desc. : The Easiest Screen Recorder And Video Editor
   
  +
----
===Optical Disc Authoring===
 
  +
  +
===Disk Image===
   
 
====CDBurnerXP====
 
====CDBurnerXP====
Line 3,606: Line 6,238:
 
* [http://cdburnerxp.se/help/intro/license License]
 
* [http://cdburnerxp.se/help/intro/license 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.
 
** 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====
  +
  +
* https://www.imgburn.com/
  +
* Desc. : a lightweight CD / DVD / HD DVD / Blu-ray burning application
  +
  +
* Features
  +
** supports a wide range of image file formats - including BIN, CCD, CDI, CUE, DI, DVD, GI, IMG, ISO, MDS, NRG and PDI.
   
 
====InfraRecorder====
 
====InfraRecorder====
Line 3,613: Line 6,253:
 
* License : GPL
 
* License : GPL
 
* [http://en.wikipedia.org/wiki/InfraRecorder InfraRecorder on Wikipedia]
 
* [http://en.wikipedia.org/wiki/InfraRecorder InfraRecorder on Wikipedia]
  +
  +
====WinCDEmu====
  +
  +
* https://wincdemu.sysprogs.org/
  +
* Desc. : an open-source CD/DVD/BD emulator - a tool that allows you to mount optical disc images by simply clicking on them in Windows Explorer.
  +
* License : LGPL-3.0
  +
* Sources : https://github.com/sysprogs/WinCDEmu
  +
  +
* Features
  +
** One-click mounting of ISO, CUE, NRG, MDS/MDF, CCD, IMG images.
  +
** Supports data, DVD-video and BD-video images.
  +
  +
====Virtual CloneDrive====
  +
  +
* https://www.redfox.bz/virtual-clonedrive.html
  +
* Desc. : works and behaves just like a physical CD/DVD/Blu-ray drive
  +
* License :
  +
  +
* Features
  +
** Supports common image formats such as ISO, BIN, CCD
  +
** Virtual CloneDrive is freeware, you may use it at no cost.
  +
  +
----
   
 
===misc===
 
===misc===
Line 3,820: Line 6,483:
 
** [https://github.com/showcases/devops-tools?s=stars GitHub/Showcases/DevOps tools]
 
** [https://github.com/showcases/devops-tools?s=stars GitHub/Showcases/DevOps tools]
 
** [https://github.com/showcases/emoji?s=stars GitHub/Showcases/Emoji]
 
** [https://github.com/showcases/emoji?s=stars GitHub/Showcases/Emoji]
  +
  +
* [https://survey.stackoverflow.co/ Stack Overflow Annual Developer Survey]
  +
** [https://survey.stackoverflow.co/2023/#technology 2023 Most popular technologies]
  +
** [https://survey.stackoverflow.co/2022#technology 2022 Most popular technologies]
  +
  +
===Code Assessment Platforms===
  +
  +
* [https://codesubmit.io/hackerrank-alternative The Best HackerRank Alternatives (2021)]
  +
  +
{| class='wikitable'
  +
! Platform !! Description !! Remarks
  +
|-
  +
| [https://www.hackerrank.com/ HackerRank] || Matching developers with great companies. ||
  +
|-
  +
| [https://www.codility.com/ Codility] || Remote tech hiring, everywhere ||
  +
|-
  +
| [https://coderbyte.com/ Coderbyte] || the #1 website for technical interview prep and coding challenges ||
  +
|-
  +
| [https://leetcode.com/ LeetCode] || the best platform to help you enhance your skills, expand your knowledge and prepare for technical interviews. ||
  +
|}
  +
  +
===Font===
  +
  +
* [http://www.kopus.org/Biz/electronic/Font.aspx KoPubWorld Font] (Korean)
  +
  +
* [https://about.easil.com/support/serif-vs-sans-serif/ SERIF VS SANS SERIF FONTS]
  +
** [https://www.ldoceonline.com/dictionary/serif serif] : ''n''. a short flat line at the top or bottom of some printed letters
  +
** [https://www.ldoceonline.com/dictionary/sans sans] : ''prep''. without – usually used humorously
  +
** Serif fonts : Times New Roman, Georgia, Palatino and Garamond.
  +
  +
* [https://en.wikipedia.org/wiki/List_of_monospaced_typefaces List of monospaced typefaces]
  +
** Consolas, Courier, DejaVu Sans Mono, Fixedsys, Lucida Console, Monaco,
  +
* [https://www.typewolf.com/top-10-monospaced-fonts Top 10 Most Popular Monospaced Fonts]
   
 
===Graphics Asset===
 
===Graphics Asset===
Line 3,826: Line 6,522:
   
 
{| class='wikitable'
 
{| class='wikitable'
! Collection !! Description !! Remarks
+
! Collection !! Description !! Adopted by !! Remarks
  +
|-
  +
| [https://github.com/gilbarbara/logos SVG Logos]
  +
| A curated collection of SVG logos for developers/DevOps/geeks
  +
| PlantUML, Slidev || [https://svgporn.com/ Catalog]
  +
|-
  +
| [https://icon-sets.iconify.design/oi/ Open Iconic] || || PlantUML, Creole ||
 
|-
 
|-
 
| [http://tango.freedesktop.org/ Tango Desktop Project]
 
| [http://tango.freedesktop.org/ 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. ||
+
| 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. || ||
 
|-
 
|-
 
| [http://www.famfamfam.com/lab/icons/silk/ Silk Icons]
 
| [http://www.famfamfam.com/lab/icons/silk/ Silk Icons]
| A smooth, free icon set, containing over 700 16-by-16 pixel icons in strokably-soft PNG format. ||
+
| A smooth, free icon set, containing over 700 16-by-16 pixel icons in strokably-soft PNG format. || ||
 
|-
 
|-
 
| [http://sourceforge.net/projects/liquidlnf/ Liquid Look And Feel]
 
| [http://sourceforge.net/projects/liquidlnf/ Liquid Look And Feel]
| Java2 Swing Look and Feel of Mosfet Liquid KDE 3.x theme. ||
+
| Java2 Swing Look and Feel of Mosfet Liquid KDE 3.x theme. || ||
 
|-
 
|-
 
| [http://www.oswd.org/ Open Source Web Design]
 
| [http://www.oswd.org/ Open Source Web Design]
| A site to download free web design templates and share yours with others. ||
+
| A site to download free web design templates and share yours with others. || ||
 
|-
 
|-
 
| [http://www.iconfinder.com/ IconFinder]
 
| [http://www.iconfinder.com/ IconFinder]
| provides high quality icons for webdesigners and developers in an easy and efficient way. ||
+
| provides high quality icons for webdesigners and developers in an easy and efficient way. || ||
 
|-
 
|-
 
| [https://openclipart.org/ Openclipart]
 
| [https://openclipart.org/ Openclipart]
| a community and collection of vector clip art that is free content || [https://en.wikipedia.org/wiki/Openclipart Openclipart](Wikipedia)
+
| a community and collection of vector clip art that is free content
  +
| || [https://en.wikipedia.org/wiki/Openclipart Openclipart](Wikipedia)
 
|-
 
|-
| [https://classroomclipart.com/ Classroom Clipart] || a great source for free clipart for not only for students, teachers and parents, but for everyone. ||
+
| [https://classroomclipart.com/ Classroom Clipart]
  +
| a great source for free clipart for not only for students, teachers and parents, but for everyone. || ||
 
|-
 
|-
 
| style='white-space:nowrap' | [https://cloud.google.com/icons/ SOLUTION ICONS FOR ARCHITECTURAL DIAGRAMS]
 
| style='white-space:nowrap' | [https://cloud.google.com/icons/ SOLUTION ICONS FOR ARCHITECTURAL DIAGRAMS]
| The official set of icons to build architectural diagrams of Google Cloud Platform ||
+
| The official set of icons to build architectural diagrams of Google Cloud Platform || ||
 
|-
 
|-
 
| [https://www.cisco.com/c/en/us/about/brand-center/network-topology-icons.html Cisco Network Topology Icons]
 
| [https://www.cisco.com/c/en/us/about/brand-center/network-topology-icons.html Cisco Network Topology Icons]
| Cisco icons are globally recognized and generally accepted as standard for network icon topologies. ||
+
| Cisco icons are globally recognized and generally accepted as standard for network icon topologies. || ||
 
|}
 
|}
   

Latest revision as of 08:24, 10 April 2024

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.