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 |
+ | {| class='wikitable' |
− | ! |
+ | ! 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 |
||
− | ===== |
+ | =====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:// |
+ | ** [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><u:<i>color</i>><i>text</i></u></code> || || |
||
+ | |- |
||
+ | | Wave Underlined Text || <code><w:<i>color</i>><i>text</i></w></code> || || |
||
+ | |- |
||
+ | | Striked Text || <code><s:<i>color</i>><i>text</i></s></code> || || |
||
+ | |- |
||
+ | | Foreground Color || <code><color:<i>color</i>><i>text</i></color></code> || || |
||
+ | |- |
||
+ | | Background Color || <code><back:<i>color</i>><i>text</i></back></code> || || |
||
+ | |- |
||
+ | | Font Size || <code><size:<i>n</i>><i>text</i></size></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> |
||
− | ==== |
+ | ====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/ |
+ | * [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 |
+ | <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 |
+ | <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 |
+ | {| 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 |
+ | {| class='wikitable' |
! Category !! Command !! Description !! Remarks |
! Category !! Command !! Description !! Remarks |
||
|- |
|- |
||
− | | Movement || < |
+ | | Movement || <code>h</code> || Move cursor '''left''' one character || |
|- |
|- |
||
− | | || < |
+ | | || <code>j</code> || Move cursor '''down''' one line || |
|- |
|- |
||
− | | || < |
+ | | || <code>k</code> || Move cursor '''up''' one line || |
|- |
|- |
||
− | | |
+ | | || <code>l</code> || Move cursor '''right''' one character || |
|- |
|- |
||
− | | || < |
+ | | || <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 || |
||
|- |
|- |
||
− | | || < |
+ | | || <code>$</code> || Move cursor to the '''end''' of current line || |
|- |
|- |
||
− | | |
+ | | || <code>b</code> || Move cursor to the '''start''' of current or preceding word || |
|- |
|- |
||
− | | || < |
+ | | || <code>w</code> || Move cursor to the '''start''' of next word || |
|- |
|- |
||
− | | || < |
+ | | || <code>gg</code> || Move to the '''first line''' || |
|- |
|- |
||
− | | |
+ | | || <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 |
+ | <syntaxhighlight lang='text' enclose='div'> |
: addr command |
: addr command |
||
Line 425: | Line 1,521: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
− | {| class='wikitable |
+ | {| 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:// |
+ | * [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:// |
+ | * [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====== |
+ | |||
+ | * [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. |
+ | * 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 |
||
− | ===== |
+ | =====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 |
+ | {| 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 |
+ | {| 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 |
|
− | <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/ |
||
− | + | 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', |
+ | 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]] |
+ | * >> [[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]] |
+ | * >> [[On Ant]] |
====Gradle==== |
====Gradle==== |
||
Line 1,114: | Line 2,994: | ||
* Source : |
* Source : |
||
− | ===== |
+ | =====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 |
+ | | <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 |
+ | {| 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 |
+ | <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/ |
+ | * [https://www.openssl.org/docs/manpages.html manpages] |
− | {| class='wikitable |
+ | {| class='wikitable' |
! Command !! Description !! Remarks |
! Command !! Description !! Remarks |
||
|- |
|- |
||
− | | [https://www.openssl.org/docs/man1.1. |
+ | | [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. |
+ | | [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. |
+ | | [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. |
+ | | [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 |
+ | <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 |
+ | <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> |
+ | | 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 |
+ | <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 |
+ | <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' |
+ | {| 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 |
+ | {| 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' |
+ | {| 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' |
+ | <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 |
+ | <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' |
+ | <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' |
+ | {| 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' |
+ | <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' |
+ | <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 |
+ | <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 |
+ | <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 |
+ | <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 |
+ | <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' |
+ | <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 |
+ | {| 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 |
+ | <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=== |
||
* >> [[On Monitoring|On Monitoring]] |
* >> [[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 => 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 |
||
+ | |||
+ | * >> [[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>&</code>) || <code>&amp;</code> || |
||
+ | |- |
||
+ | | || Less-Than Sign (<code><</code>) || <code>&lt;</code> || |
||
+ | |- |
||
+ | | || Greater-Than Sign (<code>></code>) || <code>&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 |
+ | ====AVG==== |
− | * https://www.avg.com/ |
+ | * 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> > <code>Conditional</code> > <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 || |
||
|- |
|- |
||
− | | |
+ | | || <code>ISTEXT(''value'')</code> || Returns TRUE if the cell contents refer to text || |
|- |
|- |
||
− | | |
+ | | || <code>ISNUMBER(''value'')</code> || Returns TRUE if the value refers to a number || |
|- |
|- |
||
− | | |
+ | | || <code>ISEVEN(''value'')</code> || Returns TRUE if the value is an even integer, or FALSE if the value is odd || |
|} |
|} |
||
* '''Samples''' |
* '''Samples''' |
||
− | <syntaxhighlight lang=' |
+ | <syntaxhighlight lang='java' enclose='div'> |
− | + | 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> |
||
− | ==== |
+ | ======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> > <code>Arrange</code> > <code>Rotate</code> > <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> > <code>Insert Shapes</code> > <code>Edit Shape</code> > <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> > <code>Dockable Dialogs</code> > <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> > <code>Dockable Dialogs</code> > <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 |
+ | | 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] |
+ | | [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
- Why is the SMACK stack all the rage lately? (November 20, 2015)
- Data processing platforms architectures with SMACK: Spark, Mesos, Akka, Cassandra and Kafka (16 SEPTEMBER 2015)
- Streaming Analytics with Spark, Kafka, Cassandra and Akka (Oct 31, 2015)
- 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
- http://www.ros.org/
- Desc. : a flexible framework for writing robot software.
- License :
Frameworks
Networking
Vert.x
- http://vertx.io/
- Desc. : a tool-kit for building reactive applications on the JVM.
- License :
- Sources : https://github.com/eclipse/vert.x
- Readings
Testing
Selenium
- http://docs.seleniumhq.org/
- Desc. : automates browsers
- License : Apache License, Version 2.0
- Readings
- Official documentation : http://docs.seleniumhq.org/docs/
- Java API
XMLUnit
- http://xmlunit.sourceforge.net/
- Desc. : JUnit and NUnit testing for XML
Mobile
Sencha Touch
- http://www.sencha.com/products/touch/
- Desc. : a high-performance HTML5 mobile application framework
- License : GPLv3 or commercial
- Readings
Libraries
XML
EXSLT
- http://exslt.org/
- Desc. : a community initiative to provide extensions to XSLT.
- License : ?
Jing
- https://code.google.com/p/jing-trang/
- Desc. : an application for validating an XML document against a RELAX NG schema, in either the XML or the compact syntax.
- License : New BSD License
- Readings
WSDL viewer
- https://code.google.com/p/wsdl-viewer/
- Desc. : transforms the WSDL into HTML.
- License : New BSD License
Networking
gRPC
- https://grpc.io/
- Desc. : A high performance, open-source universal RPC framework
- License : Apache License 2.0
- Written in :
- Sources : https://github.com/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
- https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
- Desc. : a set of libraries designed to support cross-platform development of security-enabled client and server applications.
- License : MPL
- Sources : https://github.com/nss-dev/nss
JSS
- https://dogtagpki.github.io/jss/
- Desc. : a Java interface to NSS.
- License : MPL
- Sources : https://github.com/dogtagpki/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
- http://ckeditor.com/
- Desc. : a text editor to be used inside web pages.
- License : GPL, LGPL, MPL
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
- https://code.visualstudio.com/
- Desc. :
- License : MIT license
- Sources : https://github.com/Microsoft/vscode/
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
- CSpell Configuration
cspell.json
,.cspell.json
,cspell.yaml
,cspell.yml
, ...
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
- Inline Document Settings
disable
,enable
,words
,ignore
,ignoreRegExp
,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
- Workspace settings (
.vscode/settings.json
)
{
"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"
]
}
- cSpell settings (
.vscode/cspell.json
)
{
"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
- Working with JavaScript
- JavaScript in Visual Studio Code
- JavaScript Language Service in Visual Studio (3 Aug 2021)
- How to change indentation in Visual Studio Code?
"editor.tabSize": 2, "editor.detectIndentation": false
Rust with VS Code
C/C++ with VS Code
Atom
- https://atom.io/
- Desc. : a text editor that's modern, approachable, yet hackable to the core
- License : MIT
- Sources : https://github.com/atom/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
- 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
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
- https://plantuml.com/
- Desc. : Generate UML diagram from textual description
- License :
- Sources : https://github.com/plantuml/plantuml
References
- PlantUML (Wikipedia)
- PlantUML Language Reference Guide
- PlantUML Language Specification
- Ashley’s PlantUML Documentation
- The Hitchhiker’s Guide to PlantUML
- 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
- Is it possible to comment out lines of diagram syntax?(Oct 25, 2013)
- single line : ', multi line : /' ... '/
- How to include classes from another Plantuml file into a class diagram? (May 10, 2021)
!include diagram1!foo
- 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
@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
- https://www.umlet.com/
- Desc. : Free UML Tool for Fast UML Diagrams
- License : GPL-3.0
- Sources : https://github.com/umlet/umlet
UMLGraph
- https://www.spinellis.gr/umlgraph/
- Desc. : allows the declarative specification and drawing of UML class and sequence diagrams.
- License : BSD license
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
- http://www.umldesigner.org/
- Desc. : graphical tooling to edit and visualize UML models
- License :
Modelio
- https://www.modelio.org/
- Desc. : The open source extensible modeling environment supporting: UML, BPMN, ArchiMate, SysML, ...
- License : GPLv3 + APL
- Sources : http://forge.modelio.org/projects
yEd
- https://www.yworks.com/products/yed
- Desc. : a powerful desktop application that can be used to quickly and effectively generate high-quality diagrams.
- License : ?
- 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
- How can I achieve different text stylings within one label?
- <html>...</html>
- Why yEd doesn't support draw a straight line ? (Oct 30, 2017)
- does not supported edges without nodes but ...
- lines in charts overlapping (Sep 19, 2013)
- ["File" > "Preferences" > "Display" > "Bridge Style", "Bridge Scaling", "Crossing Determination Mode"]
- How can I wrap the text in one node, in order to prevent the graph becoming too wide? (Oct 28, 2011)
- Size: Fit Node Size, Configuration: Cropping
Mermaid
- https://mermaid-js.github.io/mermaid/
- Desc. : a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams.
- License : MIT license
- Sources : https://github.com/mermaid-js/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
- 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
SQL Developer Data Modeler
- http://www.oracle.com/technetwork/developer-tools/datamodeler/overview/
- Desc. : create, browse and edit, logical, relational, physical, multi-dimensional, and data type models.
- License :
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
- How to export image of relational model in Oracle SQL Data Modeler? (Oct 9 '13)
[File > Print Diagram > To Image File]
- Configuring Display of Model Relationships in Oracle SQL Developer Data Modeler (January 31, 2013)
- font, color, ...
- Arcs
- Defining constraints for a Domain
- %column% is NOT NULL
SQL Power Architect
- http://www.sqlpower.ca/page/architect
- Desc. : Data Modeling & Profiling Tool
- License :
- Features supported or not supported
Feature | Supporting | Remarks |
---|---|---|
Defining AK(Alternative Key) | Yes | |
Defining View | No | |
Defining FK from AK | No |
DbSchema
- https://dbschema.com/
- Desc. : a diagram-oriented database designer, with integrated query and data tools.
- License : Free for Community Edition, Commercial for Pro Edition
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
- Basic vi Commands
- VI(Visual) Editor Reference manual
- Vi Cheat Sheet
- vi Manual by Tony Chen
- Split screen in vi (February 17th, 2009)
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
- http://swagger.io/
- Desc. : a powerful open source framework backed by a large ecosystem of tools that helps you design, build, document, and consume your RESTful APIs
- License :
- Sources : https://github.com/swagger-api
- Maven artifacts :
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
- OpenAPI Specification Ver. 3.0.2
- OpenAPI 3.0.x JSON Schema
- OpenAPI Specification Ver. 2.0 (fka Swagger RESTful API Documentation Specification)
- OpenAPI Spec Schema 2.0
- Swagger 2.X Getting started
- Swagger Core 2.X produces OpenApi 3.0 definition files.
- Swagger 2.X Integration and Configuration
- Swagger 2.x Annotations
- Swagger 1.5.x Annotations
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
- 2.x
- Swagger CodeGen 2.x Documentation
- swagger-codegen-maven-plugin
- Swagger CodeGen 2.x Generators
SwaggerGenerator
,StaticHtml2Generator
,JMeterCodegen
, ...
Readings
- Writing OpenAPI (Swagger) Specification Tutorial
- How to split a Swagger spec into smaller files (Jul 16, 2015)
- Generating Swagger spec and enabling swagger-ui for REST based applications (Jun 2, 2016)
- Using Javadocs to generate Swagger document
- Spring Rest API with Swagger – Fine-tuning exposed documentation (23.11.2014)
- Order of properties in swagger definitions changes from run to run (Aug 13, 2018)
@JsonPropertyOrder
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
- Readings
- Swagger2Markup 1.3.1 Documentation
- Create HTML documentation from Swagger via Maven (Jún 29, 2016)
- using both Swagger2Markup Maven Plugin and Asciidoctor Maven Plugin
- Asciidoctor Maven Plugin
- Having fun with REST API documentation (Sep 22, 2015)
- using both Swagger2Markup Maven Plugin and Asciidoctor Maven Plugin
org.asciidoctor.Attributes
source
- Swagger2Markup Maven template project
SpringFox
- https://springfox.github.io/springfox/
- Desc. : Automated JSON API documentation for API's built with Spring
- License :
- Sources : https://github.com/springfox/springfox
- Maven artifacts : https://mvnrepository.com/artifact/io.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)
- SWAGGER 2 INTEGRATION WITH SPRING REST (April 7, 2016)
- JSR-303 support: @NotNull ignored when @ApiModelProperty is present (21 Mar 2016)
- Spring annotations (@RequestMapping, @RequestParam) -> JSR-303 plugins (@NotNull) -> Swagger annotations (@ApiModelProperty)
Samples
springdoc-openapi
- https://springdoc.org/
- Desc. : Library for OpenAPI 3 with spring-boot
- License :
- Sources : https://github.com/springdoc/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
- https://openapi-generator.tech/
- Desc. : Generate clients, servers, and documentation from OpenAPI 2.0/3.x documents
- License :
- Sources : https://github.com/OpenAPITools
Readings
ReDoc
- https://redocly.github.io/redoc/
- Desc. : OpenAPI/Swagger-generated API Reference Documentation
- License : MIT License
- Written in : JavaScript
- Sources : https://github.com/Redocly/redoc
- Packages : https://www.npmjs.com/package/redoc-cli
Configuration
- Configuration file :
redocly.yaml
,.redocly.yaml
- Configuration options for API docs :
theme.openapi
schema - Theming options for API docs :
theme.openapi.theme
schema
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
- Readings
Sphinx
- http://sphinx-doc.org/
- Desc. :Python documentation generator
- License : BSD license
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
- Readings
Asciidoctor
- https://asciidoctor.org/
- Desc. : A fast text processor & publishing toolchain for converting AsciiDoc to HTML5, DocBook & more.
jax-doclets
- http://fromage.github.io/jax-doclets/
- Desc. : contains doclets for modern Java APIs such as JAXB, JAX-RS and JPA.
- License : LGPL
- Maven artifacts : com.lunatech.jax-doclets » doclets
- Sources : https://github.com/FroMage/jax-doclets
- Readings
xs3p
- http://sourceforge.net/projects/xs3p/
- Desc. : an XSLT stylesheet that will generate an XHTML document from an XSD schema.
- License : DSTC Public License (DPL)
- Maven artifacts
- Sources
- Readings
Enunciate
- http://enunciate.codehaus.org/
- Desc. : an engine for dramatically enhancing your Java Web service API.
- License : Apache License Version 2.0
MireDot
- http://www.miredot.com/
- Desc. : REST API documentation generator for Java that generates beautiful interactive documentation with minimal configuration effort.
- License : complex -> http://www.miredot.com/price/
Publication
- Awesome Book Authoring
- A jekyll framework for publishing book in multiple format (HTML, PDF, epub)
- Pandoc book template
- Alternatives to LaTeX(Jun 20 '13)
Medium
- Writing & editing
- Symbols, Shapes, and Special Characters on Medium
- 5 Tips for Embedding Tables in Your Medium Posts (Sep 2, 2017)
- Undocumented Medium Formatting Tricks (Sep 25, 2017)
- Image Links (Aug 8, 2014) : Control + K, Command + K
Category | 3rd-party |
---|---|
Code Sample | GitHub Gists |
Table | Airtable |
Equations | embed.fun |
GitBook
- GitBook Configuration (
book.json
) - GitBook v3.2.2 Documentation
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
- 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
mdBook
- https://github.com/rust-lang/mdBook
- Desc. : a utility to create modern online books from Markdown files.
- License :
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
- 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.
OS | Location | Remarks |
---|---|---|
Windows | %AppData%\MySQL\Workbench\ |
|
macOS | ~/Library/Application Support/MySQL/Workbench/ |
|
Linux | ~/.mysql/workbench/ |
- How can I change column order through mysql workbench? (Dec 27 '17) : mouse right-click popup menu
- 4 database documentation / data dictionary generator plugins for MySQL Workbench (5th August, 2018)
- What do the mysql workbench column icons mean (May 28, 2012)
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
- http://www-01.ibm.com/software/data/optim/data-studio/
- Desc. : Provides database developers and DBAs an integrated, modular environment for productive administration of DB2 for Linux, UNIX and Windows.
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
- http://sqlline.sourceforge.net/
- Desc. : a pure-Java console based utility for connecting to relational databases and executing SQL commands.
Robomongo
- http://robomongo.org/
- Desc. : Shell-centric cross-platform MongoDB management tool
Software License Analysis
FOSSology
- http://www.fossology.org/projects/fossology
- Desc. : scanning files for licenses and copyrights.
- License : GPL version 2
Ninka
- http://ninka.turingmachine.org/
- Desc. : a lightweight license identification tool for source code
- License : Affero General Public License version 3.0
OSS Discovery
- http://ossdiscovery.sourceforge.net/
- Desc. : finds the open source software embedded in applications and installed on computers.
- License : GNU Affero Public License v3
System Diagnosis/Monitoring
nmon
- http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmon
- Desc. : free tool giving you a huge amount of important performance information in one go.
top
- http://www.unixtop.org/
- Desc. : a UNIX utility that provides a rolling display of top cpu using processes.
- References
- Readings
- How To Use The Linux Top Command To Show Running Processes (February 08, 2017)
- How to use the Linux top command(June 3 2016)
- Why Process CPU % Usage larger than Total CPU Time(Jun 27 '11)
- Tips
- Remarkable commands
W
: Write-the-Configuration-Filef | F
: :Fields-ManagementH
: Threads-mode toggleI
: Irix/Solaris-Mode togglet
: Task/Cpu-States togglem
: Memory/Swap-Usage toggle1
: Single/Separate-Cpu-States togglec
: Command-Line/Program-Name toggleu | U
: Show-Specific-User-Onlyi
: Idle-Process toggle
- Remarkable commands
htop
- http://hisham.hm/htop/
- Desc. : an interactive process viewer
- License : General Public License, version 2 (GPL-2.0)
- Written in : C
- Sources : https://github.com/hishamhm/htop
Wireshark
- >> On Wireshark
iperf
- http://software.es.net/iperf/
- Desc. : a tool for active measurements of the maximum achievable bandwidth on IP networks.
- License : BSD
- Readings
Process Explorer
- https://technet.microsoft.com/en-us/library/bb896653.aspx
- Desc. : shows you information about which handles and DLLs processes have opened or loaded.
Process Monitor
- https://technet.microsoft.com/en-us/library/bb896645.aspx
- Desc. : an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity.
DebugView
- 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.
Testing
- Open Source Load Testing Tools: Which One Should You Use? (Sep 29 2018)
- Grinder, Gatling, Tsung, JMeter, Locust
- 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
- Free Jmeter Tutorial
- Using User Defined Variables
- Use request value from list of values in JMeter (Jun 14 '11)
- JMeter tips (JUL 11, 2005)
- Solved “java.net.BindException: Address already in use: connect” issue on Windows(November 23, 2011)
- Here’s What to Do to Combine Multiple JMeter Variables (May. 24th, 2016)
- HOW TO ADD THINK TIME BETWEEN REQUESTS IN JMETER (October 9, 2014)
- A Comprehensive Guide to Using JMeter Timers (Jul. 5th, 2015)
- How to get response message HTTP Request on Beanshell Jmeter (Nov 15 '16)
- Using
BeanShell PostProcessor
component underHTTP Request
sampler
- Using
Plugins
- Custom Plugins for Apache JMeter
- JMeter Plugins Manager
- JMeter WebSocket Samplers
- JMeter WebSocket Samplers - A Practical Guide (Nov. 16th, 2017)
- JMeter WebSocket Samplers - How to Use Config Elements and Assertions (Nov. 30th, 2017)
- Fragmentation
- 3 Basic Graphs
- 5 Additional Graphs
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
- Install GraalVM
- Check Java versions supported by JMeter to choose proper version of GraalVM.
- Install Graal.js using GraalVM Updater
- Change
JAVA_HOME
injmeter
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" "$@"
- Check full command-line using
ps
$ ps auxww | grep jmeter
...
k6
- https://github.com/grafana/k6
- Modern load testing for developers and testers in the DevOps era.
- License : AGPL-3.0
- Written in : Go
Command-line
Command | Description | Remarks |
---|---|---|
archive |
||
inspect |
||
run |
||
pause |
||
resume |
||
scale |
||
status |
||
stats |
Readings
- Template to use ES6 with k6
- a template repository showing how to use
webpack
,babel
andcorejs
to bundle a test project dependent on Node modules into a single test script which can be run by k6.
- a template repository showing how to use
- Template to use TypeScript with k6
Artillery
- https://github.com/artilleryio/artillery
- a modern open-source performance testing toolkit for SRE and DevOps
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
- https://locust.io/
- an easy to use, scriptable and scalable performance testing tool.
ApacheBench
- https://httpd.apache.org/docs/2.4/en/programs/ab.html
- a single-threaded command line computer program for measuring the performance of HTTP web servers
- ApacheBench (on Wikipedia)
- Apache Bench Tutorial
- 7 Tips for Heavy Load Testing with Apache Bench (Sep 7, 2016)
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
- http://www.mozilla.org/projects/testopia/
- Desc. : A test case management extension for Bugzilla.
TestLink
- http://sourceforge.net/projects/testlink/
- Desc. : a web based Test Management tool.
- License : GPLv2
FitNesse
- http://fitnesse.org/
- Desc. : The fully integrated standalone wiki and acceptance testing framework.
CodePro Analytix
- https://developers.google.com/java-dev-tools/codepro/doc/
- Desc. : the premier Java software testing tool for Eclipse developers who are concerned about improving software quality and reducing developments costs and schedules.
- License :
Postman
- https://www.getpostman.com/
- Desc. : Build, test, and document your APIs faster.
- Sources
References
- Variables
- Variable Scopes : Global > Collection > Environment > Data > Local
- Dynamic Variables
$randomInt
,$randomCurrencyCode
, ...
- Manage environments
- Setting up an environment with variables
- Generate code snippets
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
- Set and view SSL certificates with Postman (5 Dec, 2017)
- How to use self signed certificat with Postman (Aug 4 '17)
- toggle off 'SSL certificate verification' setting
- “Could not get any response” response when using postman with subdomain (Dec 14 '17)
- The Postman Console (26 Aug, 2016)
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 ofsetTimeout()
'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
- https://github.com/postmanlabs/newman
- Desc. : a command-line collection runner for Postman
- License : Apache License 2.0
- Readings
- Meet Newman: a command line companion for Postman (12 May, 2014)
Fiddler
- https://www.telerik.com/fiddler
- Desc. : The free web debugging proxy for any browser, system or platform
- License :
- Written in :
- Sources
- 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
- Readings
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.
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
- http://maven.apache.org/
- Desc. : a software project management and comprehension tool.
- >> On 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
- Gradle properties
- System properties
gradle.wrapperUser
,gradle.wrapperPassword
,gradle.user.home
- Environment variables
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 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. | ||
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
- Java Library Plugin
- Java Library Plugin Configurations
- implementation, compileOnly, runtimeOnly, ...
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
- Aggregate Javadoc in multiproject Gradle builds (February 25, 2016)
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
- Valid RPM GROUPS
- How can I remove a package? Is it going to remove any dependencies?
- Test the installation or upgrade process
- List files in an RPM package
- Using yum with a Proxy Server
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
- http://yum.baseurl.org/
- Desc. : an automatic updater and package installer/remover for rpm systems.
- Readings
- Fedora Yum Guide
- Managing Packages With Yum
yum list, yum install, yum remove, yum update, yum check-update, yum info, yum search, yum provides, yum clean
- Basic Yum Commands and how to use them
- Yum groups and repositories
yum grouplist, yum groupinfo, yum groupinstall, yum groupremove, yum groupupdate
- How To Download a RPM Package Using yum Command Without Installing On Linux (JULY 9, 2008)
- Listing Files Contained in a Package
- CentOS / RHEL: List All Configured Repositories (FEBRUARY 25, 2013)
- Adding, Enabling, and Disabling a Yum Repository
- yum-config-manager
- Using RPMforge
- Yum install maven : Yes you can ! (August 21, 2013)
- 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
- Readings
Homebrew
- >> On 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
- Readings
- RubyGems at Wikipedia
- RubuGems official guide
- RubyGems Basics
- Command Reference
gem install
,gem list
Bundler
- http://bundler.io/
- Desc. : provides a consistent environment for Ruby projects by tracking and installing the exact gems and versions that are needed
- License : MIT License
- Sources : https://github.com/bundler/bundler
- Readings
- Bundler official documentation
Gemfile
: A format for describing gem dependencies for Ruby programs
Frontend
MySchedule
- http://code.google.com/p/myschedule/
- Desc. : a web application for managing Quartz Schedulers.
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
config
- OpenSSL CONF library configuration filesx509v3_config
- X509 V3 certificate extension configuration format- Basic Constraints, Key Usage, Extended Key Usage
- Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile / Certificate Extensions / Standard Extensions
- Authority Key Identifier, Subject Key Identifier, Key Usage, Certificate Policies, Policy Mappings, Subject Alternative Name, Issuer Alternative Name, Subject Directory Attributes, Basic Constraints, Name Constraints, Policy Constraints, Extended Key Usage, CRL Distribution Points ...
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
- OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs (September 12, 2014)
- OpenSSL (on Ubuntu Help)
- An Introduction to the OpenSSL command line tool
- OpenSSL Command-Line HOWTO
- A 6 Part Introductory OpenSSL Tutorial (APRIL 23, 2018)
- OpenSSL commands to check and verify your SSL certificate, key and CSR (January 17, 2018)
- OpenSSL PKI Tutorial v1.1
- Create and operate Public Key Infrastructures with OpenSSL.
- How to create my own certificate chain? (Mar 31 '10)
- 9 OpenSSL Commands To Keep Handy (May 12, 2014)
- How do I display the contents of a SSL certificate?
- Create a .pfx/.p12 certificate file using OpenSSL (June 19, 2015)
- Export a PKCS#12 file without an export password? (Dec 16 '14)
Basic Certificate Fields
Certificate Extensions
- What extensions and details are included in a SSL certificate?
- Key usage extensions and extended key usage
- TLS/SSL Certificate - Key usage and encryption(May 26 '16)
- OpenSSL x509 Purpose flag “Any Purpose” What is this? (Feb 10 '10)
- Provide subjectAltName to openssl directly on command line (Dec 5 '14)
-addext
sinceopenssl
1.1.1
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
$ 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 :
- Readings
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.
- Readings
- PuTTY 0.68 User Manual
- How to make PuTTY settings persistent? (May 26 '09)
- Putty title changes after login (Nov 26 '12)
- [Terminal] -> [Features] -> [Disable remote-controlled window title changing]
- puTTY SSH connections dropping when on wifi instead of ethernet
- [Connection] -> [Enable TCP keepalives (SO_KEEPALIVE option)]
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
- http://www.9bis.net/kitty/
- Desc. : a fork from version 0.70 of PuTTY designed for the Microsoft Windows platform.
ConEmu
- http://conemu.github.io/
- Desc. : a Windows console emulator with tabs, which presents multiple consoles and simple GUI applications as one customizable GUI window with various features.
- License : BSD-3-Clause
- Sources : https://github.com/Maximus5/ConEmu
Readings
- Set up git bash to work with tabs on windows (Nov 25 '13)
- ConEmu.exe command line switches
- -LoadCfgFile, -SaveCfgFile
Poderosa
- http://poderosa.sourceforge.net/
- Desc. : a terminal emulator for .NET Framework environment
- Sources : https://github.com/poderosaproject/poderosa
- License : Apache License 2.0
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
- GNU Privacy Guard (GnuPG or GPG) (on Wikipedia)
- Pretty Good Privacy (PGP) (on Wikipedia)
HashiCorp Vault
- https://www.vaultproject.io/
- Desc. : A tool for secrets management, encryption as a service, and privileged access management
- License : Mozilla Public License 2.0
- Sources : https://github.com/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
- Using Vault to Secure Your Deployment Secrets (Sep 22, 2015)
- vault server -config=..., vault operator init
- Adopting HashiCorp Vault (JAN 15, 2019)
- Vault Identity
- How To Securely Manage Secrets with HashiCorp Vault on Ubuntu 16.04 (February 28, 2018)
- QUARKUS - WORKING WITH HASHICORP VAULT
- Keep your infrastructure keys safe with Vault (27/12/2018)
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
- Commandline :
Best Practices
- 5 best practices for secrets management (DEC 03, 2018)
- A root user can do anything within Vault. As such, it is highly recommended that you revoke any root tokens before running Vault in production.
- When a Vault server is first initialized, there always exists one root user. This user is used to do the initial configuration and setup of Vault. After configured, the initial root token should be revoked and more strictly controlled users and authentication should be used.
SoftHSM
- https://www.opendnssec.org/softhsm/
- Desc. : an implementation of a cryptographic store accessible through a PKCS #11 interface.
- License :
- Sources : https://github.com/opendnssec/SoftHSMv2
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 |
- Installation Guide SoftHSM2 in Windows (Dec 23, 2019)
- Show slot id after initialization (21 Jul 2017)
Nmap
- http://nmap.org/
- Desc. : a free and open source (license) utility for network discovery and security auditing.
References
- Nmap Reference Guide
- Nmap Scripting Engine
- Nmap Scripting Engine Command-line Arguments
- -sC, --script, --script-args, --script-args-file
- A Simple Guide to Nmap Usage
- -sT, -sS, -sA, ...
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
- Installing Nmap on Debian or Ubuntu using RPM package
- Nmap Tutorial: Common Commands
- What's the difference between -sS and -sT on nmap? (Dec 27 '14)
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
- https://cisofy.com/lynis/
- Desc. : a battle-tested security tool for systems running Linux, macOS, or Unix-based operating system.
- License : GNU General Public License v3.0
- Sources : https://github.com/CISOfy/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 |
- default.prf : default profile
- /var/log/lynis-report.dat
- How to Perform Security Audits With Lynis on Ubuntu 16.04 (April 28, 2017)
OpenSCAP
- https://www.open-scap.org/
- Desc. : a command line tool that allows users to load, scan, validate, edit, and export SCAP documents
- License :
- Sources : https://github.com/OpenSCAP/openscap
OSSEC
- https://www.ossec.net/
- Desc. : an Open Source Host-based Intrusion Detection System
- License :
- Sources
CrackLib
- https://github.com/cracklib/cracklib
- Desc. : A password-checking library
- License :
- Sources : https://github.com/cracklib/cracklib
- CrackLib-2.9.6
- Linux check passwords against a dictionary attack (December 20, 2006)
hashcat
- https://hashcat.net/hashcat/
- Desc. : advanced password recovery utility
- License :
chkrootkit
- http://www.chkrootkit.org/
- Desc. : a tool to locally check for signs of a rootkit
- License :
- 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
- http://www.graphviz.org/
- Desc. : open source graph visualization software.
- License : EPL
- DOT Language : Abstract grammar for defining Graphviz nodes, edges, graphs, subgraphs, and clusters.
- All Attributes
Element | Attribtues | Shapes | Remarks |
---|---|---|---|
Graph | Graph Attributes | ||
Node | Node Attributes | Node Shapes | |
Edge | Edge Attributes | Arrow Shapes |
- How to set default font, or default style in Graphviz's Dot language (Sep 24, 2021)
node [fontname="default-node-font"]
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
- http://sourceforge.net/projects/xsdvi/
- Desc. : transform W3C XML Schema instances into interactive diagrams in SVG format.
- License : GPLv2
Data Analysis
- Best 7 Business Intelligence Tools 2020: Round One, Fight!
- Knowi, Power BI, Metabase, Tableau, Looker, Google Data Studio, Sisense
- 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
- Configuring settings using environment variables
- Configuring the Metabase Application Database
- export MB_DB_TYPE=h2
- export MB_DB_FILE=/the/path/to/my/h2.db
- Configuring Logging Level
Cube
- http://square.github.com/cube/
- Desc. : a system for collecting timestamped events and deriving metrics.
- License : Apache License 2.0
ETL
Scriptella
- http://scriptella.javaforge.com/
- Desc. : An open source ETL (Extract-Transform-Load) and script execution tool written in Java.
Science
Maxima
- http://maxima.sourceforge.net/index.html
- Desc. : a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, sets, lists, vectors, matrices and tensors.
- License : GPLv2
- Sources : https://sourceforge.net/p/maxima/code/ci/master/tree/
SymPy
- https://www.sympy.org/en/
- Desc. : a Python library for symbolic mathematics.
- License : BSD
- Written in : Python
- Sources : https://github.com/sympy/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
- User Manual
VBoxManage
reference : VirtualBox CLI
- 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
- NAT
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
- Install Ubuntu on Oracle VirtualBox
- CentOS as a Guest OS in VirtualBox
- Install a CentOS 7 Minimal Virtual Machine with VirtualBox
- Using a raw host hard disk from a guest
- How to create and start VirtualBox VM without GUI (May 9, 2013)
- How to fix virtualbox's copy and paste to host-machine? (Sep 28 '11)
- $ killall VBoxClient; VBoxClient-all
- 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
- Fixing Command + Tab on Virtual Box (Mar 22, 2013)
- Disable [Input / Keyboard / Keyboard Settings / Auto Keyboard Capture]
- How to enable copy and paste in VirtualBox(November 8, 2017)
- [Devices / Shared Clipboard]
Networking
- VirtualBox Network Settings: Complete Guide (July 16, 2019)
- How to expose local loopback to (VirtualBox) VM connecting to host via NAT (VirtualBox NatNetwork) (May 4, 2014)
- 10.0.2.2
- Accessing your Virtualbox Guest from your Host OS : Host-only networks
Storage
- Four virtual disk formats every VDI admin needs to know
- Virtualbox shared folder permissions (Nov 4, 2014)
- Add yourself to the
vboxsf
group within the guest VM and then reboot.
- Add yourself to the
- How to make Guest OS follow symlinks from shared folder (Apr 11 '14)
VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1
Xen Project Hypervisor
- https://xenproject.org/
- Desc. : an open-source type-1 or baremetal hypervisor
- License :
- Sources
- Readings
Vagrant
- https://www.vagrantup.com/
- Desc. : Create and configure lightweight, reproducible, and portable development environments.
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
- How to Set Up a Local Linux Environment with Vagrant (Nov 16, 2016)
VirtualBox
- Step by Step: Creating a Virtual Machine on a Headless Server
- USING VAGRANT TO VIRTUALIZE MULTIPLE HARD DRIVES (AUGUST 24, 2016)
Packer
- https://www.packer.io/
- Desc. : automates the creation of any type of machine image.
References
Component | Description | Remarks |
---|---|---|
Builders / VirtualBox / ISO | create VirtualBox virtual machines and export them in the OVF format, starting from an ISO image. |
Readings
- Building VM image with Packer (May 17, 2017)
- What is a BSD or GNU style checksum file? (25 Jul 2017)
- Multiple Disks Virtual Box (9 May 2014)
DBMS
HSQLDB
- http://hsqldb.org/
- Desc. : the leading SQL relational database software written in Java.
- License : BSD License
- Maven artifacts
- hsqldb » hsqldb : 1.6.x ~ 1.8.x
- org.hsqldb : 2.0.x ~
- Source : http://sourceforge.net/p/hsqldb/svn/HEAD/tree/
- References
- HyperSQL 2.x User Guide
- HyperSQL 1.8 User Guide
- HyperSQL 2.x API
org.hsqldb.server.Server
API- shows command line options and format of
server.properties
file
- shows command line options and format of
- Readings
Apache Derby
- http://db.apache.org/derby/
- Desc. : an open source relational database implemented entirely in Java
- License : Apache License, Version 2.0
- Readings
J2EE Application Server
Jetty
- http://jetty.codehaus.org/
- Desc : provides an HTTP server, HTTP client, and javax.servlet container.
- License : http://www.eclipse.org/jetty/licenses.php
- Source
- Binaries
- Documentations
- Jetty Versions
- Jetty 9
- Jetty 7/8
- Jetty 6
- Articles
- Jetty 9
- Embedded Examples/Web Application with JSP
- Example: Embedded Jetty w/ JSP Support
- Using Spring to Configure Jetty
<bean id="server" name="Main" class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">
- Jetty Logging
- JMX
- How do you get embedded Jetty 9 to successfully resolve the JSTL URI?(Jul 16 '13)
- Jetty 7/8
- How to make Jetty dynamically load "static" pages
- Debugging with the Maven Jetty Plugin inside Eclipse
- Avoiding Jetty Locking Static Files(January 10, 2012)
- Jetty Cross Origin Filter (Nov 28 '11)
- Jetty 9
Tomcat
- http://tomcat.apache.org/
- Desc : an open source software implementation of the Java Servlet and JavaServer Pages technologies.
- License : Apache License version 2
- References
JBoss AS
- References
- Articles
- fundamental
- Startup parameter
- Enabling remote access to JBoss 4.2
- Class loading configuration
- Explains how-to setup class loading isolation of J2EE modules using <loader-repository> element in
jboss-app.xml
,jboss.xml
orjboss-web
file.
- Explains how-to setup class loading isolation of J2EE modules using <loader-repository> element in
- Configuring the Deployment Scanner in conf/jboss-service.xml
- JBoss deployment directory configuration
- Adding a custom deploy folder
- data access
- security
- networking
- programming
- fundamental
WildFly
- References
- Wildfly 10.0.0.Final Model Reference
- WildFly 10 Documentation
- WildFly Quick Starts : provide small, specific, working examples that can be used as a reference for your own project
- WildFly 10 CLI Recipes
- Command line parameters
- command-line parameters of
$JBOSS_HOME/bin/domain.sh
and$JBOSS_HOME/bin/standalone.sh
- command-line parameters of
- Readings
- WildFly 10 Deployment Scanner configuration
- Useful JBoss and WildFly Command Line Parameters, System Properties and Environment Variables (Jan 31st, 2015)
- Adding WildFly User -
add-user.sh
- Connecting VisualVM or JConsole to Wildfly 10 (2016. 5. 20)
service:jmx:http-remoting-jmx://hostname:9990
- Monitoring WildFly using VisualVM (04 July 2014)
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
- http://openejb.apache.org/
- Desc : an all-Apache Java EE 6 Web Profile certified stack where Tomcat is top dog.
OpenEJB
- http://openejb.codehaus.org/
- Desc : an open source, modular, configurable, and extendable EJB Container System and EJB Server.
- License :
Application Server
Apache HTTP Server
- References
- Apache 2.4 Core Features
- Directives
- Apache Authentication via HTTP Basic or Digest
- How can I check which version of apache is installed on a Debian machine? (Nov 14 '08)
- How do I find the version of Apache running without access to the command line? (Oct 3 '08)
- Apache2: 'AH01630: client denied by server configuration' (Aug 23 '13)
- How To Configure Logging And Log Rotation In Apache On An Ubuntu VPS (August 19, 2013)
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
- Understanding the Nginx Configuration File Structure and Configuration Contexts (November 19, 2014)
- Nginx passes Apache as Web server of choice among top sites(May 27, 2014)
- Nginx overtakes Microsoft as No. 2 Web server(Jan 4, 2012)
- Tuning NGINX for Performance (October 10, 2014)
- NGINX Tuning For Best Performance
- How to set nginx max open files? (Jan 8 '15)
- LimitNOFILE=65536
Proxy
- NGINX as a WebSocket Proxy (May 16, 2014)
- How to use NGINX as forward proxy for any requested location? (Sep 5 '17)
- Lets Talk About Proxies, Pt. 2: Nginx as a Forward HTTP Proxy (November 3, 2015)
Load Balancer
mongoose
- https://github.com/cesanta/mongoose
- Desc. : Embedded web server for C/C++
- License : GPL v2
ZooKeeper
- http://zookeeper.apache.org/
- Desc. : an open-source server which enables highly reliable distributed coordination.
- License : Apache License
- Written in : Java
- Sources
- master : https://github.com/apache/zookeeper
- release 3.3.6 : https://github.com/apache/zookeeper/tree/release-3.3.6
- Maven artifacts :
org.apache.zookeeper » zookeeper
- References
- Readings
- ZooKeeper JMX
- Running Zooinspector
- How to Run ZooInspector(31.5.13)
- Using Maven
- Install and start Zookeeper server on Windows(August 12, 2014)
Proxy Server
HAProxy
- >> On HAProxy
Varnish Cache
- https://varnish-cache.org/
- Desc. : the high-performance HTTP accelerator
- License :
- Sources : https://github.com/varnishcache/varnish-cache
Squid
- http://www.squid-cache.org/
- Desc. : a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more
- License :
- Sources :
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
- (Squid) forward Proxy for Internet Access Control and Visibility (October 9, 2017)
- Setup Squid Forward Proxy (25/09/2018)
- why squid listen on high udp port number (February 17, 2012)
Networking
OpenSSH
- http://www.openssh.org/
- Desc. : a FREE version of the SSH connectivity tools that technical users of the Internet rely on.
References
- OpenSSH Manual Pages
- ssh, sshd, ssh_config, sshd_config, ssh-agent, sftp, scp, ssh-keygen
- Documentation for OpenSSH on Fedora 17
- Documentation for OpenSSH on CentOS 5.2
- OpenSSH on Ubuntu 16.04
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
- An OpenSSH Configuration
- SSH CONFIG FILE : OpenSSH client configuration
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
- SSH Essentials: Working with SSH Servers, Clients, and Keys (October 16, 2014)
- OpenSSH Key Management, Part 1 - Understanding RSA/DSA Authentication
- OpenSSH Key Management, Part 2 - Introducing
ssh-agent
andkeychain
- OpenSSH Key Management, Part 3 - Agent Forwarding
- Improving the security of your SSH private key files
- How to configure and use OpenSSH on CentOS 7 (JULY 13, 2016)
- OpenSSH security and hardening
- How to create a restricted SSH user for port forwarding? (Jun 10 '11)
Match User limited-user
AllowTcpForwarding yes
PermitOpen 192.168.1.101:22
ForceCommand echo 'This account can only be used for ...'
- Permissions on private key in .ssh folder? (Nov 26 '10)
- Best way to use multiple SSH private keys on one client (Mar 10 '10)
- How to manage multiple SSH key pairs (August 30, 2019)
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
- Vyatta 3.0 Tutorial
- Example: Configuring a Basic Set of Static Routes for Connecting to Stub Networks (31-Aug-17)
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
- https://openvpn.net/
- Desc. : an open source VPN daemon
- License :
- Sources : https://github.com/OpenVPN/openvpn
Security
Dogtag PKI
- https://www.dogtagpki.org/
- Desc. : an enterprise-class open source Certificate Authority (CA)
- License :
- Sources : https://github.com/dogtagpki/pki
OpenXPKI
- http://www.openxpki.org/
- Desc. : an enterprise-grade PKI/Trustcenter software
- License :
- Sources : https://github.com/openxpki/openxpki
EJBCA
- https://www.ejbca.org/
- Desc. : a PKI Certificate Authority software, built using Java (JEE) technology
- License :
- Sources :
Boulder
- https://github.com/letsencrypt/boulder/
- Desc. : an implementation of an ACME-based CA
- License :
- Written-in : Go
- Sources : https://github.com/letsencrypt/boulder/
Media Streaming Server
LIVE555 Media Server
- http://www.live555.com/mediaServer/
- Desc. : http://www.live555.com/mediaServer/
- License : LGPL
- Sources :
Red5
- https://github.com/Red5
- Desc. : an Open Source Flash Server written in Java
- License : Apache License 2.0
- Sources : https://github.com/Red5
- Maven artifacts : org.red5
- References
- Packages and Classes
Constants
- includes constants for RTMP packet types and shared objects
RTMPClient extends BaseRTMPClientHandler
BaseRTMPClientHandler extends BaseRTMPHandler implements IRTMPClient
BaseRTMPHandler implements IRTMPHandler, Constants, StatusCodes
RTMPConnection
Channel
org.red5.server.jmx.mxbeans
packages- Events
Aggreate.java
source- Aggreation of video data and audio data
- Built-in Streams
AbstractClientStream
ClientBroadcastStream.java
- Mandatory sample for real-world stream implementation
- Note on
ClientBroadcastStreamMXBean
,getCodecInfo()
,metaData
and call ofVideoCodecFactory.getVideoCodec
.
- Readings
- How to format Adobe Flash RTMP URLs(10-31-2014)
- How to record RTMP flash video streams using Red5(2009-04-04)
- How to extract snapsot image from RTMP stream’s videodata in Red5 App
- Using RTMP Streaming
- RTMP protocol and extract RTMP video streams H264 video files(2014-02-02)
- Writing a Red5 Java Web App to Handle RTMP Streams(2012-12-04)
- Extract frames as images from an RTMP stream in real-time(Feb 2 '14)
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
- Classification of NoSQL
- Distributed cache
- Java Caches: Ehcache, Hazelcast, Infinispan
- A comparative study of distributed caches (August 28, 2015)
- Memcached, Redis, Hazelcast
- Comparing Distributed Caching Frameworks (Apr 6, 2015)
- Hazelcast, Memcached, Redis
- From distributed caches to in-memory data grids (May 20, 2012)
Redis
- http://redis.io/
- Desc : an open-source, networked, in-memory, key-value data store with optional durability.
- License : BSD
References
- An introduction to Redis data types and abstractions
- Data types
- Redis configuration
- Redis configuration file example
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
- Indexing with Redis (AUGUST 10, 2017)
- Secondary indexing with Redis
- Indexing Patterns
- The Little Redis Book
- Example of storing nested data structures in redis
- How to access Redis log file (May 2 '13)
- Redis-server - FATAL CONFIG FILE ERROR - Filepath Space problem(May 18 '11)
- Use "
C:/Program Files (x86)/My Application/log/redis.log
" instead of "C:\Program Files (x86)\My Application\log\redis.log
"
- Use "
- Redis configuration for standalone mode
- Connecting to Redis running in Docker Container from Host machine (Dec 29 '16)
Companions
lettuce
- https://github.com/mp911de/lettuce
- Desc. : Advanced Redis client for thread-safe sync, async, and reactive usage.
- License : Apache License 2.0
- Readings
Spring Data Redis
- http://projects.spring.io/spring-data-redis/
- Desc. : provides easy configuration and access to Redis from Spring applications.
embedded-redis
- https://github.com/kstyrc/embedded-redis
- Desc. : Redis embedded server for Java integration testing
- License : Apache License, Version 2.0
- Readings
Redis Commander
- http://joeferner.github.io/redis-commander/
- Desc. : Redis management tool written in node.js
- License :
- Sources : https://github.com/joeferner/redis-commander
FastoRedis
- http://fastoredis.com/
- Desc. : a cross-platform open source Redis management tool (i.e. Admin GUI)
- License : GPL
- Sources : https://github.com/fastogt/fastoredis
- Readings
MongoDB
- https://www.mongodb.org/
- Desc. : an open-source, document database designed for ease of development and scaling
- License : Apache License Version 2.0
- Sources : https://github.com/mongodb/mongo
References
Readings
CouchDB
- http://couchdb.apache.org/
- Desc. : open source database software that focuses on ease of use and having an architecture that "completely embraces the Web"
- License :
- Sources : https://github.com/apache/couchdb
- References
- Readings
- Erlang
inet
module > socket optionshttpd
/socket_options
- MochiWeb startup options
httpd
/server_options
name, ip, backlog, nodelay, acceptor_pool_size, ssl, profile_fun, link, recbuf
- CouchDB JIRA > Keep Alive connections with zero size attachments
- Erlang
Search Engine
Elasticsearch
- https://www.elastic.co/products/elasticsearch
- Desc. : Open Source, Distributed, RESTful Search Engine
- License :
- Sources : https://github.com/elastic/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
- Download
- References
- Version Control with Subversion 1.8 (draft)
- Version Control with Subversion 1.7
- Compatibility concerns
- Older clients and servers interoperate transparently with 1.7 servers and clients.
- Existing working copies created with Subversion 1.6 and earlier need to be upgraded before they can be used with a Subversion 1.7 client.
- Working Copy Metadata Storage Improvements
- Traversing Branches
- Compatibility concerns
- Version Control with Subversion 1.6
- Version Control with Subversion 1.5
- Version Control with Subversion 1.4
- Subversion runtime configuration
- Readings
- Using negative patterns for Subversion's svn:ignore property
- Set svn:ignore for multiple files from command line
- Migrating Subversion Repository Data Elsewhere
- Integrating Redmine with Subversion(October 1, 2012)
- Best way to link Redmine issue to SVN revision
- client configuration of Subvesion
- The location of client configuration files for subversion is dependent on operating system.
- Windows :
%USERPROFILE%\Application Data\Subversion\config
- Linux :
~/.subversion/config
- Windows :
- Configurable options
- The location of client configuration files for subversion is dependent on operating system.
- Per repository AuthzSVNAccessFile apache rule with a single apache config file or other shell script solution (Jan 7 2014)
- Add all unversioned files to SVN(Oct 21 '09)
- What is the correct way to restore a deleted file from SVN?(Jan 29 '09)
- How do I tell Subversion to treat a file as a binary file?(Sep 16 '08)
svn:mime-type = application/octet-stream
- How does Subversion handle binary files?
svn checkout
svn diff
svn update
- How do I avoid “svn: Out of Date:” problems? (May 2 '09)
- I'm trying to commit, but Subversion says my working copy is out of date ?
- Is it possible to always (force) overwrite local changes when updating from SVN? Ignore conflicts?(Sep 14 '10)
- update ignoring(overwriting) local change =
svn revert
+svn update
- update ignoring(overwriting) local change =
svn delete
- How do you remove Subversion control for a folder?(Sep 30 '08)
- Remarks on '
svn delete --keep-local
' and single.svn
directory per working copy feature of Subversion 1.7.
- Remarks on '
- How do you remove Subversion control for a folder?(Sep 30 '08)
- 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
- >> On Git
Team Foundation Version Control
- https://msdn.microsoft.com/en-us/library/ms181237.aspx
- Desc. : a centralized version control system.
- Readings
- Customize which files are ignored by version control
.tfignore
, recursive by default
- Customize which files are ignored by version control
Harvest
Repository Management Software
Artifactory
- http://sourceforge.net/projects/artifactory/
- Desc : Binary Repository Manager for Maven, Ivy, Gradle modules, etc.
- License : LGPLv3
Configuration Management Software
- Infrastructure as code (IaC)
- Comparison of open-source configuration management software
- Deployment Management Tools: Chef vs. Puppet vs. Ansible vs. SaltStack vs. Fabric (August 5, 2015)
Chef
- https://www.chef.io/
- Desc. : a powerful automation platform that transforms infrastructure into code
- License : Apache License 2.0
- References
Puppet
- https://puppet.com/
- Desc. :
- License :
- References
Ansible
- >> On Ansible
Fabric
- http://www.fabfile.org/
- Desc. : a Python library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks.
- License :
- Written in : Python
- Sources : https://github.com/fabric/fabric
- References
Companions
fabtools
- https://github.com/fabtools/fabtools
- Desc. : Tools for writing awesome Fabric files
- Readings
SaltStack
- https://saltstack.com/
- Desc. : Software to automate the management and configuration of any infrastructure or application at scale.
- Sources : https://github.com/saltstack/salt
- Readings
Terraform
- https://www.terraform.io/
- Desc. : a tool for building, changing, and versioning infrastructure safely and efficiently
- Written in : Go
- Sources : https://github.com/hashicorp/terraform
- Readings
Packer
- https://www.packer.io/
- Desc. : a tool for creating identical machine images for multiple platforms from a single source configuration
- Written in : Go
- Sources : https://github.com/hashicorp/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
- https://github.com/gollum/gollum
- Desc : a simple wiki system built on top of Git that powers GitHub Wikis.
- License : The MIT License
- Written in : Ruby
Issue Tracking Software
Jira
Content Management System
- List of content management systems
- WordPress, Drupal, Joomla, DokuWiki, TWiki, XWiki
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
- Setting up your GitHub Pages site locally with Jekyll
bundle exec jekyll serve
- Jekyll style guide
- 5 Steps To Add Bootstrap 4 To Jekyll The Right Way
- Add Syntax Highlighting to your Jekyll site with Rouge (25 Mar 2017)
- Syntax Highlighting in Jekyll With Rouge (15 January 2015)
Samples
Beautiful Jekyll
- https://deanattali.com/beautiful-jekyll/
- Desc. : a ready-to-use template to help you create an awesome website quickly.
- License : The MIT License
- Sources : https://github.com/daattali/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. |
- How to display SVG attachments in Confluence
- !mindmap.svg
- The Safest Way To Inject CSS/HTML/Javascript to Confluence Pages (September 28, 2020)
- single page scope CSS style => HTML Macro
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
- 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/
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
- http://www.karlrunge.com/x11vnc/
- Desc. : a VNC server for real X displays
- License :
- Readings
TightVNC
- http://www.tightvnc.com/
- Desc. : a free remote control software package.
- License : GPL
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
- 8 Best Free and Open Source Document Management Software Solutions
- OpenDocMan, OpenKM, SeedDMS, Mayan EDMS (in Python)
Openfire
- http://www.igniterealtime.org/projects/openfire/
- Desc : a real time collaboration (RTC) server licensed under the Open Source Apache License.
- License : Apache License
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
- https://github.com/spring-projects/spring-loaded
- Desc. : a JVM agent for reloading class file changes whilst a JVM is running.
- License : Apache License Version 2.0
Docker
- https://www.docker.com/
- Desc. : an open platform for developers and sysadmins to build, ship, and run distributed applications.
- License : Apache License Version 2.0
- Source : https://github.com/docker/docker
- >> On 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 (& ) |
& |
|
Less-Than Sign (< ) |
< |
||
Greater-Than Sign (> ) |
> |
||
Markup | Bold | *text* |
|
Italic | _text_ |
||
Strike Through | ~text~ |
||
Inline Code | `text` |
- Slack Markdown Support in Messages : Poor!
- Slack Markdown Support in Posts : Poor!
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
- Readings
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
- Thunderbird and Exchange / OWA
- mozillaZine : Outlook Web Access
- Calendar : How do I save my calendar file on a local/network drive
- Keep it working - Thunderbird
Troubleshooting
- Disappearing mail
- MozBackup
- Inbox completely empty after compacting folders (15. 10. 23)
- All messages disappeared from Thunderbird Inbox (14. 3. 16)
- How to Repair & Rebuild MSF File to Remove Thunderbird Inbox Email Missing Error (2018-02-15)
PC Diagnostic and Recovery
GNU GRUB
- http://www.gnu.org/software/grub/
- Desc. : a Multiboot boot loader
- License : GPL 3+
Hiren's BootCD
- http://www.hiren.info/pages/bootcd
- Desc. : A bootable software CD containing a number of diagnostic programs such as partitioning agents, system performance benchmarks, disk cloning and imaging tools, data recovery tools, MBR tools, BIOS tools, and many others for fixing various computer problems.
- fan & discussion site (for download and more information)
- Articles
PC Security
AVG
- https://www.avg.com/
- Desc. : Powerful protection and performance for your PC and beyond
Comodo Internet Security
- https://www.comodo.com/
- Desc. : an Internet security suite for Microsoft Windows including an antivirus program, a personal firewall, a sandbox and a host-based intrusion prevention system (HIPS)
- Comodo Internet Security on Wikipedia
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
- http://rsync.samba.org/
- Desc. : An open source utility that provides fast incremental file transfer.
- Front-end soft-wares or solutions based on rsync.
Partition Wizard
Office
Notepad++
- https://notepad-plus-plus.org/
- Desc. : a free source code editor and Notepad replacement that supports several languages.
- License : GPL
- Notepad++ 64-bit Plugin List
- Convert tabs to spaces in Notepad++ (Jan 18 '09)
- Edit -> Blank Operations -> TAB to Space
- Settings -> Preferences... -> Language -> Tab Settings -> Tab size
LibreOffice
- https://www.libreoffice.org/
- Desc. : a powerful office suite
- License : Mozilla Public License v2.0
Calc
- LibreOffice 7.4 Calc Functions by Category
- OpenOffice Calc Functions by Name
- OpenOffice Calc Functions by Category
- Can Not Click Merge Cells Button (Jun 25, 2009)
- Disable "Record Changes" option
- SUMIF and SUMIFS Function with Examples in LibreOffice Calc (October 9, 2020)
- How to color rows based on cell value in OpenOffice and LibreOffice (May 23 '13)
Format
>Conditional
>Condition...
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
- Can’t select text box in impress to move it
- Tools - Options… - LibreOffice Impress - General - Allow quick editing
Microsoft Office
- File format reference for Word, Excel, and PowerPoint (10/28/2022)
- Word Templates
- Normal.dotm, User Templates, Workgroup Templates, Global Templates
Excel
- Excel Formulas and Functions - Excel for Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010
- Excel functions (by category)
- Excel functions (alphabetical)
- Excel Date & Time Calculations
- How to split text string in Excel by comma, space, character or mask (May 30, 2019)
- Generate Gantt like chart in Excel(Korean)
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
- How to Mirror an Image in PowerPoint (Easy Way) (DECEMBER 14TH, 2022)
Picture Format
>Arrange
>Rotate
>Flip Horizontal
- Change a shape into another shape
Shape Format
>Insert Shapes
>Edit Shape
>Change Shape
Image Viewer/Editor
Picasa
- Readings
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
- Official user manual
- Move Tool : used to move layers, selections, paths or guides
- Floating selection in Gimp
- Align Visible Layers : can very precisely position the visible layers
- Removing Image Backgrounds - GIMP Fuzzy Select (31 Oct 2010)
- 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
- How do I tell the dimensions of the current selection in GIMP? (Jun 8, 2015)
Windows
>Dockable Dialogs
>Tool Options
Video Editing
- The 9 Best Open-Source Video Editing Software of 2022 (February 28, 2022)
- Shotcut, OpenShot, Blender, Kdenlive, Flowblade, Avidemux, VidCutter, LiVES, Natron
- Top 3 Open Source Video Editing Software (April 20, 2022)
- OpenShot, Shotcut, PowerDirector (commercial)
Screen Capture/Recording
- The best free screenshot software
- Top 9 Free Snagit Alternatives You Should Try in 2019 (May 7th, 2019)
- Comparison of screencasting software (on Wikipedia)
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.
- https://getsharex.com/
- Desc. : Screen capture, file sharing and productivity tool
- License : GPLv3
- Sources : https://github.com/ShareX/ShareX
OBS Studio
- https://obsproject.com/
- Desc. : Free and open source software for video recording and live streaming
Ezvid For Windows
- https://www.ezvid.com/ezvid_for_windows
- Desc. : The Easiest Screen Recorder And Video Editor
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
- 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
- http://infrarecorder.org/
- Desc. : A free CD/DVD burning solution for Microsoft Windows.
- License : GPL
- 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
CCleaner
- https://www.piriform.com/ccleaner
- Desc. : a utility program used to clean potentially unwanted files (including temporary internet files, where malicious programs and code tend to reside) and invalid Windows Registry entries from a computer.
- CCleaner on Wikipedia
Hangul Typing
misc
Standards
eTOM
- https://www.tmforum.org/business-process-framework/
- Desc. : a business process framework for telecom service providers in the telecommunications industry.
- Readings
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.
- References
- Specification
- ONVIF Specifications
- ONVIF Core Specification, ver 16.12
- Access Control, Access Rules, Action Engine, Advanced Security, Analytics, Credential, Device IO, Display, Door Control, Imaging, Media, Media2, Provisioning, PTZ, Receiver, Recording Control, Recording Search, Replay Control, Schedule, Thermal, Video Analytics Device
- ONVIF Core Specification, ver 2.5(Dec, 2014)
- Device Discovery, Device Management, Event Framework
- ONVIF Analytics Service Specification, ver 2.5(Dec, 2014)
- ONVIF Recording Search Service Specification, ver 2.5(Dec, 2014)
- Profile
- ONVIF Profile G Specification, ver 1.0(December 2013)
- Capabilities :
GetServices
,GetServiceCapabilities
- Recording Search :
FindRecordings
/GetRecordingSearchResults
,FindEvents
/GetEventSearchResults
- Recording Control :
CreateRecording
,DeleteRecording
,CreateTrack
,DeleteTrack
- Capabilities :
- ONVIF Profile G Specification, ver 1.0(December 2013)
- Schema
- WSLDs
- Specification
- 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
- http://aws.amazon.com/redshift/
- Desc. : a fast, fully managed, petabyte-scale data warehouse solution that makes it simple and cost-effective to efficiently analyze all your data using your existing business intelligence tools.
- Readings
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
- KoPubWorld Font (Korean)
- List of monospaced typefaces
- Consolas, Courier, DejaVu Sans Mono, Fixedsys, Lucida Console, Monaco,
- Top 10 Most Popular Monospaced Fonts
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. |