2018年5月9日 星期三

[CentOS] httpd port 9000 to 80

<VirtualHost *:80>
    ServerName domain.name

    ProxyRequests Off
    ProxyVia Block
    ProxyPreserveHost On

    <Proxy *>
         Require all granted
    </Proxy>

    ProxyPass / http://localhost:9000/
    ProxyPassReverse / http://localhost:9000/
</VirtualHost>

2018年3月7日 星期三

laravel validations

//Controller
$validator = Validator::make($request->all(), [
'name' => 'required|max:255'
        ],
        [
            'name.required' => '請輸入名稱!',
        ]);

if ($validator->fails()) {
return back()->withErrors($validator)->withInput();
        }

//blade
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif



//api validation
$this->validate($request, [
             'is_important' => 'required',
         ]);

2017年12月12日 星期二

[Linux] CentOS Could not retrieve mirrorlist問題

一開始裝好CentOS7 DNS要自己設定不然不能update之類等指令

首先
vi /etc/resolv.conf

裡面加入GoogleDNS
nameserver 8.8.8.8

存檔在執行指令就可以瞜

2017年11月5日 星期日

[Linux] 安全網站資料夾設定

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
laravel storage 要給權限
sudo chmod -R 777 storage/

[Linux] ubuntu虛擬目錄

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2ensite example.com
sudo systemctl restart apache2

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

[CentOS] httpd port 9000 to 80

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