資料庫往往是有看沒有懂
圖解秒懂SQL說話 hpxvrus 發表在 痞客邦 留言(0) 人氣(0)
以下有兩個大項目需要設定,依序為:
若何申請Google Maps API金鑰?
若何啟用Google Maps API服務?hpxvrus 發表在 痞客邦 留言(0) 人氣(0)
在數據統計和分析營業中,有時會碰到客戶需要在一個圖表中將柱狀圖、餅狀圖、曲線圖的都表現出來,便可以從柱狀圖中看出具體數據、又能從曲線圖中看出變化趨向,還能從餅狀圖中看出各部門數據比重。Highcharts可以輕鬆實現三圖合一的結果。hpxvrus 發表在 痞客邦 留言(0) 人氣(0)

在上篇
若何使用google adwords 做關鍵字告白這篇介紹串接 google analytics監看adwords廣告轉換成效
影片申明
點選 Adwords 右上角 對象與設定 ->
google analytics(剖析)
點選左下側
設定如沒有帳戶請先建立帳戶
有帳戶點
確立資源點擊
網站 (評估您的網站)填入 名稱及網址
這時會給
全域網站代碼 (gtag.js)把這段代碼放入你的網站每頁的底部追蹤代碼設定好今後
點選
方針->
新增目標拉到最下面->自訂
填入
方針名稱選擇
方針網址現實保持目標
(網址不用填,填方針頁面名稱就好)如:http://www.sinpipe.com/appointment.html 管乾淨 線上預約 這網址
只要填
/appointment.html貯存便可
再產生一個方針監控逗留時候(客戶逗留在網站的時候)
填入名稱
類型:
時候長度時間選
4分鐘這時候已產出兩個目的了
回到Adwords 點選
東西與設定->轉換點選
+選擇 匯入->google analytics選擇方才建樹的方針
線上預約(方才不是創立兩個方針?怎麼只有一個)
如果要選另一個,請 期待幾分鐘同步後
重複匯入的動作 即可
這時候已匯入目標了
重複匯入的動作
便可看見另外一個方針
點選 ˋ轉換動作
線上預約編纂設定計算體式格局 -> 每次點閱後轉換回溯期 -> 60天歸因模式 -> 線性貯存
此刻可監測告白轉換的後果了
以下是
之前成立的方針轉換來說明後果
數據轉換需要時候(從一個星期到一個月不等才會有了局)
hpxvrus 發表在 痞客邦 留言(0) 人氣(0)

網頁設計許多人用BootStrap 圖片因寬度縮小看起來很高興
但是縮得太小的時候,高度會到達最小高度因此無法往下縮
會造成圖片變形,如圖
hpxvrus 發表在 痞客邦 留言(0) 人氣(0)
說明:在Linux下把excel數據導入到mysql數據庫中,這其實是很搞笑的一個流動!幾近很少有法式員研究過這個問題吧?如此失常的問題,估計我是第一個研究的!呵呵,完滿是自找苦吃~~,但是今天完了這項太有挑戰性的工作!
先清算一下思緒先,~~
首先:需要把文件上傳到辦事器上
然後:讀取excel數據列顯示出來
然後:讓用戶選擇字段的對應關係
然後:提交數據,讀取字段的對應關係
最後:批量導入數據,刪除一時文件
一共是以上五步調!我們一步步剖析~~~
第一步:下載附件中的phpexcelparser4.rar ,這個文件是上傳excel盜辦事器上並以web形式展示出來的!這個一般沒有問題的!問題是法式的做法是把表存為且則表而沒有真正保存下來,所以起首要更改法式代碼為
-
- //uc轉換成html
- function uc2html($str) {
- $ret = '';
- for( $i=0; $i<strlen($str)/2; $i++ ) {
- $charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);
- // $ret .= '&#'.$charcode;
- if($charcode<127)
- $ret .=chr($charcode);
- else
- $ret .= iconv("utf-8","utf-8",u2utf8($charcode));
- }
- return $ret;
- }
- //html轉成utf8
- function u2utf8($c) {
- $str="";
- if ($c < 0x80) {
- $str.=$c;
- } else if ($c < 0x800) {
- $str.=chr(0xC0 | $c>>6);
- $str.=chr(0x80 | $c & 0x3F);
- } else if ($c < 0x10000) {
- $str.=chr(0xE0 | $c>>12);
- $str.=chr(0x80 | $c>>6 & 0x3F);
- $str.=chr(0x80 | $c & 0x3F);
- } else if ($c < 0x200000) {
- $str.=chr(0xF0 | $c>>18);
- $str.=chr(0x80 | $c>>12 & 0x3F);
- $str.=chr(0x80 | $c>>6 & 0x3F);
- $str.=chr(0x80 | $c & 0x3F);
- }
- return $str;
- }
-
- if (trim($_POST["cmd"])=="upload")
- {
- $err_corr = "Unsupported format or file corrupted";
- $excel_file_size;
- $excel_file = $_FILES['excel_file'];
- $uploadservername=$UploadAbsPath."tmpexcel/".$_FILES['excel_file']['name'];
- echo($uploadservername);
- if (!is_writeable($UploadAbsPath."tmpexcel/"))
- {
- echo "目次不可寫!"; exit;
- }
- else
- {
- echo "目次可寫!";
- }
- if (move_uploaded_file($_FILES['excel_file']['tmp_name'], $uploadservername))
- {
- echo("上傳成功");
- }
- else
- {
- echo("上傳失敗");
- }
- $excel_file=$uploadservername;
- //if( $excel_file )
- // $excel_file = $_FILES['excel_file']['tmp_name'];
-
-
- if( $excel_file == '' ) fatal("No file uploaded");
-
-
- $exc = new ExcelFileParser("debug.log", ABC_NO_LOG);//ABC_NO_LOG ABC_VAR_DUMP);
- //echo($excel_file."|");
-
- $style = $_POST['style'];
- if( $style == 'old' )
- {
- $fh = @fopen ($excel_file,'rb');
- if( !$fh ) fatal("No file uploaded");
- if( filesize($excel_file)==0 ) fatal("No file uploaded");
- $fc = fread( $fh, filesize($excel_file) );
- @fclose($fh);
- if( strlen($fc) < filesize($excel_file) )
- fatal("Cannot read file");
-
- $time_start = getmicrotime();
- $res = $exc->ParseFromString($fc);
- $time_end = getmicrotime();
- }
- elseif( $style == 'segment' )
- {
- $time_start = getmicrotime();
- $res = $exc->ParseFromFile($excel_file);
- $time_end = getmicrotime();
- }
-
-
- switch ($res) {
- case 0: break;
- case 1: fatal("Can't open file");
- case 2: fatal("File too small to be an Excel file");
- case 3: fatal("Error reading file header");
- case 4: fatal("Error reading file");
- case 5: fatal("This is not an Excel file or file stored in Excel < 5.0");
- case 6: fatal("File corrupted");
- case 7: fatal("No Excel data found in file");
- case 8: fatal("Unsupported file version");
-
-
- default:
- fatal("Unknown error");
- }
-
-
- /*
- print '<pre>';
- print_r( $exc );
- print '</pre>';
- exit;
- */
-
-
- show_time();
-
-
- echo <<<LEG
- <b>Legend:</b><br><br>
- <form name='doform' action='' method='post'>
- <input type='hidden' name='action' value='do'>
- <input type='hidden' name='excel_file' value=$excel_file>
- <input type='hidden' name='style' value=$style>
- <table border=1 cellspacing=0 cellpadding=0>
- <tr><td>Data type</td><td>Description</td></tr>
- <tr><td class=empty> </td><td class=index>An empty cell</td></tr>
- <tr><td class=dt_string>ABCabc</td><td class=index>String</td></tr>
- <tr><td class=dt_int>12345</td><td class=index>Integer</td></tr>
- <tr><td class=dt_float>123.45</td><td class=index>Float</td></tr>
- <tr><td class=dt_date>123.45</td><td class=index>Date</td></tr>
- <table>
- <br><br>
-
-
- LEG;
- /*
- print "<pre>";
- print_r ($exc->worksheet);
- print_r($exc->sst);
- print "</pre>";
- */
- for( $ws_num=0; $ws_num<count($exc->worksheet['name']); $ws_num++ )
- {
- print "<b>Worksheet: \"";
- if( $exc->worksheet['unicode'][$ws_num] ) {
- print uc2html($exc->worksheet['name'][$ws_num]);
- } else
- print $exc->worksheet['name'][$ws_num];
-
-
- print "\"</b>";
- $ws = $exc->worksheet['data'][$ws_num];
-
-
- if( is_array($ws) &&
- isset($ws['max_row']) && isset($ws['max_col']) ) {
- echo "\n<br><br><table border=1 cellspacing=0 cellpadding=2>\n";
-
-
- print "<tr><td> </td>\n";
- for( $j=0; $j<=$ws['max_col']; $j++ ) {
- print "<td class=index> ";
- if( $j>25 ) print chr((int)($j/26)+64);
- //這裡要顯示一個下拉列表來顯示數據
- //注意是輪回數據<br />
- echo("\n<select name='".$j."'>");
- echo("\n<option value='0'>不選擇</option>");
- echo("\n<option value='costomernum'>客戶編號</option>");
- echo("\n<option value='name'>客戶姓名</option>");
- echo("\n<option value='phone1'>電話1</option>");
- echo("\n<option value='phone2'>電話2</option>");
- echo("\n<option value='address1'>地址1</option>");
- echo("\n<option value='address2'>地址2</option>");
- echo("\n<option value='company'>公司</option>");
- echo("\n<option value='levelc'>職稱</option>");
- echo("\n<option value='ps'>備註</option>");
-
- echo("</select>");
- print "</td>";
- }
-
-
- print "<tr><td> </td>\n";
- for( $j=0; $j<=$ws['max_col']; $j++ ) {
- print "<td class=index> ";
- if( $j>25 ) print chr((int)($j/26)+64);
- print chr(($j % 26) + 65)." 列名</td>";
- }
-
-
-
- //表頭輸出終了
- if ($ws['max_row']>9)
- {
- $shownum=9;
- }
- else
- {
- $shownum=$ws['max_row'];//只輸出前10條數據
- }
- for( $i=0; $i<=$shownum; $i++ ) {網頁設計
- print "<tr><td class=index>".($i+1)."</td>\n";
- if(isset($ws['cell'][$i]) && is_array($ws['cell'][$i]) ) {
- for( $j=0; $j<=$ws['max_col']; $j++ ) {
-
-
- if( ( is_array($ws['cell'][$i]) ) &&
- ( isset($ws['cell'][$i][$j]) )
- ){
-
-
- // print cell data
- print "<td class=\"";
- $data = $ws['cell'][$i][$j];
-
-
- $font = $ws['cell'][$i][$j]['font'];
- $style = " style ='".ExcelFont::ExcelToCSS($exc->fonts[$font])."'";
-
-
- switch ($data['type']) {
- // string
- case 0:
- print "dt_string\"".$style.">";
- $ind = $data['data'];
- if( $exc->sst['unicode'][$ind] ) {
- $s = uc2html($exc->sst['data'][$ind]);
- } else
- $s = $exc->sst['data'][$ind];
- if( strlen(trim($s))==0 )
- print " ";
- else
- print $s;
- break;
- // integer number
- case 1:
- print "dt_int\"".$style."> ";
- print $data['data'];
- break;
- // float number
- case 2:
- print "dt_float\"".$style."> ";
- echo $data['data'];
- break;
- // date
- case 3:
- print "dt_date\"".$style."> ";
-
-
- $ret = $data[data];//str_replace ( " 00:00:00", "", gmdate("d-m-Y H:i:s",$exc->xls2tstamp($data[data])) );
- echo ( $ret );
- break;
- default:
- print "dt_unknown\"".$style."> ";
- break;
- }
- print "</td>\n";
- } else {
- print "<td class=empty> </td>\n";
- }
- }
- } else {
- // print an empty row
- for( $j=0; $j<=$ws['max_col']; $j++ )
- print "<td class=empty> </td>";
- print "\n";
- }
- print "</tr>\n";
- }
-
-
- echo "</table><br>\n";
- } else {
- // emtpty worksheet
- print "<b> - empty</b><br>\n";
- }
- print "<br>";
-
-
- }
- echo("<input type='submit' name='Submit' value='轉換' />");
- echo("</form>");
- /* print "Formats<br>";
- foreach($exc->format as $value) {
- printf("( %x )",array_search($value,$exc->format));
- print htmlentities($value,ENT_QUOTES);
- print "<br>";
- }
-
-
- print "XFs<br>";
- for( $i=0;$i<count($exc->xf['format']);$i++) {
- printf ("(%x)",$i);
- printf (" format (%x) font (%x)",$exc->xf['format'][$i],$exc->xf['font'][$i]);
-
-
- print "<br>";
- }
- */
- }
複製代碼hpxvrus 發表在 痞客邦 留言(0) 人氣(0)

2023 調劑 Chrome 設定方式
目前 Chrome 版本,防止主動重新載入分頁的方式已比較簡單,請見下圖:
hpxvrus 發表在 痞客邦 留言(0) 人氣(0)

完成圖
hpxvrus 發表在 痞客邦 留言(0) 人氣(3)

因為信件發不出去(gmail hotmail 直接被退回)
問了CPanel官方後
他說hostname沒法對應,要改成與nameserver一樣
然後若何重建Exim PTR /保存DNS Cache 和更新MAIL HELO
進入WHM
Home »Service Configuration »Exim Configuration ManagerDocumentation
Rebuild Reverse DNS Cache and Update Mail HELO
hpxvrus 發表在 痞客邦 留言(0) 人氣(0)