tag:blogger.com,1999:blog-48077560348185805222024-03-05T23:50:17.979+08:00PROBLEM SOLVING ON UNIX/LINUX SYSTEMStonycao@mgiay.comMGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.comBlogger213125tag:blogger.com,1999:blog-4807756034818580522.post-28773091426793746982023-04-26T16:05:00.002+08:002023-04-26T16:15:35.198+08:00PostgreSQL select data in JSON format<div><span style="font-family: Consolas;">SELECT audit_log.id,</span></div><div><span style="font-family: Consolas;"> audit_log.event_time,</span></div><div><span style="font-family: Consolas;"> audit_log.client_addr,</span></div><div><span style="font-family: Consolas;"> audit_log.application_name,</span></div><div><span style="font-family: Consolas;"> audit_log.username,</span></div><div><span style="font-family: Consolas;"> audit_log.table_name,</span></div><div><span style="font-family: Consolas;"> audit_log.operation,</span></div><div><span style="font-family: Consolas;"> <span style="background-color: #fcff01;"> audit_log.after_value -> 'exterior'::text AS after_value_in_json</span></span></div><div><span style="font-family: Consolas;"> FROM audit.audit_log</span></div><div><span style="font-family: Consolas;"> WHERE 1 = 1 </span></div><div><span style="font-family: Consolas;"> AND <span style="background-color: #fcff01;">(audit_log.after_value ->> 'exterior'::text) ~~ '%sCrIpT%'::text</span></span></div><div><span style="font-family: Consolas;"> ORDER BY audit_log.event_time DESC;</span></div><div><span style="font-family: Consolas;">/</span></div><div><span style="font-family: Consolas;"> </span></div><div><span style="font-family: Consolas;">SELECT </span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>id,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>event_time,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>client_addr,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>application_name,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>username,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>table_name,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span>operation,</span></div><div><span style="font-family: Consolas;"><span style="white-space: pre;"> </span><span style="background-color: #fcff01;">after_value -> 'exterior'as after_value_in_JSON</span></span></div><div><span style="font-family: Consolas;">FROM audit.audit_log</span></div><div><span style="font-family: Consolas;">where 1=1</span></div><div><span style="font-family: Consolas;">and <span style="background-color: #fcff01;">after_value ->> 'exterior' like '%sCrIpT%'</span></span></div><div><span style="font-family: Consolas;">LIMIT 20;</span></div><div>/</div><div><br /></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-6093251455834670982023-04-26T08:22:00.011+08:002023-04-26T08:30:02.902+08:00PostgreSQL Audit with Trigger - "Value-based Auditing (VA)"<div style="background-color: #1e1e1e; line-height: 22px;"><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #6a9955;"><b>1/ Creating a table for Trigger Data:</b></span></div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #6a9955;"><div style="color: #d4d4d4; font-size: 14.4px; line-height: 19px;"><div><span style="color: #6a9955;">-- SEQUENCE: audit.audit_log_id_seq</span></div><div><span style="color: #6a9955;">-- DROP SEQUENCE IF EXISTS audit.audit_log_id_seq;</span></div><div><span style="color: #569cd6;">CREATE</span> <span style="color: #569cd6;">SEQUENCE</span> IF <span style="color: #569cd6;">NOT</span> <span style="color: #569cd6;">EXISTS</span> audit.audit_log_id_seq</div><div> INCREMENT <span style="color: #b5cea8;">1</span></div><div> <span style="color: #569cd6;">START</span> <span style="color: #b5cea8;">1</span></div><div> MINVALUE <span style="color: #b5cea8;">1</span></div><div> MAXVALUE <span style="color: #b5cea8;">9223372036854775807</span></div><div> CACHE <span style="color: #b5cea8;">1</span>;</div><div><span style="color: #569cd6;">ALTER</span> <span style="color: #569cd6;">SEQUENCE</span> audit.audit_log_id_seq <span style="color: #569cd6;">OWNER</span> <span style="color: #569cd6;">TO</span> postgres;</div><div><span style="color: #569cd6;">GRANT</span> ALL <span style="color: #569cd6;">ON</span> <span style="color: #569cd6;">SEQUENCE</span> audit.audit_log_id_seq <span style="color: #569cd6;">TO</span> postgres;</div><div>/</div></div></span></div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #6a9955;">-- Table: audit.audit_log</span></div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #6a9955;">-- DROP TABLE IF EXISTS audit.audit_log;</span></div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #569cd6;">CREATE</span> <span style="color: #569cd6;">TABLE</span> IF <span style="color: #569cd6;">NOT</span> <span style="color: #569cd6;">EXISTS</span> audit.audit_log</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">(</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> id <span style="color: #569cd6;">bigint</span> <span style="color: #569cd6;">NOT NULL</span> </div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #569cd6;"> DEFAULT</span> nextval(<span style="color: #ce9178;">'audit.audit_log_id_seq'</span>::regclass),</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> event_time <span style="color: #569cd6;">text</span> <span style="color: #569cd6;">COLLATE</span> pg_catalog.<span style="color: #ce9178;">"default"</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> client_addr <span style="color: #569cd6;">inet</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> application_name <span style="color: #569cd6;">text</span> <span style="color: #569cd6;">COLLATE</span> pg_catalog.<span style="color: #ce9178;">"default"</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> username <span style="color: #569cd6;">text</span> <span style="color: #569cd6;">COLLATE</span> pg_catalog.<span style="color: #ce9178;">"default"</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> table_name <span style="color: #569cd6;">text</span> <span style="color: #569cd6;">COLLATE</span> pg_catalog.<span style="color: #ce9178;">"default"</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> operation <span style="color: #569cd6;">text</span> <span style="color: #569cd6;">COLLATE</span> pg_catalog.<span style="color: #ce9178;">"default"</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> before_value <span style="color: #569cd6;">json</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> after_value <span style="color: #569cd6;">json</span>,</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> <span style="color: #569cd6;">CONSTRAINT</span> audit_log_pkey <span style="color: #569cd6;">PRIMARY KEY</span> (id)</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">)</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #569cd6;">WITH</span> (</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"> OIDS = FALSE</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">)</div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">TABLESPACE pg_default;</div><br /><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;"><span style="color: #569cd6;">ALTER</span> <span style="color: #569cd6;">TABLE</span> <span style="color: #569cd6;">IF</span> <span style="color: #569cd6;">EXISTS</span> audit.audit_log <span style="color: #569cd6;">OWNER</span> <span style="color: #569cd6;">to</span> postgres;</div><div><span style="color: #569cd6; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">GRANT</span><span style="color: #d4d4d4; font-family: Consolas, Courier New, monospace;"><span style="white-space: pre;"> ALL </span></span><span style="color: #569cd6; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">ON</span> <span style="color: #569cd6; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">TABLE</span><span style="color: #d4d4d4; font-family: Consolas, Courier New, monospace;"><span style="white-space: pre;"> audit.audit_log </span></span><span style="color: #569cd6; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">TO</span><span style="color: #d4d4d4; font-family: Consolas, Courier New, monospace;"><span style="white-space: pre;"> postgres;</span></span><br /></div><div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14.4px; line-height: 19px; white-space: pre;"><div><br /></div><div><br /></div></div><span style="color: #d4d4d4; font-family: Consolas, Courier New, monospace;"><span style="white-space: pre;">------------------------------
</span></span><b style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">2/ Creating a Audit Trigger:</b>
<div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14.4px; line-height: 19px; white-space: pre;"><div><span style="color: #6a9955;">-- FUNCTION: audit.audit_trigger()</span></div><div><span style="color: #6a9955;">-- DROP FUNCTION IF EXISTS audit.audit_trigger();</span></div><div><span style="color: #569cd6;">CREATE OR REPLACE</span> <span style="color: #569cd6;">FUNCTION</span> audit.audit_trigger()</div><div> <span style="color: #569cd6;">RETURNS</span> trigger</div><div> <span style="color: #569cd6;">LANGUAGE</span> <span style="color: #ce9178;">'plpgsql'</span></div><div> COST <span style="color: #b5cea8;">100</span></div><div> VOLATILE <span style="color: #569cd6;">NOT</span> LEAKPROOF</div><div><span style="color: #569cd6;">AS</span> $BODY$</div><div><span style="color: #569cd6;">DECLARE</span> </div><div> old_row <span style="color: #569cd6;">json</span> := <span style="color: #569cd6;">NULL</span>; </div><div> new_row <span style="color: #569cd6;">json</span> := <span style="color: #569cd6;">NULL</span>; </div><div><span style="color: #569cd6;">BEGIN</span> </div><div> <span style="color: #569cd6;">IF</span> TG_OP <span style="color: #569cd6;">IN</span> (<span style="color: #ce9178;">'UPDATE'</span>,<span style="color: #ce9178;">'DELETE'</span>) <span style="color: #569cd6;">THEN</span> </div><div> old_row = row_to_json(OLD); </div><div> <span style="color: #569cd6;">END</span> <span style="color: #569cd6;">IF</span>; </div><div> <span style="color: #569cd6;">IF</span> TG_OP <span style="color: #569cd6;">IN</span> (<span style="color: #ce9178;">'INSERT'</span>,<span style="color: #ce9178;">'UPDATE'</span>) <span style="color: #569cd6;">THEN</span> </div><div> new_row = row_to_json(NEW); </div><div> <span style="color: #569cd6;">END</span> <span style="color: #569cd6;">IF</span>; </div><div> <span style="color: #569cd6;">INSERT INTO</span> audit.audit_log( </div><div> client_addr,</div><div> application_name,</div><div> username,</div><div> event_time,</div><div> table_name, </div><div> operation,</div><div> before_value,</div><div> after_value</div><div> ) <span style="color: #569cd6;">VALUES</span> (</div><div> inet_client_addr(),</div><div> current_setting(<span style="color: #ce9178;">'application_name'</span>),</div><div> session_user, </div><div> current_timestamp,</div><div> TG_TABLE_SCHEMA || <span style="color: #ce9178;">'.'</span> || TG_TABLE_NAME, </div><div> TG_OP, </div><div> old_row, </div><div> new_row </div><div> );</div><div> <span style="color: #569cd6;">RETURN</span> NEW; </div><div><span style="color: #569cd6;">END</span>; </div><div>$BODY$;</div><div><span style="color: #569cd6;">ALTER</span> <span style="color: #569cd6;">FUNCTION</span> audit.audit_trigger() <span style="color: #569cd6;">OWNER</span> <span style="color: #569cd6;">TO</span> postgres;</div><div><span style="color: #569cd6;">GRANT</span> <span style="color: #569cd6;">EXECUTE</span> <span style="color: #569cd6;">ON</span> <span style="color: #569cd6;">FUNCTION</span> audit.audit_trigger() <span style="color: #569cd6;">TO</span> postgres;</div>
<br />------------------
<b>3/ Insert Trigger to Table "<span style="font-size: 14.4px;">public.salons":</span></b></div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14.4px; line-height: 19px; white-space: pre;"><div style="font-size: 14.4px; line-height: 19px;"><div><span style="color: #6a9955;">-- Trigger: audit_log__public_salons</span></div><div><span style="color: #6a9955;">-- DROP TRIGGER IF EXISTS audit_log__public_salons ON public.salons;</span></div><div><span style="color: #569cd6;">CREATE</span> <span style="color: #569cd6;">TRIGGER</span> audit_log__public_salons</div><div> <span style="color: #569cd6;">AFTER</span> <span style="color: #569cd6;">INSERT</span> <span style="color: #569cd6;">OR</span> <span style="color: #569cd6;">DELETE</span> <span style="color: #569cd6;">OR</span> <span style="color: #569cd6;">UPDATE</span> </div><div> <span style="color: #569cd6;">ON</span> public.salons</div><div> FOR EACH <span style="color: #569cd6;">ROW</span></div><div> <span style="color: #569cd6;">EXECUTE</span> <span style="color: #569cd6;">PROCEDURE</span> audit.audit_trigger();</div></div></div><div style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14.4px; line-height: 19px; white-space: pre;">
<span style="font-size: 14.4px;">------------------</span></div><b style="color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 16px; white-space: pre;">4/ Result:
</b><span style="color: #d4d4d4; font-family: Consolas, Courier New, monospace;"><span style="white-space: pre;"><b>SELECT * FROM audit.audit_log ORDER BY id ASC LIMIT 100</b></span></span><br /></div><div><span style="color: #d4d4d4; font-family: Consolas, Courier New, monospace;"><span style="white-space: pre;"><b><br /></b></span></span></div></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-50324311185896549642023-02-09T03:01:00.008+08:002023-02-09T03:09:10.623+08:00NGINX config for Websocket<span style="font-family: Consolas;">###############<br /></span><span style="font-family: Consolas;"><span style="background-color: #fcff01;">#Nginx Virtual Host Config:<br />#tiktok.local</span><br /> server {<br /><span style="color: red;"> listen 80;<br /> listen 443 ssl http2;<br /> listen [::]:443 ssl http2;<br /> server_name tiktok.local;</span><br /><br /><span style="color: #2b00fe;"> ssl_certificate /home/iadmin/Workspace/local-ssl/tiktok.local/tiktok.local+4.pem;</span></span><div><span style="font-family: Consolas;"><span style="color: #2b00fe;"><br /> ssl_certificate_key /home/iadmin/Workspace/local-ssl/tiktok.local/tiktok.local+4-key.pem;</span><br /><br /><span style="color: #ff00fe;"> location /ws {<br /> proxy_pass http://127.0.0.1:3000/ws;<br /> proxy_http_version 1.1;<br /> proxy_set_header Upgrade $http_upgrade;<br /> proxy_set_header Connection 'upgrade';<br /> proxy_set_header Host $host;<br /> proxy_cache_bypass $http_upgrade;<br /> }</span><br /><br /><span style="color: #800180;"> location / {<br /> proxy_set_header X-Forwarded-Host $host;<br /> proxy_set_header X-Forwarded-Server $host;<br /> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br /> proxy_pass http://127.0.0.1:3000$request_uri;<br /> }</span><br />}<br />###############<br /><br /># REF:<br /># https://www.digitalocean.com/community/tutorials/how-to-deploy-a-react-application-with-nginx-on-ubuntu-20-04<br /># https://stackoverflow.com/questions/55688883/set-up-nginx-proxy-for-react-application<br /># https://wiki.matbao.net/kb/huong-dan-cai-dat-chung-chi-ssl-tren-nginx/<br /># https://stackoverflow.com/questions/63134170/create-react-app-code-changes-behind-nginx-reverse-proxy-not-reloading-in-browse<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiVakmBYqtJhtyUcUgz4YT0XOjrAGep7IcPSXZPlaRxS-a7hlJoOiD26v3CFxmWdhIw-6UT-wDSDf8s16f3tjsKLViv2Glb_NMaZISlVxeCec66kKS-CgAqhCERLnxr2pWuwfekmCzrMNOaXuHPZvQJPUSTIE70T32V244EB4yOoFI4dsK7UwY6FYjLdg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="317" data-original-width="909" height="192" src="https://blogger.googleusercontent.com/img/a/AVvXsEiVakmBYqtJhtyUcUgz4YT0XOjrAGep7IcPSXZPlaRxS-a7hlJoOiD26v3CFxmWdhIw-6UT-wDSDf8s16f3tjsKLViv2Glb_NMaZISlVxeCec66kKS-CgAqhCERLnxr2pWuwfekmCzrMNOaXuHPZvQJPUSTIE70T32V244EB4yOoFI4dsK7UwY6FYjLdg=w549-h192" width="549" /></a></div><br /><br /><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><b><br /></b></span></div><div><span style="font-family: Consolas;"><b><br /></b></span></div><div><span style="font-family: Consolas;"><b><br /></b></span></div><div><span style="font-family: Consolas;"><b><br /></b></span></div><div><span style="font-family: Consolas;"><b>NodeJS ".env.local":</b><br /><div><span style="color: red;">CHOKIDAR_USEPOLLING=true</span></div><div><span style="color: red;">WDS_SOCKET_PORT=443</span><br /><br /></div><br /><br /><b>RESULT:</b><br /><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi9x2laTvN-KFEsTcTKOZxkvnlm2xBN-GfyjiPtsLpvuftSBO0XqTBhjAU7Iugrmo3IwEOSfSdCR3wmTBe3N2_4X3QNQAcYeRw5O8ekRxwNnGukB4vWZRRplCV3JVbxbX2WKm5yHLZk-PWId211186PG30-iiZAXDxY84m-WnTBn3H4SW1GBEQv32reBA"><img height="497" src="https://blogger.googleusercontent.com/img/a/AVvXsEi9x2laTvN-KFEsTcTKOZxkvnlm2xBN-GfyjiPtsLpvuftSBO0XqTBhjAU7Iugrmo3IwEOSfSdCR3wmTBe3N2_4X3QNQAcYeRw5O8ekRxwNnGukB4vWZRRplCV3JVbxbX2WKm5yHLZk-PWId211186PG30-iiZAXDxY84m-WnTBn3H4SW1GBEQv32reBA=w617-h497" width="617" /></a></span><br /></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-82945181125676949072023-02-03T00:09:00.007+08:002023-02-03T00:11:50.012+08:00How to generate PI (3.14) from the Gregory-Leibniz's formula<div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 15.6px; line-height: 20px; white-space: pre;"><div><span style="color: #6a9955;">#!/usr/bin/env python3</span></div><div><span style="color: #6a9955;"># ---------------------------------------</span></div><div><span style="color: #6a9955;"># Project Name : PythonCheatSheet</span></div><div><span style="color: #6a9955;"># File Name : Calculate-Pi-3-Gregory-Leibniz.py</span></div><div><span style="color: #6a9955;"># Created Date : 2023-02-02 12:46:25 UTC+7</span></div><div><span style="color: #6a9955;"># Last Modified: 2023-02-02 12:48:49 UTC+7</span></div><div><span style="color: #6a9955;"># ---------------------------------------</span></div><div><span style="color: #c586c0;">from</span> <span style="color: #4ec9b0;">pytictoc</span> <span style="color: #c586c0;">import</span> <span style="color: #4ec9b0;">TicToc</span></div><div><span style="color: #9cdcfe;">t</span> = <span style="color: #4ec9b0;">TicToc</span>() <span style="color: #6a9955;"># create TicToc instance</span></div><div><span style="color: #9cdcfe;">t</span>.<span style="color: #dcdcaa;">tic</span>() <span style="color: #6a9955;"># Start timer</span></div><div><span style="color: #dcdcaa;">print</span>(<span style="color: #569cd6;">f</span><span style="color: #ce9178;">"================================"</span>)</div><div><span style="color: #6a9955;"># DO SOMETHING</span></div><div><span style="color: #6a9955;"># https://www.mathscareers.org.uk/calculating-pi/</span></div><div><span style="color: #6a9955;"># Gregory-Leibniz:</span></div><div><span style="color: #6a9955;"># Pi/4 = [1 - 1/3 + 1/5 - 1/7 + 1/9 - ...]</span></div><br /><div><span style="color: #569cd6;">def</span> <span style="color: #dcdcaa;">my_pi</span>(<span style="color: #9cdcfe;">p_number</span>: <span style="color: #4ec9b0;">int</span>) -> <span style="color: #4ec9b0;">float</span>:</div><div> <span style="color: #9cdcfe;">my_result</span> = <span style="color: #b5cea8;">0</span></div><div> <span style="color: #c586c0;">for</span> <span style="color: #9cdcfe;">i</span> <span style="color: #c586c0;">in</span> <span style="color: #4ec9b0;">range</span>(<span style="color: #b5cea8;">1</span>, <span style="color: #9cdcfe;">n</span>+<span style="color: #b5cea8;">1</span>, <span style="color: #b5cea8;">1</span>):</div><div> <span style="color: #c586c0;">if</span> <span style="color: #9cdcfe;">i</span> % <span style="color: #b5cea8;">2</span> == <span style="color: #b5cea8;">0</span>: <span style="color: #6a9955;"># even</span></div><div> <span style="color: #9cdcfe;">my_result</span> = <span style="color: #9cdcfe;">my_result</span> - <span style="color: #b5cea8;">1</span>/(<span style="color: #b5cea8;">2</span>*<span style="color: #9cdcfe;">i</span> - <span style="color: #b5cea8;">1</span>)</div><div> <span style="color: #c586c0;">else</span>: <span style="color: #6a9955;"># odd</span></div><div> <span style="color: #9cdcfe;">my_result</span> = <span style="color: #9cdcfe;">my_result</span> + <span style="color: #b5cea8;">1</span>/(<span style="color: #b5cea8;">2</span>*<span style="color: #9cdcfe;">i</span> - <span style="color: #b5cea8;">1</span>)</div><div> <span style="color: #c586c0;">return</span> <span style="color: #9cdcfe;">my_result</span>*<span style="color: #b5cea8;">4</span></div><br /><br /><div><span style="color: #9cdcfe;">n</span> = <span style="color: #b5cea8;">1000000</span></div><div><span style="color: #dcdcaa;">print</span>(<span style="color: #569cd6;">f</span><span style="color: #ce9178;">'my_pi(</span><span style="color: #569cd6;">{</span><span style="color: #9cdcfe;">n</span><span style="color: #569cd6;">}</span><span style="color: #ce9178;">): </span><span style="color: #569cd6;">{</span><span style="color: #dcdcaa;">my_pi</span>(<span style="color: #9cdcfe;">n</span>)<span style="color: #569cd6;">}</span><span style="color: #ce9178;">'</span>)</div><br /><div><span style="color: #dcdcaa;">print</span>(<span style="color: #569cd6;">f</span><span style="color: #ce9178;">"================================"</span>)</div><div><span style="color: #9cdcfe;">t</span>.<span style="color: #dcdcaa;">toc</span>() <span style="color: #6a9955;"># Print elapsed time: "Elapsed time is <xxx> seconds."</span></div><div><span style="color: #6a9955;"># ---------------------------------------</span></div><div><span style="color: #6a9955;"># REF:</span></div><div><span style="color: #6a9955;"># https://mathshistory.st-andrews.ac.uk/HistTopics/1000_places/</span></div><div><span style="color: #6a9955;"># 3.14159265358979323846264338327950288419716939937510</span></div><br /><div><span style="color: #6a9955;"># RESULT:</span></div><div><span style="color: #6a9955;"># WINDOWS 3900x:</span></div><div><span style="color: #6a9955;"># ================================</span></div><div><span style="color: #6a9955;"># my_pi(1.000.000): 3.1415916535897743</span></div><div><span style="color: #6a9955;"># ================================</span></div><div><span style="color: #6a9955;"># Elapsed time is 0.127023 seconds.</span></div><br /><div><br /></div><div><br /></div><div><span style="color: #6a9955;"># Linux 3900x:</span></div><div><span style="color: #6a9955;"># ================================</span></div><div><span style="color: #6a9955;"># PI : 3.1415916535897743</span></div><div><span style="color: #6a9955;"># ================================</span></div><div><span style="color: #6a9955;"># Elapsed time is 0.209464 seconds.</span></div><div><span style="color: #6a9955;"># ================================</span></div><div><span style="color: #6a9955;"># PI : 3.1415916535897743</span></div><div><span style="color: #6a9955;"># ================================</span></div><div><span style="color: #6a9955;"># Elapsed time is 0.197258 seconds</span></div><br /><br /><br /><div><span style="color: #6a9955;"># LINUX 5600g:</span></div><div><span style="color: #6a9955;"># n = 100 # 3.1315929035585537</span></div><div><span style="color: #6a9955;"># n = 500 # 3.139592655589785</span></div><div><span style="color: #6a9955;"># n = 700 # 3.1401640828900845</span></div><div><span style="color: #6a9955;"># n = 1.000 # 3.140592653839794</span></div><div><span style="color: #6a9955;"># n = 2.000 # 3.1410926536210413</span></div><div><span style="color: #6a9955;"># n = 3.000 # 3.1412593202657186</span></div><div><span style="color: #6a9955;"># n = 5.000 # 3.141392653591791 - 0.001042 seconds.</span></div><div><span style="color: #6a9955;"># n = 1.000.000 # 3.1415916535897743 - 0.074705 seconds.</span></div><div><span style="color: #6a9955;"># n = 10.000.000 # 3.1415925535897915 - 0.757600 seconds.</span></div><div><span style="color: #6a9955;"># n = 100.000.000 # 3.141592643589326 - 7.646685 seconds.</span></div><div><span style="color: #6a9955;"># n = 1.000.000.000 # 3.1415926525880504 - 81.178900 seconds.</span></div><div><span style="color: #6a9955;"># n = 1.000.000.000 # 3.1415926525880504 - 76.741032 seconds</span></div><div><span style="color: #6a9955;"># n = 10.000.000.000 # 3.141592653488346 - 937.967539 seconds.</span></div><br /></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-82455361505231160832023-01-14T13:07:00.006+08:002023-01-14T13:08:51.645+08:00[Ubuntu 20.04.LTS.x64] Install newest [Python 3.11.1]<div style="text-align: left;"><b><span style="color: #2b00fe; font-family: courier; font-size: medium;">HOW TO INSTALL NEWEST PYTHON FROM SOURCECODE</span></b></div><span style="font-family: courier;">#UBUNTU 20.04.LTS.x64<br />##########################<br />REF: https://docs.posit.co/resources/install-python-source/<br />Posit - Install Python From Source<br />##########################<br /><br /><span style="color: red;">sudo apt-get update<br />sudo apt-get install gdebi-core<br /><br />sudo apt-get build-dep python<br />sudo apt-get install libffi-dev libgdbm-dev libsqlite3-dev libssl-dev \<br />zlib1g-dev</span><br /><br /><span style="color: red;"><br /><br />cd /opt/setup/<br /><b>export PYTHON_VERSION=3.11.1<br />export PYTHON_MAJOR=3</b><br /><br />curl -O https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.tgz<br />tar -xvzf Python-${PYTHON_VERSION}.tgz<br />cd Python-${PYTHON_VERSION}<br /><br /><br />./configure \<br />--prefix=/opt/python/${PYTHON_VERSION} \<br />--enable-shared \<br />--enable-optimizations \<br />--enable-ipv6 \<br />LDFLAGS=-Wl,-rpath=/opt/python/${PYTHON_VERSION}/lib,--disable-new-dtags<br /><br />make<br />sudo make install</span><br /><br /><br /># Looking in links: /tmp/tmp1i8nsd3d<br /># Processing /tmp/tmp1i8nsd3d/setuptools-65.5.0-py3-none-any.whl<br /># Processing /tmp/tmp1i8nsd3d/pip-22.3.1-py3-none-any.whl<br /># Installing collected packages: setuptools, pip<br /># WARNING: The scripts pip3 and pip3.11 are installed in '/opt/python/3.11.1/bin' which is not on PATH.<br /># Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.<br /># Successfully installed pip-22.3.1 setuptools-65.5.0<br /># WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv<br /># root@3900xl /opt/setup/Python-3.11.1#<br /><br /><br /><br /><br /><br /><br /># Install pip into the version of Python that you just installed:<br /><span style="color: red;">curl -O https://bootstrap.pypa.io/get-pip.py<br />sudo /opt/python/${<b>PYTHON_VERSION</b>}/bin/python${<b>PYTHON_MAJOR</b>} get-pip.py</span><br /><br /><br /># Verify that Python is installed by running the following command:<br /><span style="color: red;">/opt/python/${PYTHON_VERSION}/bin/python${PYTHON_MAJOR} --version</span><br /><br /><br /># (Optional) Add Python to the system PATH:<br /># PATH=/opt/python/<PYTHON-VERSION>/bin/:$PATH<br /><span style="color: red;">PATH=/opt/python/3.11.1/bin/:$PATH</span><br /><br /># #GLOBAL PATH VARIABLES:<br /># <b><span style="color: #2b00fe;">PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/jdk/bin:/opt/script:/opt/lampp/bin:/usr/local/pgsql/bin:/opt/mariadb/bin:/opt/python/3.11.1/bin<br /># export PATH</span></b><br /><br /></span><br />MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-64499987439194288412022-12-31T10:12:00.011+08:002022-12-31T10:31:12.516+08:00[Python] Nesting LIST inside DICT / Nesting DICT inside LIST / Nesting DICT inside DICT<p><span style="font-family: Consolas;"><span style="background-color: #23272e; color: #7f848e; font-size: 18px; font-style: italic; white-space: pre;">#!/usr/bin/env python3</span></span></p><div style="background-color: #23272e; color: #abb2bf; font-size: 18px; line-height: 24px; white-space: pre;"><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;"># ---------------------------------------</span></span></div><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;"># Project Name: PythonCheatSheet</span></span></div><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;"># File Name: Dict15-01-Nested-Dict.py</span></span></div><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;"># Created Date : 2022-12-31 08:56:51 UTC+7</span></span></div><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;"># Last Modified: 2022-12-31 09:09:29 UTC+7</span></span></div><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;"># ---------------------------------------</span></span></div><div><span style="font-family: Consolas;"><span style="color: #d55fde; font-style: italic;">import</span> <span style="color: #e5c07b;">json</span></span></div><div><span style="font-family: Consolas;"><span style="color: #d55fde; font-style: italic;">from</span> <span style="color: #e5c07b;">pytictoc</span> <span style="color: #d55fde; font-style: italic;">import</span> <span style="color: #e5c07b;">TicToc</span></span></div><div><span style="font-family: Consolas;"><span style="color: #ef596f;">t</span> <span style="color: #2bbac5;">=</span> <span style="color: #e5c07b;">TicToc</span>() <span style="color: #7f848e; font-style: italic;"># create TicToc instance</span></span></div><div><span style="font-family: Consolas;"><span style="color: #ef596f;">t</span>.<span style="color: #61afef;">tic</span>() <span style="color: #7f848e; font-style: italic;"># Start timer</span></span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">"================================"</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'---------------------'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'# Nesting LIST inside DICT:'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #ef596f;">programming_language</span> <span style="color: #2bbac5;">=</span> {</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'Elshad'</span>: [<span style="color: #89ca78;">'Python'</span>, <span style="color: #89ca78;">'Java'</span>, <span style="color: #89ca78;">'C#'</span>],</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'Renad'</span>: <span style="color: #89ca78;">'Scratch'</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'Edy'</span>: <span style="color: #89ca78;">'Java'</span>,</span></div><div><span style="font-family: Consolas;">}</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'programming_language:'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #e5c07b;">json</span>.<span style="color: #61afef;">dumps</span>(<span style="color: #ef596f;">programming_language</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">sort_keys</span><span style="color: #2bbac5;">=</span><span style="color: #d19a66;">False</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">indent</span><span style="color: #2bbac5;">=</span><span style="color: #d19a66;">4</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">separators</span><span style="color: #2bbac5;">=</span>(<span style="color: #89ca78;">','</span>, <span style="color: #89ca78;">': '</span>)</span></div><div><span style="font-family: Consolas;"> ))</span></div><span style="font-family: Consolas;"><br /><br /></span><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'</span><span style="color: #2bbac5;">\n</span><span style="color: #89ca78;">---------------------'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'# Nesting DICT inside LIST:'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #ef596f;">programming_language</span> <span style="color: #2bbac5;">=</span> [</span></div><div><span style="font-family: Consolas;"> {</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'user_name'</span>: <span style="color: #89ca78;">'Elshad'</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'favorite_language'</span>: [<span style="color: #89ca78;">'Python'</span>, <span style="color: #89ca78;">'Java'</span>, <span style="color: #89ca78;">'C#'</span>],</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'experience'</span>: <span style="color: #d19a66;">10</span>,</span></div><div><span style="font-family: Consolas;"> },</span></div><div><span style="font-family: Consolas;"> {</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'user_name'</span>: <span style="color: #89ca78;">'Renad'</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'favorite_language'</span>: [<span style="color: #89ca78;">'Scratch'</span>, <span style="color: #89ca78;">'Python'</span>],</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'experience'</span>: <span style="color: #d19a66;">2</span></span></div><div><span style="font-family: Consolas;"> },</span></div><div><span style="font-family: Consolas;">]</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #e5c07b;">json</span>.<span style="color: #61afef;">dumps</span>(<span style="color: #ef596f;">programming_language</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">sort_keys</span><span style="color: #2bbac5;">=</span><span style="color: #d19a66;">False</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">indent</span><span style="color: #2bbac5;">=</span><span style="color: #d19a66;">4</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">separators</span><span style="color: #2bbac5;">=</span>(<span style="color: #89ca78;">','</span>, <span style="color: #89ca78;">': '</span>)</span></div><div><span style="font-family: Consolas;"> ))</span></div><span style="font-family: Consolas;"><br /><br /></span><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'</span><span style="color: #2bbac5;">\n</span><span style="color: #89ca78;">---------------------'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'# Nesting DICT inside DICT:'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #ef596f;">programming_language</span> <span style="color: #2bbac5;">=</span> {</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'Elshad'</span>: {</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'favorite_language'</span>: [<span style="color: #89ca78;">'Python'</span>, <span style="color: #89ca78;">'Java'</span>, <span style="color: #89ca78;">'C#'</span>],</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'experience'</span>: <span style="color: #d19a66;">10</span>,</span></div><div><span style="font-family: Consolas;"> },</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'Renad'</span>: {</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'favorite_language'</span>: [<span style="color: #89ca78;">'Scratch'</span>, <span style="color: #89ca78;">'Python'</span>],</span></div><div><span style="font-family: Consolas;"> <span style="color: #89ca78;">'experience'</span>: <span style="color: #d19a66;">2</span>,</span></div><div><span style="font-family: Consolas;"> }</span></div><div><span style="font-family: Consolas;">}</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">'programming_language:'</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #e5c07b;">json</span>.<span style="color: #61afef;">dumps</span>(<span style="color: #ef596f;">programming_language</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">sort_keys</span><span style="color: #2bbac5;">=</span><span style="color: #d19a66;">False</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">indent</span><span style="color: #2bbac5;">=</span><span style="color: #d19a66;">4</span>,</span></div><div><span style="font-family: Consolas;"> <span style="color: #ef596f; font-style: italic;">separators</span><span style="color: #2bbac5;">=</span>(<span style="color: #89ca78;">','</span>, <span style="color: #89ca78;">': '</span>)</span></div><div><span style="font-family: Consolas;"> ))</span></div><div><span style="font-family: Consolas;"><span style="color: #61afef;">print</span>(<span style="color: #d55fde;">f</span><span style="color: #89ca78;">"================================"</span>)</span></div><div><span style="font-family: Consolas;"><span style="color: #ef596f;">t</span>.<span style="color: #61afef;">toc</span>()
<span style="color: #7f848e; font-style: italic;"># Print elapsed time: "Elapsed time is <xxx> seconds."</span></span></div><span style="font-family: Consolas;"><br /></span><div><span style="color: #7f848e; font-style: italic;"><span style="font-family: Consolas;">
# RESULT:</span></span></div><div><div style="font-family: Consolas, "Courier New", monospace; line-height: 24px;"><div><div style="line-height: 24px;"><div><span style="color: #89ca78;">"""</span></div><div><span style="color: #89ca78;"># ================================</span></div><div><span style="color: #89ca78;"># ---------------------</span></div><div><span style="color: #89ca78;"># # Nesting LIST inside DICT:</span></div><div><span style="color: #89ca78;"># programming_language:</span></div><div><span style="color: #89ca78;"># {</span></div><div><span style="color: #89ca78;"># "Elshad": [</span></div><div><span style="color: #89ca78;"># "Python",</span></div><div><span style="color: #89ca78;"># "Java",</span></div><div><span style="color: #89ca78;"># "C#"</span></div><div><span style="color: #89ca78;"># ],</span></div><div><span style="color: #89ca78;"># "Renad": "Scratch",</span></div><div><span style="color: #89ca78;"># "Edy": "Java"</span></div><div><span style="color: #89ca78;"># }</span></div><br /><div><span style="color: #89ca78;"># ---------------------</span></div><div><span style="color: #89ca78;"># # Nesting DICT inside LIST:</span></div><div><span style="color: #89ca78;"># [</span></div><div><span style="color: #89ca78;"># {</span></div><div><span style="color: #89ca78;"># "user_name": "Elshad",</span></div><div><span style="color: #89ca78;"># "favorite_language": [</span></div><div><span style="color: #89ca78;"># "Python",</span></div><div><span style="color: #89ca78;"># "Java",</span></div><div><span style="color: #89ca78;"># "C#"</span></div><div><span style="color: #89ca78;"># ],</span></div><div><span style="color: #89ca78;"># "experience": 10</span></div><div><span style="color: #89ca78;"># },</span></div><div><span style="color: #89ca78;"># {</span></div><div><span style="color: #89ca78;"># "user_name": "Renad",</span></div><div><span style="color: #89ca78;"># "favorite_language": [</span></div><div><span style="color: #89ca78;"># "Scratch",</span></div><div><span style="color: #89ca78;"># "Python"</span></div><div><span style="color: #89ca78;"># ],</span></div><div><span style="color: #89ca78;"># "experience": 2</span></div><div><span style="color: #89ca78;"># }</span></div><div><span style="color: #89ca78;"># ]</span></div><br /><div><span style="color: #89ca78;"># ---------------------</span></div><div><span style="color: #89ca78;"># # Nesting DICT inside DICT:</span></div><div><span style="color: #89ca78;"># programming_language:</span></div><div><span style="color: #89ca78;"># {</span></div><div><span style="color: #89ca78;"># "Elshad": {</span></div><div><span style="color: #89ca78;"># "favorite_language": [</span></div><div><span style="color: #89ca78;"># "Python",</span></div><div><span style="color: #89ca78;"># "Java",</span></div><div><span style="color: #89ca78;"># "C#"</span></div><div><span style="color: #89ca78;"># ],</span></div><div><span style="color: #89ca78;"># "experience": 10</span></div><div><span style="color: #89ca78;"># },</span></div><div><span style="color: #89ca78;"># "Renad": {</span></div><div><span style="color: #89ca78;"># "favorite_language": [</span></div><div><span style="color: #89ca78;"># "Scratch",</span></div><div><span style="color: #89ca78;"># "Python"</span></div><div><span style="color: #89ca78;"># ],</span></div><div><span style="color: #89ca78;"># "experience": 2</span></div><div><span style="color: #89ca78;"># }</span></div><div><span style="color: #89ca78;"># }</span></div><div><span style="color: #89ca78;"># ================================</span></div><div><span style="color: #89ca78;"># Elapsed time is 0.003771 seconds.</span></div><div><span style="color: #89ca78;">"""</span></div><br /></div></div></div></div></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-51261308892060063272022-02-18T09:19:00.010+08:002022-03-04T13:28:44.093+08:00OpenSSL Generate SSL CERT FOR IIS (PFX) from PEM<span style="font-family: Consolas;"><span style="background-color: #fcff01;">#!/bin/bash<br />#/etc/haproxy/certs/ssl-convert-PEM-2-PFX.sh</span><br />###################################################<br />#LastUpdate: #7:59 2022.02.18<br />###################################################<br />#__________[GLOBAL_VAR]:BEGIN<br /><span style="color: #ff00fe;">Domain_Name="</span></span><span style="color: #ff00fe;"><span style="font-family: Consolas;">example.com</span><span style="font-family: Consolas;">"<br /><br />SSL_CRT_From_Provider="star_</span><span style="font-family: Consolas;">example.com</span><span style="font-family: Consolas;">.crt"<br />SSL_CA_From_Provider="DigiCertCA.crt"<br />SSL_CA_Bundle_Provider="My_CA_Bundle.crt"<br />SSL_CERT_PRIVATE="003-1-STAR_.</span><span style="font-family: Consolas;">example.com</span></span><span style="font-family: Consolas;"><span style="color: #ff00fe;">-PRIVATE.key"<br /><br />SSL_CERT_PEM_FORMAT="$Domain_Name-wildcard-2021.10.03.pem"</span><br />#__________[GLOBAL_VAR]:END<br /></span><div><span style="font-family: Consolas;"><span><span style="color: #999999;"><br /></span><span style="color: red;">openssl \</span><br /><span style="color: red;">pkcs12 \</span><br /><span style="color: red;">-inkey $SSL_CERT_PRIVATE \</span><br /><span style="color: red;">-in $SSL_CRT_From_Provider \</span><br /><span style="color: red;">-certfile $SSL_CA_Bundle_Provider \</span><br /><span style="color: red;">-export -out $Domain_Name-wildcard-2021.10.03.pfx</span></span><br /><br /><div>echo "VERIFY SSL CERT:"</div><div><span style="color: #2b00fe;"><b>openssl pkcs12 -info -in $Domain_Name-wildcard-2021.10.03.pfx</b></span></div><div><br /></div>#THE_END<br />#RESULT: <span style="background-color: #fcff01;">example.com-wildcard-2021.10.03.pfx</span><br /><br /><br /><br /><br /><br /><b> REF: <br /></b>1:<br /><span style="color: #999999;">#https://www.sslshopper.com/ssl-converter.html<br />#Convert PEM to PFX:<br />#openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in </span><span><span style="color: #999999;">certificate.crt -certfile CACert.crt<br /></span></span><br />2:<br /><a href="https://www.mgiay.com/2018/03/cac-buoc-su-dung-letsencrypt-e-tao-ssl.html"><b><span style="color: #2b00fe;">STEP BY STEP USING LETSENCRYPT TO MAKE SSL CERT FOR IIS - MANUAL</span></b></a><br /><br /></span></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-47170387222423957682022-01-06T13:41:00.008+08:002022-12-31T10:18:45.085+08:00TableAU Backup and Restore<span style="font-family: Consolas;">#!/bin/bash<br />#############################################<br /># @CreatedDate: #13:39 2022.01.04<br /># @LastUpdate : #12:46 2022.01.06<br /># @Last Modified by: iadmin<br />#############################################<br />#cat /opt/script/tableau-backup.sh | grep LastUpdate<br />#############################################<br />#__________TIME_START:BEGIN<br />time_start=`date +%s.%3N`<br />#__________TIME_START:END<br />#############################################<br />#############################################<br />#__________TIME_CALCULATE:BEGIN<br />#now1: 2022.01.06-11.55.40.168<br />now1="$(date +'%Y.%m.%d-%H.%M.%S.%3N')"<br /><br />CURRENT_YEAR=$(date +'%Y'); CURRENT_MONTH=$(date +'%m'); CURRENT_DATE=$(date +'%d')<br />CURRENT_HOUR=$(date +'%H'); CURRENT_MINUTE=$(date +'%M'); CURRENT_SECOND=$(date +'%S'); CURRENT_MILISECOND=$(date +'%3N');<br />#YYYY_MM: 2022-01<br />YYYY_MM="$CURRENT_YEAR-$CURRENT_MONTH"<br /><br />#YYYY_MM_DD: 2022-01-06<br />#YYYY_MM_DD="$CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE"<br /><br />#YYYY_MM_DD: 20220106<br />YYYY_MM_DD="$CURRENT_YEAR""$CURRENT_MONTH""$CURRENT_DATE"<br /><br />#HH_MM_SS: 11:55:40.206<br />#HH_MM_SS="$CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND.$CURRENT_MILISECOND"<br /><br />#HH_MM_SS: 11.55.40.206<br />HH_MM_SS="$CURRENT_HOUR.""$CURRENT_MINUTE.""$CURRENT_SECOND.""$CURRENT_MILISECOND"<br /><br /># echo "YYYY_MM: $YYYY_MM"<br /># echo "YYYY_MM_DD: $YYYY_MM_DD"<br /># echo "HH_MM_SS: $HH_MM_SS"<br /># echo "now1: $now1"<br />#__________TIME_CALCULATE:END<br /><br />(<br />#__________BACKUP_PROCESSING:BEGIN<br />TableAU_Backup_LOC="/opt/bk/TableAU";<br />mkdir -p $TableAU_Backup_LOC; cd $TableAU_Backup_LOC<br /><br />echo ""<br />echo "Go to backup date folder: [$TableAU_Backup_LOC/$YYYY_MM_DD]"<br />mkdir -p $YYYY_MM_DD; cd $YYYY_MM_DD<br /><br />Config_File="config-$YYYY_MM_DD-$HH_MM_SS.json"<br />Data_File="data-$YYYY_MM_DD-$HH_MM_SS.tsbak"<br /><br />echo ""<br />echo "Backup Config: [tsm settings export -f config $Config_File]"<br />#tsm settings export --output-config-file <path/to/output_file.json> [global options]<br />#tsm settings export -f config "$Config_File"<br />tsm settings export --output-config-file "$Config_File"<br /><br />echo ""<br />echo "Backup Data: [tsm maintenance backup -f $Data_File]"<br />#tsm maintenance backup --file <backup_file> [options] [global options]<br />tsm maintenance backup --file "$Data_File"<br /><br />echo ""<br />echo "Moving backup data to Backup Folder [$TableAU_Backup_LOC/$YYYY_MM_DD]"<br />mv /var/opt/tableau/tableau_server/data/tabsvc/files/backups/* $TableAU_Backup_LOC/$YYYY_MM_DD<br /><br />md5sum "$Data_File" > "$Data_File".md5<br />#__________BACKUP_PROCESSING:END<br /><br /><br />#______________________DELETE_OLD_DATA:BEGIN<br />cd $PATH_DST<br />NumberOfFileWantToKeep=14<br />#Giu lai [14] file moi nhat trong thu muc [$FOLDER_DST]:<br />#XOA FILE:<br />#/bin/rm -rf `ls -t "20"* | awk 'NR>7'`<br /><br />#XOA FOLDER:<br />cd $TableAU_Backup_LOC<br />/bin/rm -rf `ls -td */ | awk 'NR>14'`<br />#______________________DELETE_OLD_DATA:END<br /><br />#______________________FREE_RAM:BEGIN<br />free && sync && echo 3 > /proc/sys/vm/drop_caches && free<br />free<br /># printf "RAM FREE: \n $(free -h)\n" >> $DB_RESULT.log<br />#______________________FREE_RAM:END<br /><br />#############################################<br />#############################################<br />#__________TIME_END:BEGIN<br />time_end=`date +%s.%3N`<br />execution_time=$( echo "$time_end - $time_start" | bc -l -l );<br />echo "time_start: [$time_start = $(date -d@$time_start +'%Y.%m.%d-%H.%M.%S.%3N')]"<br />echo "time_end : [$time_end = $(date -d@$time_end +'%Y.%m.%d-%H.%M.%S.%3N')]"<br />echo "runtime : [$execution_time] (second.milliseconds)"<br />#__________TIME_END:END<br />) 2>&1 | tee backup-job-$YYYY_MM_DD-$HH_MM_SS.log<br /><br /><br />#THE_END:<br /># #Restore Config:<br /># #https://help.tableau.com/current/server/en-us/cli_settings_tsm.htm#TSMSet<br /># tsm settings import --import-config-file config-2022.01.04-17h40.json<br /><br /># #Restore Data:<br /># #https://help.tableau.com/current/server/en-us/upgrade_migrate.htm<br /># chown -R tableau.tableau /opt/temp/bi-2021.01.04-17h40-2022-01-04.tsbak<br /># tsm maintenance restore -f /opt/temp/bi-2021.01.04-17h40-2022-01-04.tsbak<br /><br /><br />#####################<br /># root@srv032:/opt/bk/TableAU/20220106# /opt/script/tableau-backup.sh<br /><br /># Go to backup date folder: [/opt/bk/TableAU/20220106]<br /><br /># Backup Config: [tsm settings export -f config config-20220106-12.33.43.768.json]<br /># Configuration file written to /opt/bk/TableAU/20220106/config-20220106-12.33.43.768.json.<br /><br /># Backup Data: [tsm maintenance backup -f data-20220106-12.33.43.768.tsbak]<br /># Job id is '25', timeout is 1440 minutes.<br /># 6% - Starting the Active Repository instance, File Store, and Cluster Controller.<br /># 13% - Waiting for the Active Repository, File Store, and Cluster Controller to start.<br /># 20% - Installing backup services. <br /># 26% - Estimating required disk space. <br /># 33% - Gathering disk space information from all nodes.<br /># 40% - Analyzing disk space information.<br /># 46% - Checking if sufficient disk space is available on all nodes.<br /># 53% - Backing up configuration.<br /># 60% - Backing up object storage data. <br /># 66% - Backing up database. <br /># 73% - Backing up asset keys.<br /># 80% - Assembling the tsbak archive. <br /># 86% - Stopping the Active Repository if necessary.<br /># 93% - Waiting for the Active Repository to stop if necessary.<br /># 100% - Uninstalling backup services. <br /># Backup written to '/var/opt/tableau/tableau_server/data/tabsvc/files/backups/data-20220106-12.33.43.768.tsbak' on the controller node.<br /><br /># Moving backup data to Backup Folder [/opt/bk/TableAU/20220106]<br /># time_start: [1641447223.762 = 2022.01.06-12.33.43.762]<br /># time_end : [1641447421.623 = 2022.01.06-12.37.01.623]<br /># runtime : [197.861] (second.milliseconds)<br /># root@srv032:/opt/bk/TableAU/20220106# <br />#####################</span><br />MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-23309514677120471372021-11-17T12:54:00.005+08:002021-11-17T12:54:33.920+08:00PostgreSQL check all DB SIZE<br /><br /><span style="font-family: Consolas;"><b>#CHECK DB SIZE:</b></span><br /><br /><span style="font-family: Consolas;">postgres=# </span><span style="color: #ff00fe; font-family: Consolas;">select t1.datname AS db_name,pg_size_pretty(pg_database_size(t1.datname)) as db_size from pg_database t1 order by pg_database_size(t1.datname) desc</span><span style="font-family: Consolas;">;</span><br /><br /><div><span style="font-family: courier;"> db_name | db_size </span></div><div><span style="font-family: courier;">------------------------+---------</span></div><div><span style="font-family: courier;"> xxx | 8109 MB</span></div><div><span style="font-family: courier;"> xxx_20210622_14h05 | 7520 MB</span></div><div><span style="font-family: courier;"> xxx_500001_1000000 | 1052 MB</span></div><div><span style="font-family: courier;"> xxx_000001_500000 | 566 MB</span></div><div><span style="font-family: courier;"> postgres | 11 MB</span></div><div><span style="font-family: courier;"> beta_xxxchat | 8461 kB</span></div><div><span style="font-family: courier;"> template1 | 7605 kB</span></div><div><span style="font-family: courier;"> template0 | 7433 kB</span></div><div><span style="font-family: courier;">(8 rows)</span></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-20692383250706754552021-11-08T11:26:00.008+08:002021-11-08T11:29:34.034+08:00[Solved] Percona XtraBackup for MariaDB/MySQL. Binary [HotBackup / HotRestore]<p><span style="font-family: Consolas;">Steps:</span></p><p><span style="font-family: Consolas;"><b>A/ FULL BACKUP a DATABASE</b></span><span style="font-family: Consolas;"><br />A.1/ Backup Full Single Database<br /></span><span style="font-family: Consolas;">A.2/ Backup Schema of Single Database</span></p><p><span style="font-family: Consolas;"><br /><b>B/ FULL RESTORE a DATABASE<br /></b></span><span style="font-family: Consolas;">B.1/ Create new empty Database </span><span style="font-family: Consolas;"><span style="color: #ff00fe;"><New DBName></span></span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;">B.2/ Import Schema (A.2) to new Empty Database<br /></span><span style="font-family: Consolas;">B.3/ Discard Tablespace<br /></span><span style="font-family: Consolas;">B.4/ Copy all file of Backuped Database (A.1) to new Database<br />B.5/ </span><span style="font-family: Consolas;">chown -R mysql.mysql /opt/mariadb/data/<span style="color: #ff00fe;"><New DBName><br /></span></span><span style="font-family: Consolas;">B.6/ Import Tablespace for all new Table<br />B.7/ DONE<br /><br />P.S:<br />1/ Backup full a MariaDB/MySQL Database in Binary mode<br />2/ Backup full all </span><span style="font-family: Consolas;">MariaDB/MySQL Database in Binary mode<br />3/ Backup Incremental a or all database in Binary mode<br /><br />4/ Restore full a or all </span><span style="font-family: Consolas;">database in Binary mode<br /><br /></span><span style="background-color: #ff00fe; font-family: Consolas;">For detail script, contact to me</span></p><p><span style="font-family: Consolas;"></span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: Consolas;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-yAiUmHk9qcZI4KyxsVBE9K79hyphenhyphenRwtXMSIBQCQ0uIKgdCNYpJscxbuzupUBEc3zTPsgO7dF82erd1C6czOSr9WvF4ZXWrQUUfSSAR0YWoOZ9famRRXPw_ZWupOlBAOIeL_0AJIcrwKcIP/" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" data-original-height="921" data-original-width="774" height="671" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-yAiUmHk9qcZI4KyxsVBE9K79hyphenhyphenRwtXMSIBQCQ0uIKgdCNYpJscxbuzupUBEc3zTPsgO7dF82erd1C6czOSr9WvF4ZXWrQUUfSSAR0YWoOZ9famRRXPw_ZWupOlBAOIeL_0AJIcrwKcIP/w566-h671/image.png" width="566" /></a></span></div><span style="font-family: Consolas;"><br /><br /></span><p></p>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-31982255880378272642021-10-22T18:02:00.004+08:002021-10-22T18:02:27.724+08:00Upgrade "Ubuntu 16.04.LTS.x64" to "Ubuntu 18.04.LTS.x64"<p><span style="font-family: Consolas;"><b>#A/ Upgrade "Ubuntu 16.04.LTS.x64" to "Ubuntu 18.04.LTS.x64"<br /></b></span><span style="color: #ff00fe; font-family: Consolas;">sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y && sudo do-release-upgrade</span></p><p><span style="font-family: Consolas;"><br /><b>#B/Upgrade Ubuntu 16.04 -> 18.04, Fix lỗi ERROR Curl_Open_SSL cho PHP:<br /></b></span><span style="font-family: Consolas;"><span style="color: #ff00fe;">sudo apt-get -y remove --auto-remove libcurl4-openssl-dev && sudo apt-get -y install libcurl3</span></span></p><p><span style="font-family: Consolas;"><b><br />#C/ Fixed "LetsEncrypt Error":<br /></b></span><span style="font-family: Consolas;"><span style="color: #ff00fe;">sudo apt-get -y install libgnutls-openssl27 libgnutls30 ubuntu-advantage-tools</span></span></p><p><span style="font-family: Consolas;"><b><br />#D/REBOOT OS</b></span></p><p><span style="font-family: Consolas;"><br /><b>#E/ Result: <span style="color: #ff00fe;">DONE</span></b></span></p><p><span style="font-family: Consolas;"><br /></span></p><p><span style="font-family: Consolas;"><br /></span></p><p><br /></p>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-91338751309670830342021-09-30T17:46:00.003+08:002021-09-30T17:46:31.487+08:00PostgreSQL Checking Current config (loaded on RAM)<div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;"><b>#/postgres/pgscript/postgres-pg_settings.sh</b></span></div><div><span style="font-family: Consolas;">#LastUpdate: #14:30 2021.08.02</span></div><div><span style="font-family: Consolas;">################################################</span></div><div><span style="font-family: Consolas;">#su - postgres -c 'psql -h 127.0.0.1 -p 5432'</span></div><div><span style="font-family: Consolas;">################################################</span></div><div><span style="font-family: Consolas;">echo "===================="</span></div><div><span style="font-family: Consolas;">echo "Checking Current config (loaded on RAM):"</span></div><div><span style="color: #ff00fe; font-family: Consolas;">su - postgres -c "psql -h 127.0.0.1 -d postgres -c 'select name,setting from pg_settings order by name asc;'"</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#THE_END</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><div><b>#RESULT:</b></div><div>root@srv145:/postgres/pgscript# ./postgres-pg_settings.sh</div><div>====================</div><div>Checking Current config (loaded on RAM):</div><div> name | setting </div><div>----------------------------------------+----------------------------------</div><div> allow_system_table_mods | off</div><div> application_name | psql</div><div> archive_command | (disabled)</div><div> archive_mode | off</div><div> archive_timeout | 0</div><div> array_nulls | on</div><div> authentication_timeout | 60</div><div> autovacuum | on</div><div> autovacuum_analyze_scale_factor | 0.1</div><div> autovacuum_analyze_threshold | 50</div><div> autovacuum_freeze_max_age | 200000000</div><div> autovacuum_max_workers | 3</div><div> autovacuum_multixact_freeze_max_age | 400000000</div><div> autovacuum_naptime | 60</div><div> autovacuum_vacuum_cost_delay | 20</div><div> autovacuum_vacuum_cost_limit | -1</div><div> autovacuum_vacuum_scale_factor | 0.2</div><div> autovacuum_vacuum_threshold | 50</div><div> autovacuum_work_mem | -1</div><div> backend_flush_after | 0</div><div> backslash_quote | safe_encoding</div><div> bgwriter_delay | 200</div><div> bgwriter_flush_after | 64</div><div> bgwriter_lru_maxpages | 100</div><div> bgwriter_lru_multiplier | 2</div><div> block_size | 8192</div><div> bonjour | off</div><div> bonjour_name | </div><div> bytea_output | hex</div><div> check_function_bodies | on</div><div> checkpoint_completion_target | 0.9</div><div> checkpoint_flush_after | 32</div><div> checkpoint_timeout | 300</div><div> checkpoint_warning | 30</div><div> client_encoding | UTF8</div><div> client_min_messages | notice</div><div> cluster_name | postgres</div><div> commit_delay | 0</div><div> commit_siblings | 5</div><div> config_file | /postgres/pgdata/postgresql.conf</div><div> constraint_exclusion | partition</div><div> cpu_index_tuple_cost | 0.005</div><div> cpu_operator_cost | 0.0025</div><div> cpu_tuple_cost | 0.01</div><div> cursor_tuple_fraction | 0.1</div><div> data_checksums | on</div><div> data_directory | /postgres/pgdata</div><div> data_directory_mode | 0700</div><div> data_sync_retry | off</div><div> DateStyle | ISO, MDY</div><div> db_user_namespace | off</div><div> deadlock_timeout | 1000</div><div> debug_assertions | off</div><div> debug_pretty_print | on</div><div> debug_print_parse | off</div><div> debug_print_plan | off</div><div> debug_print_rewritten | off</div><div> default_statistics_target | 500</div><div> default_tablespace | </div><div>root@srv145:/postgres/pgscript# </div></span></div>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-63251623289469541152021-09-30T17:45:00.003+08:002021-09-30T17:45:15.734+08:00PostgreSQL check config file location<div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;"><b style="background-color: #ffa400;">#/postgres/pgscript/postgres-pgdata-LOC.sh</b></span></div><div><span style="font-family: Consolas;">#LastUpdate: #11:35 2021.09.18</span></div><div><span style="font-family: Consolas;">################################################</span></div><div><span style="font-family: Consolas;">#su - postgres -c 'psql -h 127.0.0.1 -p 5432'</span></div><div><span style="font-family: Consolas;">################################################</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "===================="</span></div><div><span style="font-family: Consolas;">echo "PostgreSQL [pgdata] location:..."</span></div><div><span style="color: #ff00fe; font-family: Consolas;">su - postgres -c "psql -h 127.0.0.1 -d postgres -c 'show data_directory;'"</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "===================="</span></div><div><span style="font-family: Consolas;">echo "PostgreSQL [config file] location:..."</span></div><div><span style="font-family: Consolas;">#SELECT name,setting,category FROM pg_settings WHERE category like '%Locations%';</span></div><div><span style="color: #ff00fe; font-family: Consolas;">su - postgres -c "psql -h 127.0.0.1 -d postgres -c \"SELECT name,setting,category FROM pg_settings WHERE category like '%Locations%';\""</span></div><div><span style="font-family: Consolas;">#THE_END</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><b>#RESULT:</b><br />root@srv145:/postgres/pgscript# ./postgres-pgdata-LOC.sh</span></div><div><span style="font-family: Consolas;">====================</span></div><div><span style="font-family: Consolas;">PostgreSQL [pgdata] location:...</span></div><div><span style="font-family: Consolas;"> data_directory </span></div><div><span style="font-family: Consolas;">------------------</span></div><div><span style="font-family: Consolas;"> /postgres/pgdata</span></div><div><span style="font-family: Consolas;">(1 row)</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">====================</span></div><div><span style="font-family: Consolas;">PostgreSQL [config file] location:...</span></div><div><span style="font-family: Consolas;"> name | setting | category </span></div><div><span style="font-family: Consolas;">-------------------+----------------------------------+----------------</span></div><div><span style="font-family: Consolas;"> config_file | /postgres/pgdata/postgresql.conf | File Locations</span></div><div><span style="font-family: Consolas;"> data_directory | /postgres/pgdata | File Locations</span></div><div><span style="font-family: Consolas;"> external_pid_file | | File Locations</span></div><div><span style="font-family: Consolas;"> hba_file | /postgres/pgdata/pg_hba.conf | File Locations</span></div><div><span style="font-family: Consolas;"> ident_file | /postgres/pgdata/pg_ident.conf | File Locations</span></div><div><span style="font-family: Consolas;">(5 rows)</span></div>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-77948311071676756122021-09-30T17:21:00.007+08:002021-09-30T17:23:41.927+08:00How to Run PostgreSQL Query Using Bash Script and Command-Line<div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;"><b style="background-color: #ffa400;">#/opt/script/postgres-query-from-shell.sh</b></span></div><div><span style="font-family: Consolas;">#LastUpdate: #11:54 2021.08.02</span></div><div><span style="font-family: Consolas;">#----------------------------------------</span></div><div><span style="font-family: Consolas;">#su - postgres -c 'psql -h 127.0.0.1'</span></div><div><span style="font-family: Consolas;">#su -c "psql -d database_name -c \"SELECT c_defaults FROM user_info WHERE c_uid = 'testuser'\"" postgres</span></div><div><span style="color: #ff00fe; font-family: Consolas;">su - postgres -c "psql -h 127.0.0.1 -d dvdrental -c 'select film_id,title,description from film order by film_id asc limit 5'"</span></div><div><br /></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;"><b style="background-color: #ffa400;">#/opt/script/postgres-query-from-shell-update-load-test.sh</b></span></div><div><span style="font-family: Consolas;">#LastUpdate: #14:13 2021.08.02</span></div><div><span style="font-family: Consolas;">#----------------------------------------</span></div><div><span style="font-family: Consolas;">#su - postgres -c "psql -h 127.0.0.1 -d dvdrental -c 'select film_id,title,description from film order by film_id asc limit 5'"</span></div><div><span style="font-family: Consolas;">#update film set title='Ace Goldfinger-201' where film_id=2</span></div><div><span style="background-color: white; color: red; font-family: Consolas;">for var_temp in {1..1000}</span></div><div><span style="background-color: white; color: red; font-family: Consolas;">do</span></div><div><span style="background-color: white; color: red; font-family: Consolas;"> echo "[DATE: $(date +'%H:%M:%S_%6N')]--------------VALUE: $var_temp"</span></div><div><span style="color: red;"><span style="background-color: white; font-family: Consolas;"> su - postgres -c "</span><span style="background-color: #fcff01; font-family: Consolas;">psql -h 127.0.0.1 -d dvdrental -c \"update film set title='Ace Goldfinger-$var_temp' where film_id=2\"</span><span style="background-color: white; font-family: Consolas;">"</span></span></div><div><span style="background-color: white; color: red; font-family: Consolas;">done</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><span style="color: #cccccc;">#REF:</span><blockquote><div><span style="color: #cccccc;">for var01 in {1..1000}</span></div><div><span style="color: #cccccc;">do</span></div><div><span style="color: #cccccc;"> echo "Welcome $var01 times"</span></div><div><span style="color: #cccccc;">done</span></div><div><span style="color: #cccccc;"><br /></span></div><div><span style="color: #cccccc;">DO</span></div><div><span style="color: #cccccc;">$do$</span></div><div><span style="color: #cccccc;">BEGIN </span></div><div><span style="color: #cccccc;"> FOR i IN 1..25 LOOP</span></div><div><span style="color: #cccccc;"> -- COMMAND</span></div><div><span style="color: #cccccc;"> END LOOP;</span></div><div><span style="color: #cccccc;">END</span></div><div><span style="color: #cccccc;">$do$;</span></div><div></div></blockquote><div><br /></div></span></div>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-56581988299318936312021-09-30T17:16:00.009+08:002021-09-30T17:18:16.124+08:00How to Run MySQL/MariaDB Query Using Bash Script and Command-Line<div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;">#<span style="color: #ff00fe;">/opt/lampp/script/mysql-stats-AbortedConnection.sh</span></span></div><div><span style="font-family: Consolas;">#LastUpdate: #16:09 2021.09.30</span></div><div><span style="font-family: Consolas;">#####################################</span></div><div><span style="font-family: Consolas;"><b>source /opt/lampp/LAMPP_VERSION.txt</b></span></div><div><span style="font-family: Consolas;">#####################################</span></div><div><span style="font-family: Consolas;">#/opt/lampp/bin/mysql</span></div><div><span style="font-family: Consolas;">MYSQL_BIN=$LAMPP_HOME/bin/mysql</span></div><div><span style="font-family: Consolas;">#$MYSQL_BIN -u root -p'xxx' -hlocalhost < mysql-AbortedConnection.sql</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><b>MySQL_Username="root"</b></span></div><div><span style="font-family: Consolas;"><b>MySQL_Password="xxx"</b></span></div><div><span style="font-family: Consolas;"><b>MySQL_DB="mysql"</b></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#__________[SCRIPT]:BEGIN</span></div><div><span style="color: #ff00fe; font-family: Consolas;">cat >temp.sql <<'SQL_STATEMENTS'</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">use pureftpd;</span></div><div><span style="color: #ff00fe; font-family: Consolas;">SHOW GLOBAL STATUS LIKE 'Aborted_connects';</span></div><div><span style="color: #ff00fe; font-family: Consolas;">show variables like "Wait_timeout";</span></div><div><span style="color: #ff00fe; font-family: Consolas;">show variables like "connect_timeout";</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">SQL_STATEMENTS</span></div><div><span style="color: #ff00fe; font-family: Consolas;">$MYSQL_BIN -u $MySQL_Username -p$MySQL_Password $MySQL_DB -e "SOURCE temp.sql"</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">\rm -f temp.sql</span></div><div><span style="font-family: Consolas;">#__________[SCRIPT]:END</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#THE_END</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="color: #999999; font-family: Consolas;">#RESULT:</span></div><div><span style="color: #999999; font-family: Consolas;"># +------------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># | Variable_name | Value |</span></div><div><span style="color: #999999; font-family: Consolas;"># +------------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># | Aborted_connects | 1 |</span></div><div><span style="color: #999999; font-family: Consolas;"># +------------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># +---------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># | Variable_name | Value |</span></div><div><span style="color: #999999; font-family: Consolas;"># +---------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># | wait_timeout | 60 |</span></div><div><span style="color: #999999; font-family: Consolas;"># +---------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># +-----------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># | Variable_name | Value |</span></div><div><span style="color: #999999; font-family: Consolas;"># +-----------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"># | connect_timeout | 10 |</span></div><div><span style="color: #999999; font-family: Consolas;"># +-----------------+-------+</span></div><div><span style="color: #999999; font-family: Consolas;"><br /></span></div><div><span style="color: #999999; font-family: Consolas;">#REF: #https://stackoverflow.com/questions/8055694/how-to-execute-a-mysql-command-from-a-shell-script/8055745</span></div><div><span style="color: #999999; font-family: Consolas;">#https://www.nitendratech.com/database/sql-query-bash-script/</span></div><div><br /></div>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-51108521216702310802021-09-29T16:22:00.004+08:002021-09-29T16:22:42.572+08:00Docker Remove Compeletely<div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;">#/opt/script/docker-remove-compeletely.sh</span></div><div><span style="font-family: Consolas;">#LastUpdate: #15:13 2021.09.29</span></div><div><span style="font-family: Consolas;">#############################################</span></div><div><span style="font-family: Consolas;">echo "#############################################"</span></div><div><span style="font-family: Consolas;">echo "STOP ALL RUNNING CONTAINER:"</span></div><div><span style="font-family: Consolas;">echo "docker container stop $(docker container ls -aq)"</span></div><div><span style="font-family: Consolas;">sleep 5</span></div><div><span style="font-family: Consolas;">docker container stop $(docker container ls -aq)</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "#############################################"</span></div><div><span style="font-family: Consolas;">echo "DELETE ALL CONTAINER:"</span></div><div><span style="font-family: Consolas;">echo "docker container rm $(docker container ls -aq)"</span></div><div><span style="font-family: Consolas;">sleep 5</span></div><div><span style="font-family: Consolas;">docker container rm $(docker container ls -aq)</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "#############################################"</span></div><div><span style="font-family: Consolas;">echo "DELETE ALL IMAGES:"</span></div><div><span style="font-family: Consolas;">echo "docker image prune -a"</span></div><div><span style="font-family: Consolas;">sleep 5</span></div><div><span style="font-family: Consolas;">docker image prune -a</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "#############################################"</span></div><div><span style="font-family: Consolas;">echo "DELETE ALL DOCKER DATA ON SERVER:"</span></div><div><span style="font-family: Consolas;">sleep 5</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">dpkg -l | grep -i docker</span></div><div><span style="font-family: Consolas;">sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli</span></div><div><span style="font-family: Consolas;">sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">sudo apt-get purge -y docker-ce docker-ce-cli containerd.io</span></div><div><span style="font-family: Consolas;">sudo apt-get remove docker docker-engine docker.io containerd runc</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">sudo \rm -rf /var/lib/docker</span></div><div><span style="font-family: Consolas;">sudo \rm -rf /var/lib/containerd</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">find / -name "*docker*" -exec \rm -rf {} \;</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "#############################################"</span></div><div><span style="font-family: Consolas;">echo "DELETE DOCKER NETWORK INTERFACE:"</span></div><div><span style="font-family: Consolas;">echo "ip link delete docker0"</span></div><div><span style="font-family: Consolas;">sleep 5</span></div><div><span style="font-family: Consolas;">ip link delete docker0</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">echo "#############################################"</span></div><div><span style="font-family: Consolas;">echo "CHECKING EXISTED DOCKER on SERVER:"</span></div><div><span style="font-family: Consolas;">echo "find / -name docker"</span></div><div><span style="font-family: Consolas;">echo "find / -name docker.io"</span></div><div><span style="font-family: Consolas;">sleep 5</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#THE_END</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#REF:</span></div><div><span style="font-family: Consolas;">##https://askubuntu.com/questions/935569/how-to-completely-uninstall-docker</span></div><div><br /></div>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-53961553271085780232021-08-11T10:57:00.004+08:002021-08-11T10:57:40.453+08:00LOAD BALANCING MICROSOFT SQL SERVER WITH HAPROXY<h2 style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 3rem; font-weight: 400; line-height: 1em; margin: 1em 0px 0px; outline: 0px; padding: 0px; text-transform: uppercase; transform: rotate(1.5deg); vertical-align: baseline;"><span style="font-family: Consolas;">LOAD BALANCING MICROSOFT SQL SERVER WITH HAPROXY</span></h2><p style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 18px; margin: 2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas;">In case you are told it isn’t possible, I can confirm that it is in fact possible to load balance requests to databases using HAProxy. Here are the specifics.</span></p><p style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 18px; margin: 2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas;">First, the databases in question are SQL 2012 Web Edition databases. They get populated by replication from a SQL 2012 Standard Edition publisher. Reads are sent to these replicated databases, but all writes go to the master database.</span></p><p style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 18px; margin: 2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas;">Here is the entire HAProxy config for a basic database load balancing listener, taking connections from a list of approved addresses and distributing them to three servers, depending on whether they appear to be up.</span></p><pre class="prettyprint prettyprinted" style="border: 1px solid rgb(136, 136, 136); color: #222222; font-size: 18px; margin-bottom: 0px; margin-top: 0px; outline: 0px; overflow: auto; padding: 2px; vertical-align: baseline;"><span style="font-family: Consolas;"><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">listen sql</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">db
bind </span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">*:</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
mode tcp
balance leastconn
acl db_white_list src </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">0.0</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1.1</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1.1</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2.2</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2.2</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">3.3</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">3.3</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
tcp</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">request connection reject </span><span class="kwd" style="border: 0px; color: #000088; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">if</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">!</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">db_white_list
option log</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">health</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">checks
server DB</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.4</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.1</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> check port </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> inter </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1000</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
server DB</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.4</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.2</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> check port </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> inter </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1000</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">
server DB</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.4</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">.</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">4.3</span><span class="pun" style="border: 0px; color: #666600; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> check port </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1433</span><span class="pln" style="border: 0px; color: black; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"> inter </span><span class="lit" style="border: 0px; color: #006666; font-style: inherit; font-weight: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;">1000</span></span></pre><p style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 18px; margin: 2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas;">You can get more advanced here – you could perform more advanced checks using SQL to make sure you have more than just a connection to a port – but you get the idea.</span></p><p style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 18px; margin: 2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas;">What does this cost?</span></p><p style="background-color: #f5efc7; border: 0px; color: #222222; font-size: 18px; margin: 2rem 0px; outline: 0px; padding: 0px; vertical-align: baseline;"><span style="font-family: Consolas;">Unlike HTTP load balancing, you will actually start to see CPU usage on your HAProxy server. You will also see a big jump in network traffic, as web pages are usually smaller than the data you might query to generate them. You’ll need to make sure this isn’t a major problem. You’ll also see a little latency as it will take slightly longer to get your data as there is something else in the middle.</span></p>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-56554785430200194612021-07-23T11:58:00.010+08:002021-07-26T10:05:36.017+08:00 MONITOR ROUTE TABLE IN LINUX<span style="font-family: Consolas;"><b>MONITOR ROUTE TABLE IN LINUX<br /></b><br /></span><div><span style="font-family: Consolas;">#!/bin/bash</span></div><div><span style="font-family: Consolas;">#!/bin/sh -e</span></div><div><span style="font-family: Consolas;">#/opt/script/routing-monitor-stats.sh</span></div><div><span style="font-family: Consolas;">##############################################</span></div><div><span style="font-family: Consolas;">#LastUpdate: 2021.07.23 8:28:04</span></div><div><span style="font-family: Consolas;">##############################################</span></div><div><span style="font-family: Consolas;"># Check ROUTING status every minute:</span></div><div><span style="font-family: Consolas;"># * * * * * /opt/script/routing-monitor-stats.sh >> /opt/log/routing-monitor-stats/routing-monitor-stats.log 2>&1</span></div><div><span style="font-family: Consolas;">##############################################</span></div><div><span style="font-family: Consolas;">now1="$(date +'%Y.%m.%d-%H.%M.%S.%3N')"</span></div><div><span style="font-family: Consolas;">##############################################</span></div><div><span style="font-family: Consolas;">COMMAND1="ip route"</span></div><div><span style="font-family: Consolas;">SUBNET1="192.168.202"</span></div><div><span style="font-family: Consolas;">##############################################</span></div><div><span style="font-family: Consolas;">mkdir -p /opt/log/routing-monitor-stats/</span></div><div><span style="font-family: Consolas;">cd /opt/log/routing-monitor-stats/</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">VAR1=$($COMMAND1 | grep "$SUBNET1" | awk '{print $1}');</span></div><div><span style="color: #ff00fe; font-family: Consolas;">if [ -z "$VAR1" ]</span></div><div><span style="color: #ff00fe; font-family: Consolas;">then</span></div><div><span style="color: #ff00fe; font-family: Consolas;"> /opt/script/route-2-dbzone.sh</span></div><div><span style="color: #ff00fe; font-family: Consolas;"> echo "[$now1]: Subnet [$SUBNET1"".0/24] is MISSING";</span></div><div><span style="color: #ff00fe; font-family: Consolas;">else </span></div><div><span style="color: #ff00fe; font-family: Consolas;"> echo "[$now1]: Subnet [$SUBNET1"".0/24] is RUNNING";</span></div><div><span style="color: #ff00fe; font-family: Consolas;">fi</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;">#truncate file, keep 7days log:</span></div><div><span style="font-family: Consolas;">FILE_NAME="/opt/log/routing-monitor-stats/routing-monitor-stats.log"</span></div><div><span style="font-family: Consolas;">tail -10080 $FILE_NAME > $FILE_NAME.temp && cat $FILE_NAME.temp > $FILE_NAME</span></div><div><span style="font-family: Consolas;">#THE_END</span></div>QWERTY-DVGCOMhttp://www.blogger.com/profile/06391571296402410696noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-37041495961092575362021-07-18T10:47:00.007+08:002021-08-16T20:51:38.116+08:00Windows Subsystem for Linux Installation Guide for Windows 10/11<div style="text-align: left;"><span style="font-family: Calibri;"><b>#Windows Subsystem for Linux Installation Guide for Windows 10/11:</b><br />#REF: https://docs.microsoft.com/en-us/windows/wsl/install-win10<br /><br /># Manual Installation Steps<br /><b># Step 1 - Enable the Windows Subsystem for Linux</b><br /># You must first enable the "Windows Subsystem for Linux" optional feature before installing any Linux distributions on Windows.<br /># Open PowerShell as Administrator and run:<br /># PowerShell<br /><span style="color: #ff00fe;">dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart</span><br /><br /><b># Step 2 - Check requirements for running WSL 2</b><br /># To update to WSL 2, you must be running Windows 10.<br /><br /><b># Step 3 - Enable Virtual Machine feature</b><br /># Before installing WSL 2, you must enable the Virtual Machine Platform optional feature. Your machine will require virtualization capabilities to use this feature.<br /># Open PowerShell as Administrator and run:<br /># PowerShell<br /><span style="color: #ff00fe;">dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart</span><br />#Restart your machine to complete the WSL install and update to WSL 2.<br /><br /><b># Step 4 - Download the Linux kernel update package</b><br /># Download the latest package:<br /><br /><b># Step 5 - Set WSL 2 as your default version</b><br /># Open PowerShell and run this command to set WSL 2 as the default version when installing a new Linux distribution:<br /># PowerShell<br /><span style="color: #ff00fe;">wsl --set-default-version 2</span><br /><br /><b># Step 6 - Install your Linux distribution of choice</b><br /># Open the Microsoft Store and select your favorite Linux distribution.<br /><span style="color: #ff00fe;">wsl --list --verbose</span><br /><br />#9:36 2021.07.18<br />#REF: https://github.com/microsoft/WSL/issues/5393<br /><b style="background-color: #fcff01;">If someone have trouble in Windows 11</b><br />you should:<br /><span style="color: red;">wsl --update<br />wsl --shutdown<br /><br />#https : //wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi</span></span></div><div style="text-align: left;"><span style="font-family: Calibri;"><span style="color: red;"><br /><a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package">Install WSL on Windows 10 | Microsoft Docs</a><br /><br /><br /></span><b>CONGRATULATIONS!</b> You've successfully installed and set up a Linux distribution that is completely integrated with your Windows operating system!</span><br /></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-32513871685827522292021-06-18T14:18:00.020+08:002021-06-18T14:30:23.393+08:00Get file content without comment<div style="text-align: left;"><span style="font-family: Consolas; font-size: medium;"><b style="background-color: #fcff01;">#Select all content, paste it into linux shell</b></span></div><div style="text-align: left;"><span style="font-family: Consolas;">#__________[CONFIG]:BEGIN<br />FILE_NAME="<b><span style="color: red;">/opt/script/file-uncommented-line.sh</span></b>"<br />now1="$(date +'%Y.%m.%d-%H.%M.%S.%3N')"<br />chattr -i -f $FILE_NAME<br />cp -v $FILE_NAME $FILE_NAME-[$now1].bk<br /><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><b style="background-color: #01ffff;">cat <<EOF > $FILE_NAME</b><br />#!/bin/bash<br />#!/bin/sh -e<br />###################################<br />#FILE_NAME: $FILE_NAME<br />#Author: qwerty<br />#LastUpdate: #$now1<br />###################################<br />#Usage: <b><span style="color: #2b00fe;">file-uncommented-line.sh <filename></span></b><br />###################################CONTENT:BEGIN<br />now1="\$(date +'%Y.%m.%d-%H.%M.%S.%3N')"<br />TEMP_LOC="/opt/temp"; mkdir -p \$TEMP_LOC</span></div><div style="text-align: left;"><br /><span style="color: red; font-family: Consolas; font-size: medium;"><b>FileWithFullPath="\$1"<br />FileNameOnly="\${FileWithFullPath##*/}"<br />FileName_WithoutExtension="\${FileNameOnly%.*}"<br />FileExtensionOnly="\${FileNameOnly##*.}"</b></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><span style="color: #ff00fe;"><br />echo "FileWithFullPath : \$FileWithFullPath"<br />echo "FileNameOnly : \$FileNameOnly"<br />echo "FileName_WithoutExtension: \$FileName_WithoutExtension"<br />echo "FileExtensionOnly : \$FileExtensionOnly"</span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><span style="color: #ff00fe;"><br /></span>echo "=========================="<br />echo "REMOVE HASH COMMENT: DONE"<br /><span style="color: #ff00fe;">grep -v '^ *#' \$FileWithFullPath > \$TEMP_LOC/\$FileName_WithoutExtension"_RemovedHash".\$FileExtensionOnly</span><br />sleep 2</span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br />echo "=========================="<br />echo "REMOVE EMPTY LINES: DONE"<br /><span style="color: #ff00fe;">sed '/^\$/d' \$TEMP_LOC/\$FileName_WithoutExtension"_RemovedHash".\$FileExtensionOnly > \$TEMP_LOC/\$FileName_WithoutExtension"_RemovedEmpyLines".\$FileExtensionOnly</span><br />sleep 2</span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br />echo "=========================="<br />echo "RESULT: "<br />ls -l \$TEMP_LOC/\$FileName_WithoutExtension*<br />###################################CONTENT:END<br />#THE-END<br /><b style="background-color: #01ffff;">EOF</b></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><b><br /></b>cat $FILE_NAME<br />chmod +x $FILE_NAME<br />chattr +i -f $FILE_NAME<br />echo "FILE_NAME: $FILE_NAME"; echo ""<br />#__________[CONFIG]:END<br /></span><br /><br /><br /><span style="font-family: Calibri;"><b>#RESULT:</b><br /></span><div><span style="font-family: Consolas;">root@host /opt/temp# <span style="color: #741b47;"><b>file-uncommented-line.sh /etc/MailScanner/MailScanner.conf </b></span></span></div><div><span style="color: #741b47; font-family: Consolas;">FileWithFullPath : <b>/etc/MailScanner/MailScanner.conf</b></span></div><div><span style="color: #741b47; font-family: Consolas;">FileNameOnly : </span><span style="color: #ff00fe; font-family: Consolas;"><b>MailScanner.conf</b></span></div><div><span style="font-family: Consolas;"><span style="color: #741b47;">FileName_WithoutExtension: </span><b><span style="color: #ff00fe;">MailScanner</span></b></span></div><div><span style="font-family: Consolas;"><span style="color: #741b47;">FileExtensionOnly : </span><b><span style="color: #ff00fe;">conf</span></b></span></div><div><span style="color: #741b47; font-family: Consolas;">==========================</span></div><div><span style="color: #741b47; font-family: Consolas;">REMOVE HASH COMMENT: DONE</span></div><div><span style="color: #741b47; font-family: Consolas;">==========================</span></div><div><span style="color: #741b47; font-family: Consolas;">REMOVE EMPTY LINES: DONE</span></div><div><span style="color: #741b47; font-family: Consolas;">==========================</span></div><div><span style="color: #741b47; font-family: Consolas;">RESULT: </span></div><div><span style="color: #741b47; font-family: Consolas;">-rw-r--r--. 1 root root 14609 Jun 18 14:22 /opt/temp/MailScanner_RemovedEmpyLines.conf</span></div><div><span style="color: #741b47; font-family: Consolas;">-rw-r--r--. 1 root root 14983 Jun 18 14:22 /opt/temp/MailScanner_RemovedHash.conf</span></div><div><span style="font-family: Consolas;">root@host /opt/temp# </span></div><div style="font-family: Consolas;"><br /></div><span style="font-family: Consolas;"></span></div><div id="gtx-trans" style="left: -44px; position: absolute; top: 359.986px;"><div class="gtx-trans-icon"></div></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-81094465051361101812020-12-14T15:08:00.010+08:002020-12-14T15:31:15.553+08:00GitHub Download SubFolder Only with SVN<div style="text-align: left;"><span style="font-family: Consolas;">#13:57 2020.12.14<br /></span><span style="font-family: Consolas;">#Git-Clone-SubFolderOnly-C3-UsingSVN.sh<br /></span><span style="font-family: Consolas;">#REF: https://coderwall.com/p/o2fasg/how-to-download-a-project-subdirectory-from-github<br /></span><span style="color: red; font-family: Consolas;"><b>sudo apt-get install subversion</b></span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;">#REPO: <br /></span><span style="font-family: Consolas;">#FULL: <br /></span><span style="font-family: Consolas;">#https://<span style="background-color: #fcff01;">github.com/mgiay/UbuntuDebianEnv.git</span><br /></span><span style="font-family: Consolas;">#https://github.com/mgiay/UbuntuDebianEnv/</span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;">#SUB : https://github.com/mgiay/UbuntuDebianEnv/tree/main/<span style="background-color: #fcff01;">HaProxy/HaProxy-2.2.6</span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span><span style="color: red;"><b><span style="font-family: Consolas;">GITHUB_USERNAME="mgiay"<br /></span><span style="font-family: Consolas;">GITHUB_PROJECT="UbuntuDebianEnv"<br /></span><span style="font-family: Consolas;">GITHUB_SUB_FLD="HaProxy/HaProxy-2.2.6"<br /></span></b></span><span style="font-family: Consolas;"><span style="color: red;"><b>DEST_LOCAL="HaProxy-2.2.6"</b></span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><span style="color: red;"><b><br /></b></span></span><span style="font-family: Consolas;">#LISTING: <span style="background-color: #ffa400;">svn ls https://github.com/<b>$GITHUB_USERNAME/$GITHUB_PROJECT</b></span><br /></span><span style="font-family: Consolas;">#DOWNLOADING: <br /></span><span style="font-family: Consolas;"><span style="color: red;"><b>svn export https://github.com/$GITHUB_USERNAME/$GITHUB_PROJECT/trunk/$GITHUB_SUB_FLD $DEST_LOCAL</b></span><br /></span><span style="font-family: Consolas;">#</span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><b>#RESULT:</b></span></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRFE8DeDBeRynUF_I2-gysHm2KUnetrvPxp-iA0CcfHa_WYREdcoYet66DUXTSC9godrct2HuhO1UPVSBOqfEJIFkYWEVEEPe0CI3xwKm4DZFt3LogrkHjywgFsQsTOE1BrPE7PQB9rMzG/s969/20201214_02.07.52.PM_3672_.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="387" data-original-width="969" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRFE8DeDBeRynUF_I2-gysHm2KUnetrvPxp-iA0CcfHa_WYREdcoYet66DUXTSC9godrct2HuhO1UPVSBOqfEJIFkYWEVEEPe0CI3xwKm4DZFt3LogrkHjywgFsQsTOE1BrPE7PQB9rMzG/w602-h241/20201214_02.07.52.PM_3672_.png" width="602" /></a></div><br /><span style="font-family: Consolas;"><br /></span></div><div id="gtx-trans" style="left: 610px; position: absolute; top: 301.097px;"><div class="gtx-trans-icon"></div></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-17689006908804617782020-11-26T17:18:00.007+08:002020-11-27T00:15:26.251+08:00Linux CLI, SpeedTest<span style="font-family: Consolas;">#/opt/script/SPEEDTEST.sh<br />#10:06 2020.04.07<br />##############################<br />#REF: https://williamyaps.github.io/wlmjavascript/servercli.html<br />now1="$(date +'%Y.%m.%d_%H.%M.%S.%3N')"<br />CITY="Hanoi"<br />##############################</span><div><span style="font-family: Consolas;"><br />#_________[SpeedTest_Script]:BEGIN<br />RESULT_FLD="/opt/temp"<br />mkdir -p $RESULT_FLD<br />mkdir -p /opt/script/;cd /opt/script/<br />#<span style="background-color: #fcff01;">wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py</span><br />#chmod +x speedtest.py<br /><b><span style="color: red;">/opt/script/speedtest.py --list </span></b>> $RESULT_FLD/speedtest-server-list-all.txt<br />cat $RESULT_FLD/speedtest-server-list-all.txt | grep "$CITY" | awk '{gsub(")",""); print $1}' > $RESULT_FLD/$CITY-isp-full-name.txt</span><div><span style="font-family: Consolas;"><br />cd $RESULT_FLD<br />while read LINE; \<br /><b><span style="color: red;">do /opt/script/speedtest.py --server "$LINE";</span></b> \<br />done < $RESULT_FLD/$CITY-isp-full-name.txt > $RESULT_FLD/$CITY-isp-result-$now1.txt<br />#_________[SpeedTest_Script]:END</span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="font-family: Consolas;"><br />#______________________DELETE_OLD_DATA:BEGIN<br /># SERVER_NAME=$(hostname)<br /># mkdir -p /opt/bk/$SERVER_NAME/<br /># cd /opt/bk/$SERVER_NAME/<br />NumberOfFileWantToKeep=3<br />#Giu lai [3] file moi nhat trong thu muc [$FOLDER_DST]:<br />#XOA FILE:<br />#/bin/rm -rf `ls -t "result*.txt" | awk 'NR>3'`<br />/bin/rm -rf `ls -t *.txt | awk 'NR>3'`<br />#XOA FOLDER:<br />/bin/rm -rf `ls -td */ | awk 'NR>3'`<br />#______________________DELETE_OLD_DATA:END<br />#THE_END<br /><br /></span></div></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-77271263790877215252020-11-25T16:38:00.002+08:002020-11-25T16:38:24.041+08:00Solve “The following signatures were invalid: BADSIG” in Ubuntu<div style="text-align: left;"><span style="font-family: Consolas;"> #15:30 2020.11.25</span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;"><b>Solve “The following signatures were invalid: BADSIG” in Ubuntu</b><br /></span><span style="font-family: Consolas;">In this post, we will discuss another very common problem that occurs when users upgrade or update their system. This error is “BADSIG” error which looks something like this:</span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="color: red; font-family: Consolas;">W: A error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://extras.ubuntu.com precise Release: <b>The following signatures were </b></span></div><div style="text-align: left;"><span style="color: red;"><span style="font-family: Consolas;"><b>invalid: BADSIG 16126D3A3E5C1192 Ubuntu Extras Archive Automatic Signing Key</b></span><span style="font-family: Consolas;"><br /></span></span><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="color: red;"><span style="font-family: Consolas;">W: GPG error: http://ppa.launchpad.net precise Release:</span><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;"><b>The following signatures were invalid: BADSIG 4C1CBC1B69B0E2F4 Launchpad PPA for Jonathan French W: Failed to fetch </b></span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;">http://extras.ubuntu.com/ubuntu/dists/precise/Release</span><span style="font-family: Consolas;"><br /></span><span style="color: #ff00fe;"><span style="font-family: Consolas;">sudo apt-get clean<br /></span><span style="font-family: Consolas;">cd /var/lib/apt<br /></span><span style="font-family: Consolas;">sudo mv lists oldlist<br /></span><span style="font-family: Consolas;">sudo mkdir -p lists/partial<br /></span><span style="font-family: Consolas;">sudo apt-get clean<br /></span><span style="font-family: Consolas;">sudo apt-get update</span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><span style="color: #ff00fe;"><br /></span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><span style="color: #ff00fe;"><br /></span></span><span style="font-family: Consolas;">REF: https://itsfoss.com/solve-badsig-error-quick-tip/</span></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-6123322198979423732020-11-19T15:45:00.026+08:002020-11-20T15:47:02.589+08:00HaProxy: re-route to other backend based on REGEX<div><span style="font-family: Calibri;">acl URL_upload_mgiay_com hdr(host) -i upload.mgiay.com</span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="background-color: #fcff01; font-family: Calibri;">#CURRENT STORAGE: node02</span></div><div><span style="font-family: Calibri;">acl URL_file_mgiay_com hdr(host) -i <span style="color: red;">file.mgiay.com</span></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="background-color: #fcff01; font-family: Calibri;">#OLD STORAGE: node01</span></div><div><span style="font-family: Calibri;">#_____OLD_STORAGE_[10.0.2.127]:BEGIN</span></div><div><span style="color: red; font-family: Consolas;">#2010-2019:</span></div><div><span style="font-family: Consolas;"><span style="color: red;">acl <b>URL_file_mgiay_com_s01 </b></span><span style="color: #ff00fe;"><b>url_reg </b></span><span style="color: red;">/(resize|crop)/\d+x\d+/201[0-9]/\d{1,2}/</span></span></div><div><span style="font-family: Consolas;"><span style="color: red;">acl <b>URL_file_mgiay_com_s01 </b></span><b><span style="color: #ff00fe;">url_reg </span></b><span style="color: red;">/201[0-9]/\d{1,2}/</span></span></div><div><span style="font-family: Consolas;"><br /></span></div><div><span style="color: red; font-family: Consolas;">#2020.01-2020.10:</span></div><div><span style="font-family: Consolas;"><span style="color: red;">acl <b>URL_file_mgiay_com_s01 </b></span></span><b style="font-family: Consolas;"><span style="color: #ff00fe;">url_reg </span></b><span style="font-family: Consolas;"><span style="color: red;">/(resize|crop)/\d+x\d+/2020/(0[1-9]|10)/</span></span></div><div><span style="font-family: Consolas;"><span style="color: red;">acl <b>URL_file_mgiay_com_s01 </b></span></span><b style="font-family: Consolas;"><span style="color: #ff00fe;">url_reg </span></b><span style="font-family: Consolas;"><span style="color: red;">/2020/(0[1-9]|10)/</span></span></div><div><span style="color: red; font-family: Consolas;"><br /></span></div><div><span style="color: red; font-family: Consolas;">#2020.11.01-2020.11.18:</span></div><div><span style="font-family: Consolas;"><span style="color: red;">acl <b>URL_file_mgiay_com_s01 </b></span></span><b style="font-family: Consolas;"><span style="color: #ff00fe;">url_reg </span></b><span style="font-family: Consolas;"><span style="color: red;">/(resize|crop)/\d+x\d+/2020/11/(0[1-9]|1[0-8])/</span></span></div><div><span style="font-family: Consolas;"><span style="color: red;">acl <b>URL_file_mgiay_com_s01 </b></span></span><b style="font-family: Consolas;"><span style="color: #ff00fe;">url_reg </span></b><span style="font-family: Consolas;"><span style="color: red;">/2020/11/(0[1-9]|1[0-8])/</span></span></div><div><span style="font-family: Calibri;">#_____OLD_STORAGE_[10.0.2.127]:END</span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;">use_backend BE_URL_upload_mgiay_com if URL_upload_mgiay_com</span></div><div><span style="color: red; font-family: Calibri;">use_backend <b>BE_URL_file_mgiay_com_s01 </b>if URL_file_mgiay_com URL_file_mgiay_com_s01</span></div><div><span style="font-family: Calibri;">use_backend <b>BE_URL_file_mgiay_com </b>if URL_file_mgiay_com</span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;"><br /></span></div><div><span style="font-family: Calibri;">#_____________________________________________mgiay_STORAGE:BEGIN</span></div><div><span style="font-family: Calibri;">backend <b>BE_URL_upload_mgiay_com</b></span></div><div><span style="font-family: Calibri;"> mode http</span></div><div><span style="font-family: Calibri;"> balance roundrobin</span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server Storage_127_8081 10.0.2.127:8081 check</span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server Storage_100_8081 2.2.2.100:8081 check backup</span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server 2.2.2.126:8081 2.2.2.126:8081 check</span></div><div><span style="font-family: Calibri;"> server 10.0.2.126:8081 10.0.2.126:8081 check</span></div><div><span style="font-family: Calibri;"> </span></div><div><span style="font-family: Calibri;">backend <b><span style="color: red;">BE_URL_file_mgiay_com_s01</span></b></span></div><div><span style="font-family: Calibri;"> <span style="color: #cccccc;"> #acl blacklist src -f /etc/haproxy/blacklist.lst</span></span></div><div><span style="color: #cccccc; font-family: Calibri;"> #http-request deny if blacklist</span></div><div><span style="font-family: Calibri;"> mode http</span></div><div><span style="font-family: Calibri;"> <span style="color: #cccccc;"> #balance source</span></span></div><div><span style="font-family: Calibri;"> balance roundrobin</span></div><div><span style="color: #cccccc; font-family: Calibri;"> #redirect scheme https code 301 if !{ ssl_fc }</span></div><div><span style="font-family: Calibri;"> cookie BE_URL_file_mgiay_com_s01 insert indirect</span></div><div><span style="font-family: Calibri;"> <span style="color: #cccccc;"> #server Storage_2.92_63202 10.0.2.92:63202 check</span></span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server Storage_127_64280 10.0.2.127:64280 check backup</span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server Storage_100_64280 10.0.2.100:64280 check backup</span></div><div><span style="font-family: Calibri;"> server 10.0.2.127:64280 10.0.2.127:64280 cookie 127_64280 weight 1 check</span></div><div><span style="font-family: Calibri;"> </span></div><div><span style="font-family: Calibri;">backend <b>BE_URL_file_mgiay_com</b></span></div><div><span style="font-family: Calibri;"> <span style="color: #cccccc;"> # acl blacklist src -f /etc/haproxy/blacklist.lst</span></span></div><div><span style="color: #cccccc; font-family: Calibri;"> # http-request deny if blacklist</span></div><div><span style="font-family: Calibri;"> mode http</span></div><div><span style="font-family: Calibri;"> balance roundrobin</span></div><div><span style="font-family: Calibri;"> <span style="color: #cccccc;">#server Storage_2.92_63202 10.0.2.92:63202 check </span></span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server Storage_127_64280 10.0.2.127:64280 check backup </span></div><div><span style="color: #cccccc; font-family: Calibri;"> #server Storage_100_64280 10.0.2.100:64280 check backup</span></div><div><span style="font-family: Calibri;"> cookie BE_URL_file_mgiay_com insert indirect</span></div><div><span style="font-family: Calibri;"> server 10.0.2.126:64280 10.0.2.126:64280 cookie 126_64280 weight 1 check</span></div><div><span style="font-family: Calibri;">#_____________________________________________mgiay_STORAGE:END</span></div><div><br /></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0tag:blogger.com,1999:blog-4807756034818580522.post-27341658921152404692020-11-13T11:00:00.001+08:002020-11-13T11:00:09.169+08:00GNUPLOT: Drawing chart in Linux Terminal<div style="text-align: left;"><span style="color: red;"><span style="font-family: Consolas;">#sudo apt-get -y install gnuplot-nox<br /></span><span style="font-family: Consolas;">#sudo apt-get -y install gnuplot-qt<br /></span><span style="font-family: Consolas;">#sudo apt-get -y install gnuplot-x11</span></span></div><div style="text-align: left;"><span style="color: red;"><span style="font-family: Consolas;">#sudo apt-get -y</span><span style="font-family: Consolas;"> </span><span style="font-family: Consolas;">install plotutils</span></span></div><div style="text-align: left;"><span style="color: red;"><span style="font-family: Consolas;"><br /></span><span style="font-family: Consolas;">time (gnuplot < gpcommands.txt)</span></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="font-family: Consolas;"><br /></span></div><div style="text-align: left;"><span style="background-color: #ffa400;"><span style="font-family: Consolas;">#</span><span style="font-family: Consolas;">gpcommands.txt</span></span></div><div style="text-align: left;"><div><span style="color: #ff00fe; font-family: Consolas;">#9:16 2020.11.13</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#https://bhoey.com/blog/simple-time-series-graphs-with-gnuplot/</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#http://gnuplot.sourceforge.net/docs_4.2/node274.html</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#https://alvinalexander.com/technology/gnuplot-charts-graphs-examples/</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">set xdata time # Indicate that x-axis values are time values</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">#2020.11.12-17:17:13</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set timefmt "%Y-%m-%d" # Indicate the pattern the time values will be in</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set timefmt "%Y.%m.%d-%H:%M:%S" # Indicate the pattern the time values will be in</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set format x "%m/%y" # Set how the dates will be displayed on the plot</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set format x "%Y.%m.%d-%H:%M:%S" # Set how the dates will be displayed on the plot</span></div><div><span style="color: #ff00fe; font-family: Consolas;"> </span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set xrange ["2020.11.01-00:00:00":"2020.11.30-23:59:00"] # Set x-axis range of values</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set yrange [0:30] # Set y-axis range of values</span></div><div><span style="color: #ff00fe; font-family: Consolas;"> </span></div><div><span style="color: #ff00fe; font-family: Consolas;">set key off # Turn off graph legend</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set xtics rotate by -90 # Rotate dates on x-axis 45deg for cleaner display</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set title 'REDIS (2.2.2.124:6390) MONITOR CHART RESULT' # Set graph title</span></div><div><span style="color: #ff00fe; font-family: Consolas;"> </span></div><div><span style="color: #ff00fe; font-family: Consolas;">set xlabel "Time (2020.11.12-17:17:04 --> 2020.11.13-07:51:37)"</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set ylabel "Metric (ms)"</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set autoscale y</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set autoscale x</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set xrange ["2020.11.12-17:00:00":"2020.11.13-08:00:00"]</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set grid</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set timestamp</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set terminal jpeg # Set the output format to jpeg</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set output 'output-2.jpg' # Set output file to output.jpg</span></div><div><span style="color: #ff00fe; font-family: Consolas;"><br /></span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set terminal png # Set the output format to PNG</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set terminal png size 1280, 1024</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set terminal png size 5000, 1024</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set terminal png size 3000, 1024</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#set terminal png size 1920, 1080</span></div><div><span style="color: #ff00fe; font-family: Consolas;">set output "RedisMetricMonitor.png"</span></div><div><span style="color: #ff00fe; font-family: Consolas;"> </span></div><div><span style="font-family: Consolas;"><span style="color: #ff00fe;">#plot 'result.txt' using 1:2 with linespoints linetype 55000 linewidth 2</span></span></div><div><span style="color: #ff00fe; font-family: Consolas;">#plot 'result.txt' using 1:2 with lines linetype 55000 linewidth 2</span></div><div><span style="color: #ff00fe; font-family: Consolas;">#plot 'result.txt' using 1:2 with filledcurves linetype 55000 linewidth 2</span></div><div><span style="color: #ff00fe; font-family: Consolas;">plot 'result.txt' using 1:2 with lines</span></div><div><br /><br /><br /><b style="font-family: Consolas;">#result.txt</b><br /><div><span style="font-family: Consolas;">2020.11.12-17:17:04<span style="white-space: pre;"> </span>0.36</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:05<span style="white-space: pre;"> </span>0.35</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:06<span style="white-space: pre;"> </span>0.34</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:07<span style="white-space: pre;"> </span>0.26</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:08<span style="white-space: pre;"> </span>0.41</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:09<span style="white-space: pre;"> </span>0.21</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:10<span style="white-space: pre;"> </span>0.23</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:11<span style="white-space: pre;"> </span>0.23</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:12<span style="white-space: pre;"> </span>0.31</span></div><div><span style="font-family: Consolas;">2020.11.12-17:17:13<span style="white-space: pre;"> </span>0.23</span></div><br /><br /><br /></div><br /></div>MGIAY-ADMINhttp://www.blogger.com/profile/06257868162385000410noreply@blogger.com0