{"id":50766428,"url":"https://github.com/khanhicetea/today-i-learned","last_synced_at":"2026-06-11T14:01:29.448Z","repository":{"id":71704109,"uuid":"47071386","full_name":"khanhicetea/today-i-learned","owner":"khanhicetea","description":"We constantly learn new things. This is a repo to share my learnings everyday.","archived":false,"fork":false,"pushed_at":"2024-08-10T11:51:15.000Z","size":355,"stargazers_count":62,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-10T12:54:37.819Z","etag":null,"topics":["learning-by-doing","til","today-i-learned"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/khanhicetea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-29T16:41:09.000Z","updated_at":"2024-08-10T11:51:18.000Z","dependencies_parsed_at":"2024-02-28T04:32:29.204Z","dependency_job_id":"18fe667b-759f-4958-9fe9-4df7aabcabab","html_url":"https://github.com/khanhicetea/today-i-learned","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/khanhicetea/today-i-learned","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khanhicetea%2Ftoday-i-learned","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khanhicetea%2Ftoday-i-learned/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khanhicetea%2Ftoday-i-learned/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khanhicetea%2Ftoday-i-learned/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khanhicetea","download_url":"https://codeload.github.com/khanhicetea/today-i-learned/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khanhicetea%2Ftoday-i-learned/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34201842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["learning-by-doing","til","today-i-learned"],"created_at":"2026-06-11T14:01:26.782Z","updated_at":"2026-06-11T14:01:29.397Z","avatar_url":"https://github.com/khanhicetea.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Today I Learned\n\nWe constantly learn new things. This is a repo to share those learnings.\nTILs are short Markdown documents (a few sentences + example code) explaining\nconcepts, bits of syntax, commands, or tips we've recently learned.\n\nToday-I-Learned (TIL) is inspired by Thoughbot, TIL is a repository for everyone to share what we have learn today.\n\nThis repo has a tool that help you to manage and write down what you learned in scientific way.\n\n# What I learned\n\n| Table of Contents | :point_down: |\n| -------- | -------- |\n| :new: **Top 5 recent learning** | |\n| [Storing master key inside MacOS keychain](crypto/storing-master-key-inside-macos-keychain.md) [crypto] | 2024-10-14 |\n| [Run multiple AlpineJS inits and effects on same element](javascript/run-multiple-alpinejs-inits-and-effects-on-same-element.md) [javascript] | 2024-09-30 |\n| [HTML Form no trigger submit when press Enter key on input](web/html-form-no-trigger-submit-when-press-enter-key-on-input.md) [web] | 2024-09-19 |\n| [Using Curl to check downtime and ssl cert expiration](bash/using-curl-to-check-downtime-and-ssl-cert-expiration.md) [bash] | 2024-08-10 |\n| [PHP memory allocation when passing arguments into function](php/php-memory-allocation-when-passing-arguments-into-function.md) [php] | 2024-08-06 |\n| :books: **ansible** [ 1 articles ] | |\n| 1. [Run shell command in all hosts](ansible/Run-shell-command-in-all-hosts.md) | 2019-02-18 |\n| :books: **apps-script** [ 1 articles ] | |\n| 2. [Getting database from data range to array of enum objects](apps-script/getting-database-from-data-range-to-array-of-enum-objects.md) | 2023-09-03 |\n| :books: **bash** [ 5 articles ] | |\n| 3. [Simple HTTP server function helper](bash/simple-http-server-function-helper.md) | 2017-10-05 |\n| 4. [Internal Variables in BASH](bash/Internal-Variables-in-BASH.md) | 2018-08-06 |\n| 5. [Curl extract info from verbose mode](bash/Curl-extract-info-from-verbose-mode.md) | 2018-08-07 |\n| 6. [Telnet server through SSL or TLS](bash/Telnet-server-through-SSL-or-TLS.md) | 2018-11-13 |\n| 7. [Using Curl to check downtime and ssl cert expiration](bash/using-curl-to-check-downtime-and-ssl-cert-expiration.md) | 2024-08-10 |\n| :books: **chrome-dev** [ 1 articles ] | |\n| 8. [Debugging Chrome extension](chrome-dev/Debugging-Chrome-extension.md) | 2015-11-30 |\n| :books: **crypto** [ 2 articles ] | |\n| 9. [Encrypt and decrypt file using openssl command line](crypto/Encrypt-and-decrypt-file-using-openssl-command-line.md) | 2018-05-17 |\n| 10. [Storing master key inside MacOS keychain](crypto/storing-master-key-inside-macos-keychain.md) | 2024-10-14 |\n| :books: **css** [ 2 articles ] | |\n| 11. [[Bug] Input lost focus after typing 1 character in Safari Browser](css/[Bug]-Input-lost-focus-after-typing-1-character-in-Safari-Browser.md) | 2018-11-01 |\n| 12. [CSS Selector element has an attribute which contains some string](css/css-selector-element-has-an-attribute-which-contains-some-string.md) | 2023-08-21 |\n| :books: **database** [ 4 articles ] | |\n| 13. [Basics about sqlite command line tool](database/Basics-about-sqlite-command-line-tool.md) | 2017-04-25 |\n| 14. [Indexes on multiple columns](database/indexes-on-multiple-columns.md) | 2017-10-13 |\n| 15. [Use temporarily data from another database in SQLite](database/Using-temporary-another-database-in-SQLite.md) | 2018-05-02 |\n| 16. [SQL Wildcard Characters](database/SQL-Wildcard-Characters.md) | 2018-07-26 |\n| :books: **devops** [ 6 articles ] | |\n| 17. [Checking forced push conflicts on source code in auto testing](devops/Checking-forced-push-conflicts-on-source-code-in-auto-testing.md) | 2017-05-19 |\n| 18. [Free sandbox server for development](devops/Free-sandbox-server-for-development.md) | 2017-08-04 |\n| 19. [Using netcat to wait a TCP service](devops/using-netcat-to-wait-a-tcp-service.md) | 2017-10-13 |\n| 20. [Ansible running host pattern](devops/Ansible-running-host-pattern.md) | 2018-01-22 |\n| 21. [Improve apt package manager speed by changing source list mirrors](devops/improve-apt-package-manager-speed-by-changi-by-changing-source-list-mirrors.md) | 2019-04-03 |\n| 22. [Cronjob monitoring web endpoint and alert to Telegram](devops/cronjob-monitoring-web-endpoint-and-alert-to-telegram.md) | 2024-04-12 |\n| :books: **docker** [ 9 articles ] | |\n| 23. [Changing channel from alpha to stable will remove ALL DATA](docker/Changing-channel-from-alpha-to-stable-will-remove-ALL-DATA.md) | 2017-05-24 |\n| 24. [Reducing docker image the right way](docker/Reducing-docker-image-the-right-way.md) | 2017-05-24 |\n| 25. [Reduce init time MySQL docker image](docker/Reduce-init-time-MySQL-docker-image.md) | 2017-11-22 |\n| 26. [Build lightweight image by using multistage](docker/Build-lightweight-image-by-using-multistage.md) | 2018-02-23 |\n| 27. [SSH to docker host in Docker for Mac](docker/SSH-to-docker-host-in-Docker-for-Mac.md) | 2018-12-03 |\n| 28. [Can not run downloaded binary inside alpine linux because of missing shared libs](docker/Can-not-run-downloaded-binary-inside-alpine-linux-because-of-missing-shared-libs.md) | 2019-02-02 |\n| 29. [Run container processes as non-root user](docker/run-container-processes-as-non-root-user.md) | 2019-03-30 |\n| 30. [Using extra hosts to add custom ip of hostnames to Docker container](docker/using-extra-hosts-to-add-custom-ip-of-hostnames-to-docker-container.md) | 2022-03-16 |\n| 31. [Becareful on using port mapping of Docker in Development](docker/becareful-on-using-port-mapping-of-docker-in-development.md) | 2022-03-17 |\n| :books: **elasticsearch** [ 1 articles ] | |\n| 32. [Basics of Elasticsearch](elasticsearch/Basics-of-Elasticsearch.md) | 2018-01-25 |\n| :books: **git** [ 5 articles ] | |\n| 33. [Resolving conflict like a boss](git/resolving-conflict-like-a-boss.md) | 2017-06-13 |\n| 34. [using git hooks to improve working flow](git/using-git-hooks-to-improve-working-flow.md) | 2017-11-22 |\n| 35. [Fastly conflict detector script](git/Fastly-conflict-detector-script.md) | 2017-11-27 |\n| 36. [Put .git data outside project directory](git/Put-.git-data-outside-project-directory.md) | 2018-05-29 |\n| 37. [Running git command using another ssh key](git/Running-git-command-using-another-ssh-key.md) | 2018-06-26 |\n| :books: **google-sheet** [ 1 articles ] | |\n| 38. [Insert fastly current date time to cell in Google Spreadsheets](google-sheet/insert-fastly-current-date-time-to-cell.md) | 2021-03-09 |\n| :books: **hostingpanel** [ 1 articles ] | |\n| 39. [DirectAdmin change document root to public directory](hostingpanel/directadmin-change-document-root-to-public-directory.md) | 2022-03-09 |\n| :books: **http** [ 4 articles ] | |\n| 40. [ab failed responses](http/ab-failed-responses.md) | 2017-04-21 |\n| 41. [Create cross-platform downloading app URL](http/Create-crossplatform-downloading-app-URL.md) | 2018-01-03 |\n| 42. [Reuse cookies between multi requests in Curl tool](http/Reuse-cookies-between-multi-requests-in-Curl-tool.md) | 2018-05-22 |\n| 43. [HTTP Status Codes : 301+302 vs 307+308](http/http-status-307-and-308-vs-301-and-302.md) | 2023-08-20 |\n| :books: **ios** [ 2 articles ] | |\n| 44. [Flush DNS cache on iOS device](ios/Flush-DNS-cache-on-iOS-device.md) | 2018-03-14 |\n| 45. [Install CA root certificate on iOS device](ios/Install-CA-root-certificate-on-iOS-device.md) | 2018-03-14 |\n| :books: **java** [ 1 articles ] | |\n| 46. [Runing old java applets on brower](java/Runing-old-java-applets-on-brower.md) | 2017-08-06 |\n| :books: **javascript** [ 13 articles ] | |\n| 47. [Eval function and with block](javascript/Eval-function-and-with-block.md) | 2017-08-10 |\n| 48. [Scope and Closure](javascript/Scope-and-Closure.md) | 2017-08-10 |\n| 49. [Debug js code using console.trace](javascript/Debug-js-code-using-console.trace.md) | 2018-01-07 |\n| 50. [Define property of an object in hacking way](javascript/Define-property-of-an-object-in-hacking-way.md) | 2018-01-07 |\n| 51. [Tracking changes of cookie on webpage](javascript/Tracking-changes-of-cookie-on-webpage.md) | 2018-01-10 |\n| 52. [Trigger event after setting val in jQuery](javascript/Trigger-event-after-setting-val-in-jQuery.md) | 2018-01-14 |\n| 53. [Detect HTTP Response 304 Status Code in AJAX](javascript/Detect-HTTP-Response-304-Status-Code-in-AJAX.md) | 2018-10-25 |\n| 54. [View all parameters passed to callback function without reading docs](javascript/View-all-parameters-passed-to-callback-function-without-reading-docs.md) | 2018-10-30 |\n| 55. [View function source in developer tool console](javascript/View-function-source-in-developer-tool-console.md) | 2018-11-21 |\n| 56. [Critical notice of string DOM manipulation using jQuery](javascript/Critical-notice-of-string-DOM-manipulation-using-jQuery.md) | 2019-01-10 |\n| 57. [JSON Parse is faster than Javascript Object declaration](javascript/json-parse-is-faster-than-javascript-object-declaration.md) | 2019-11-23 |\n| 58. [Script tags in remote HTML request won't run when using innerHTML](javascript/script-tags-in-remote-html-request-wont-run-when-using-innerhtml.md) | 2024-05-06 |\n| 59. [Run multiple AlpineJS inits and effects on same element](javascript/run-multiple-alpinejs-inits-and-effects-on-same-element.md) | 2024-09-30 |\n| :books: **js** [ 5 articles ] | |\n| 60. [Array group by function in JS](js/array-group-by-function-in-js.md) | 2023-08-25 |\n| 61. [ES6 Module import in client browsers](js/es6-module-import-in-client-browsers.md) | 2023-08-29 |\n| 62. [JS DOM event deepdive using SvelteJS demo](js/js-dom-event-deepdive-using-sveltejs-demo.md) | 2023-09-01 |\n| 63. [Be careful when using built-in btoa from window to decode base64](js/be-careful-when-using-built-in-btoa-from-window-to-decode-base64.md) | 2023-11-29 |\n| 64. [Detect ViteHMR dev server is running](js/detect-vitehmr-dev-server-is-running.md) | 2024-08-04 |\n| :books: **laravel** [ 2 articles ] | |\n| 65. [Split a Collection items into 2 groups using 1 boolean function](laravel/split-a-collection-into-2-groups-using-1-boolean-function.md) | 2023-11-25 |\n| 66. [Generate routing stubs for IDEs](laravel/generate-routing-stubs-for-ides.md) | 2024-02-24 |\n| :books: **linux** [ 5 articles ] | |\n| 67. [Remap Capslock to Control key](linux/remap-capslock-to-control-key.md) | 2017-08-08 |\n| 68. [Send ENTER key to kernel](linux/Send-ENTER-key-to-kernel.md) | 2017-09-27 |\n| 69. [Using watch command to tracking changes in period time](linux/Using-watch-command-to-tracking-changes-in-period-time.md) | 2017-10-20 |\n| 70. [Disable IPv6 to stop getting stuck in network](linux/Disable-IPv6-to-stop-getting-stuck-in-network.md) | 2018-01-16 |\n| 71. [Make cron job runs every seconds](linux/Make-cron-job-runs-every-seconds.md) | 2018-11-15 |\n| :books: **mac-osx** [ 2 articles ] | |\n| 72. [Shortcut keyboard improve productivity](mac-osx/Shortcut-keyboard-improve-productivity.md) | 2015-11-30 |\n| 73. [Warning on MacOS upgrade major system](mac-osx/warning-on-macos-upgrade-major-system.md) | 2023-10-13 |\n| :books: **mysql** [ 8 articles ] | |\n| 74. [Index is useless when use function on indexed field](mysql/Index-is-useless-when-use-function-on-indexed-field.md) | 2015-12-01 |\n| 75. [String problems can cause logical bugs in application](mysql/string-problems-can-cause-logical-bugs-in-application.md) | 2017-02-17 |\n| 76. [UNION vs UNION ALL](mysql/union-vs-union-all.md) | 2017-02-23 |\n| 77. [Mysql dumping only table structure](mysql/Mysql-dumping-only-table-structure.md) | 2017-05-17 |\n| 78. [Mycli : a new good cli MySql Client](mysql/mycli-:-a-new-good-cli-mysql-client.md) | 2017-09-01 |\n| 79. [Sleeping connections in MySQL](mysql/Sleeping-connections-in-MySQL.md) | 2018-01-04 |\n| 80. [The safest way to reset root password of MySQL Server](mysql/safest-way-to-reset-root-password-of-mysql-server.md) | 2018-08-25 |\n| 81. [Export MySQL data by specified query to CSV file](mysql/Export-MySQL-data-by-specified-query-to-CSV-file.md) | 2019-03-12 |\n| :books: **nature** [ 1 articles ] | |\n| 82. [Tại sao biển xanh lại mặn ? :lol:](nature/tai-sao-bien-xanh-lai-man.md) | 2018-01-14 |\n| :books: **networking** [ 6 articles ] | |\n| 83. [TCP FIN timeout](networking/tcp-fin-timeout.md) | 2017-09-07 |\n| 84. [How SMTP works](networking/How-SMTP-works.md) | 2017-10-04 |\n| 85. [Set up simple rate limiting on specified port using UFW](networking/Set-up-simple-rate-limiting-on-specified-port-using-UFW.md) | 2018-01-16 |\n| 86. [List opening ports or listening UNIX sockets](networking/List-opening-ports-or-listening-UNIX-sockets.md) | 2018-02-21 |\n| 87. [Setup wildcard domains .test for development in MacOS](networking/Setup-wildcard-domains-.local-for-development-in-MacOS.md) | 2018-04-24 |\n| 88. [Use NGINX as a TCP,UDP load balancer](networking/use-nginx-as-a-tcp,udp-load-balancer.md) | 2019-04-03 |\n| :books: **php** [ 14 articles ] | |\n| 89. [Eloquent Many-to-Many Relationship](php/Eloquent-Many-to-Many-Relationship.md) | 2015-12-02 |\n| 90. [Run built-in server via Docker](php/Run-built-in-server-via-Docker.md) | 2015-12-04 |\n| 91. [F-cking stupid limit of input vars](php/Fcking-stupid-limit-of-input-vars.md) | 2016-03-08 |\n| 92. [Using VarDumper in PHPUnit](php/using-vardumper-in-phpunit.md) | 2017-02-23 |\n| 93. [Persistent connection to MySQL](php/Persistent-connection-to-MySQL.md) | 2017-02-28 |\n| 94. [realpath function](php/realpath-function.md) | 2017-08-06 |\n| 95. [try, catch and finally in PHP](php/try,-catch-and-finally-in-PHP.md) | 2018-05-04 |\n| 96. [Never autostart XDebug in cli environment](php/Never-autostart-XDebug-in-cli-environment.md) | 2018-05-07 |\n| 97. [Getting back Whoops error pages in Laravel 9](php/getting-back-whoops-error-pages-in-laravel-9.md) | 2022-03-13 |\n| 98. [Minimize Google PHP SDK before deploying on production](php/minimize-google-php-sdk-before-deploying-on-production.md) | 2022-03-14 |\n| 99. [Laravel run scheduled command within parent environment](php/laravel-run-scheduled-command-within-parent-environment.md) | 2022-03-15 |\n| 100. [Cache storage utils using redis server](php/cache-storage-utils-using-redis-server.md) | 2023-10-08 |\n| 101. [Transform array to object shorthand](php/transform-array-to-object-shorthand.md) | 2023-12-08 |\n| 102. [PHP memory allocation when passing arguments into function](php/php-memory-allocation-when-passing-arguments-into-function.md) | 2024-08-06 |\n| :books: **programming** [ 1 articles ] | |\n| 103. [Get random number from computer](programming/Get-random-number-from-computer.md) | 2018-05-14 |\n| :books: **python** [ 7 articles ] | |\n| 104. [String Format Unicode params](python/String-Format-Unicode-params.md) | 2015-12-01 |\n| 105. [Reference assign object variable](python/Reference-assign-object-variable.md) | 2015-12-04 |\n| 106. [HTTP2 supported for python requests library](python/HTTP2-supported-for-python-requests-library.md) | 2017-08-04 |\n| 107. [Exporting environment variables on virtual env activate](python/Exporting-environment-variables-on-virtual-env-activate.md) | 2018-04-30 |\n| 108. [Do not use mutable objects as default parameters](python/Do-not-use-mutable-objects-as-default-parameters.md) | 2018-07-24 |\n| 109. [Context Managers in Python](python/Context-Managers.md) | 2018-07-24 |\n| 110. [Setter and getter behavior of class property in Python3](python/Setter-and-getter-behavior-of-class-property-in-Python3.md) | 2018-07-30 |\n| :books: **quote** [ 1 articles ] | |\n| 111. [Random quote 23 Feb 2017](quote/random-quote-23-feb-2017.md) | 2017-02-23 |\n| :books: **redis** [ 1 articles ] | |\n| 112. [Transaction style in Redis](redis/Transaction-style-in-Redis.md) | 2018-01-31 |\n| :books: **svelte** [ 2 articles ] | |\n| 113. [SvelteJS : Reactivity via variable assignment](svelte/reactivity-via-assignment-variable.md) | 2023-08-28 |\n| 114. [Reactive statement explicit dependencies like React useEffect](svelte/reactive-statement-explicit-dependencies-like-react-useeffect.md) | 2023-11-12 |\n| :books: **swift** [ 1 articles ] | |\n| 115. [XCode automatic format code on build time](swift/xcode-automatic-format-code-on-build-time.md) | 2024-02-28 |\n| :books: **sysadmin** [ 34 articles ] | |\n| 116. [FTP via curl tool](sysadmin/FTP-via-curl-tool.md) | 2015-12-03 |\n| 117. [View real-time logs using websocketd](sysadmin/View-real-time-logs-using-websocketd.md) | 2015-12-04 |\n| 118. [Commands](sysadmin/Commands.md) | 2015-12-30 |\n| 119. [Bash shell shortcuts](sysadmin/Bash-shell-shortcuts.md) | 2016-03-26 |\n| 120. [Stats your top-10 frequently commands](sysadmin/Stats-your-top-10-commands.md) | 2016-03-26 |\n| 121. [Compressing and Extracting files with rar in Linux](sysadmin/Compressing-and-Extracting-files-with-rar-in-Linux.md) | 2017-05-17 |\n| 122. [Grant user to use sudo without password](sysadmin/Grant-user-to-use-sudo-without-password.md) | 2017-05-18 |\n| 123. [wget Output flag](sysadmin/wget-Output-flag.md) | 2017-05-19 |\n| 124. [Using BSD find util to find and exec command on file and folder](sysadmin/Using-BSD-find-util-to-find-and-exec-command-on-file-and-folder.md) | 2017-05-22 |\n| 125. [zcat : decompressing pipe tool](sysadmin/zcat-:-decompressing-pipe-tool.md) | 2017-05-22 |\n| 126. [Gearman bash worker and client](sysadmin/gearman-bash-worker-and-client.md) | 2017-06-15 |\n| 127. [Cleaning up old linux kernels](sysadmin/Cleaning-up-old-linux-kernels.md) | 2017-08-06 |\n| 128. [Create SSH tunnel manually](sysadmin/create-ssh-tunnel-manually.md) | 2017-09-01 |\n| 129. [Enable reverse proxy in CentOS](sysadmin/enable-reverse-proxy-in-centos.md) | 2017-09-01 |\n| 130. [Ansible playbook : skip to task](sysadmin/ansible-:-skip-to-task.md) | 2017-09-05 |\n| 131. [Grep : find a string in folder](sysadmin/grep-:-find-a-string-in-folder.md) | 2017-09-05 |\n| 132. [Lock and unlock a user password](sysadmin/lock-and-unlock-a-user-password.md) | 2017-09-07 |\n| 133. [Generate dhparam file faster](sysadmin/generate-dhparam-file-faster.md) | 2017-09-07 |\n| 134. [Blocking specified country to prevent from DDOS](sysadmin/blocking-specified-country-to-prevent-from-ddos.md) | 2017-09-25 |\n| 135. [BASH exiting on first error](sysadmin/bash-exiting-on-first-error.md) | 2017-09-26 |\n| 136. [BASH return a value in function](sysadmin/bash-return-a-value-in-function.md) | 2017-09-26 |\n| 137. [BASH tracing commands](sysadmin/BASH-tracing-commands.md) | 2017-09-27 |\n| 138. [TIME command output meaning](sysadmin/time-command-output-meaning.md) | 2017-10-04 |\n| 139. [Using netcat as tiny TCP debug tool](sysadmin/using-netcat-as-tiny-tcp-debug-tool.md) | 2017-10-07 |\n| 140. [Getting your external IP](sysadmin/Getting-your-external-IP.md) | 2017-11-24 |\n| 141. [Use journalctl to check system logs](sysadmin/Use-journalctl-to-check-system-logs.md) | 2018-01-22 |\n| 142. [Prevent source hacking from .git directory exposing](sysadmin/prevent-source-hacking-from-.git-directory-exposing.md) | 2018-03-01 |\n| 143. [Cut file content from line to line](sysadmin/Cut-file-content-from-line-to-line.md) | 2018-03-25 |\n| 144. [Prepend line number to file](sysadmin/Prepend-line-number-to-file.md) | 2018-03-25 |\n| 145. [Create a sequence of numbers](sysadmin/Create-a-sequence-of-numbers.md) | 2018-03-25 |\n| 146. [Send a file through networking via netcat](sysadmin/Send-a-file-through-networking-via-netcat.md) | 2018-04-10 |\n| 147. [Create tiny chat channel via netcat](sysadmin/Create-tiny-chat-channel-via-netcat.md) | 2018-04-10 |\n| 148. [View DNS history of a domain](sysadmin/View-DNS-history-of-a-domain.md) | 2018-05-08 |\n| 149. [Curl override Name Resolution with specific IP address](sysadmin/Curl-override-Name-Resolution-with-specific-IP-address.md) | 2018-08-18 |\n| :books: **tools** [ 2 articles ] | |\n| 150. [Base 64 encode and decode builtin tool](tools/base-64-encode-and-decode-builtin-tool.md) | 2017-04-21 |\n| 151. [Zip compressing list of files](tools/zip-compressing-list-of-files.md) | 2017-09-25 |\n| :books: **varnish** [ 1 articles ] | |\n| 152. [Check vcl file syntax before restarting](varnish/Check-vcl-file-syntax-before-restarting.md) | 2018-01-31 |\n| :books: **vim** [ 2 articles ] | |\n| 153. [Using mark to bookmark checkpoints in files](vim/Using-mark-to-bookmark-checkpoints-in-files.md) | 2018-01-30 |\n| 154. [Convert tabs to spaces](vim/Convert-tabs-to-spaces.md) | 2018-02-21 |\n| :books: **web** [ 9 articles ] | |\n| 155. [Cloudflare Error 522 Connection Time out](web/Cloudflare-Error-522-Connection-Time-out.md) | 2017-05-18 |\n| 156. [Ping Google to crawl updated content](web/ping-google-to-crawl-updated-content.md) | 2017-08-08 |\n| 157. [Using web proxy to bypass firewalls](web/Using-web-proxy-to-bypass-firewalls.md) | 2017-12-07 |\n| 158. [HSTS rule in browser](web/HSTS-rule-in-browser.md) | 2018-01-03 |\n| 159. [Bypass CORS by using JSONP callback](web/Bypass-CORS-by-using-JSONP-callback.md) | 2018-01-08 |\n| 160. [Sending Cookie in AJAX CORs request](web/sending-cookie-in-ajax-cors-request.md) | 2018-03-01 |\n| 161. [Can not get real IP address from Load Balancer SSL Passthrough](web/Can-not-get-real-IP-address-from-Load-Balancer-SSL-Passthrough.md) | 2019-03-14 |\n| 162. [Smallest inline dummy image in HTML](web/smallest-inline-dummy-image-in-html.md) | 2024-01-15 |\n| 163. [HTML Form no trigger submit when press Enter key on input](web/html-form-no-trigger-submit-when-press-enter-key-on-input.md) | 2024-09-19 |\n\n\n# Instruction\n\n- Step 1: Fork this repo (blank-repo with **only tool** and **readme file**).\n- Step 2: Start writting down what you learned in **everyday**.\n  + Create a **topic** by:\n\n    ```bash\n    ./til \u003cCATEGORY\u003e \u003cSUBJECT\u003e [EDITOR]\n    ```\n\n    - Ex:\n\n    ```bash\n    ./til bash \"Bash Conditional Expression\" vim\n    ```\n\n    - If you tired of typing the quote mark:\n\n    ```bash\n    ./til bash Bash-Conditional-Expression\n    ./til bash Bash=Conditional=Expression\n    ```\n\n    DO NOT mix the `-` and `=` together!\n  + It will create 1 file whose name which is the SUBJECT in lower case:  `bash/160510-bash-conditional-expression.md`.\n  + **Write** it! **Save** it!\n- Step 3: Commit what you learned today by `./til commit`. After that, if you want to push it to _repository_, just **Enter**\n\n# License\n\n© 2018 khanhicetea.\nDistributed under the [Creative Commons Attribution License][license].\n\n[license]: http://creativecommons.org/licenses/by/3.0/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhanhicetea%2Ftoday-i-learned","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhanhicetea%2Ftoday-i-learned","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhanhicetea%2Ftoday-i-learned/lists"}