2017年10月30日 星期一

[Javascript] Chartjs Doughnut Center Text

Center register

 Chart.pluginService.register({  
      beforeDraw: function (chart) {  
           if (chart.config.options.elements.center) {  
                //Get ctx from string  
                var ctx = chart.chart.ctx;  
                          //Get options from the center object in options  
                var centerConfig = chart.config.options.elements.center;  
                var fontStyle = centerConfig.fontStyle || 'Arial';  
                          var txt = centerConfig.text;  
                var color = centerConfig.color || '#000';  
                var sidePadding = centerConfig.sidePadding || 20;  
                var sidePaddingCalculated = (sidePadding/100) * (chart.innerRadius * 2)  
                //Start with a base font of 30px  
                ctx.font = "30px " + fontStyle;  
                          //Get the width of the string and also the width of the element minus 10 to give it 5px side padding  
                var stringWidth = ctx.measureText(txt).width;  
                var elementWidth = (chart.innerRadius * 2) - sidePaddingCalculated;  
                // Find out how much the font can grow in width.  
                var widthRatio = elementWidth / stringWidth;  
                var newFontSize = Math.floor(30 * widthRatio);  
                var elementHeight = (chart.innerRadius * 2);  
                // Pick a new font size so it will not be larger than the height of label.  
                var fontSizeToUse = Math.min(newFontSize, elementHeight);  
                          //Set font settings to draw it correctly.  
                ctx.textAlign = 'center';  
                ctx.textBaseline = 'middle';  
                var centerX = ((chart.chartArea.left + chart.chartArea.right) / 2);  
                var centerY = ((chart.chartArea.top + chart.chartArea.bottom) / 2);  
                ctx.font = fontSizeToUse+"px " + fontStyle;  
                ctx.fillStyle = color;  
                //Draw text in center  
                ctx.fillText(txt, centerX, centerY);  
           }  
      }  
 });  

use example

 options: {  
      responsive: true,  
      legend: {  
           display: false  
      },  
      elements: {  
           center: {  
                text: '$'+(cost_vm+cost_storage+cost_data_management).toFixed(3),  
                color: '#FF6384', // Default is #000000  
                fontStyle: 'Arial', // Default is Arial  
                sidePadding: 20 // Defualt is 20 (as a percentage)  
           }  
      }  
 },  

2017年10月29日 星期日

[Linux] 排程執行資料庫語法

首先要先學會Crontab,如果還不會的話請看我的上一篇文章,有介紹Crontab,在ubuntu跟centos中crontab用法是一樣的。

進入主題,如何安全的使用mysql command 語法。
mysql_config_editor是一個好用又安全的方式(加密)

mysql_config_editor set --login-path=remote
--host=remote.example.com --user=remoteuser --password
輸入完後他會叫你打密碼。

mysql_config_editor print --all 可以查看你的設定

之後你只要用
mysql --login-path=remote 就可以直接執行mysql command,可以避免密碼透漏在crontab file當中。

舉個範例
mysql --login-path=remote --database=your_database_name --execute="指令(更新、備份、刪除)"


如果是一班狀態的話會變成
mysql --user=[username] --password=[password] --database=[db name] --execute="指令"


是不是很簡單呢XD

2017年10月25日 星期三

[Linux] CentOS7.3 install wkhtmltopdf

yum install -y libpng
yum install -y libjpeg
yum install -y openssl

yum install -y libX11
yum install -y libXext
yum install -y libXrender
yum install -y xorg-x11-fonts-Type1
yum install -y xorg-x11-fonts-75dpi

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
unxz wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
tar -xvf wkhtmltox-0.12.4_linux-generic-amd64.tar
mv wkhtmltox/bin/* /usr/local/bin/
rm -rf wkhtmltox
rm -f wkhtmltox-0.12.4_linux-generic-amd64.tar

中文顯示問題的話請安裝
yum install wqy-zenhei-fonts

2017年10月12日 星期四

[Linux] Crontab 指令(排程)

crontab 這個指令所設定的工作將會循環的一直進行下去! 可循環的時間為分鐘、小時、每週、每月或每年等。

簡單介紹常用指令:
crontab -e 編輯排程 (edit cron)
crontab -r 移除排程 (remove cron)
crontab -l 顯示目前排程 (list cron)

contab格式如下

分 時 日 月 星期 要執行的指令

例如:
如果您要每30分鐘執行某種指令,請使用以下程式碼。
*/30 * * * * 指令

如果您要每15分鐘執行某種指令,請使用以下程式碼。
*/15 * * * * 指令

每分鐘執行一次指令
* * * * * 指令

每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * 指令


參考:
http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

[CentOS] httpd port 9000 to 80

<VirtualHost *:80>     ServerName domain.name     ProxyRequests Off     ProxyVia Block     ProxyPreserveHost On     <Proxy *...