標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2016年12月15日 星期四

Android Studio 上傳apk到 Google Play 注意事項

第一個問題
         壹、用Android Studio 產生 KeyStore
                一.點選 Build -> Generae Signed APK
                 二.在接下來跳出的視窗中選取 Create new...。
                  三.輸入每個欄位所需的資料。
                     1.選擇儲存路徑
                     2.輸入密碼與確認密碼,上圖中,四個密碼可一致。
                     3.輸入認證訊息,可中文輸入。最後 Country Code 只能兩碼,台灣輸入 TW
               四.填完之後,按下OK,會回到如下的畫面。再按下Next
                五.點選 步驟1.=>選release =>點 Finish 


 第二個問題
     壹.步驟1 =>步驟2 將勾選取消
      貳.點選步驟1.build.gradle =>步驟2. 將com.example 改掉
       參.步驟1.對build.gradle按右鍵 =>步驟2.按下Synchronize 'build.gradle'
最後,解決兩個問題之後,再重新打包。即重複第一個問題的步驟。
第三個問題
若對APP程式去除BUG,然後上傳到Google play,卻出現如上的畫面。
要如何解決?
就是要去這兩個地方去做修改。

接著對上傳的畫面做設定,其對應圖如下


資料來源:
1.Android:Keystore 建立與管理
    http://logme.logdown.com/posts/849953/android-keystore-create-and-management
2.如何匯出 apk 安裝檔
    https://sites.google.com/site/peterslearningstation/android/developer-notes/--ru-he-hui-chu-apk-an-zhuang-dang
3.Android Studio更改專案套件(package)名稱的方法
    http://hklifenote.blogspot.tw/2015/06/android-studiopackage.html
4.愣阿批居: Android 發佈APK 到Google Play 的版本問題
    http://learnrpgblog.blogspot.tw/2015/03/android-apk-google-play.html
5.2013-03-06 您已經有一個 APK 使用版本代碼 1 解決方法
    http://orzismylife.blogspot.tw/2013/03/2013-03-06-apk-1.html

2016年12月11日 星期日

laravel 5.3 View 、Blade 樣板引擎使用方法 與 樣板製作和抽離

壹、View觀念:
     一、larvel 是以MVC為基底設計的框架,所有的View都放在resources/views資料夾底下
     二、所有View的檔名都以*.php為結尾,檔案內容就是一般的HTML程式碼
     三、當要顯示對應的頁面時,只要透過View()這個helper function 就可以將內容從Router回傳
             至使用者端。特別注意路徑要設定正確,中間資料夾可用[.]區隔,且不需要加副檔名                php
             語法:Route::get('{uri}',function(){ return view('{path.view_file_name}');});
             例子:// routes/web.php
             Route::get('/',function(){ return view('home.index')});
     四、若有分類需求,可任意開子資料夾整理
             例子://resources/views/home/index.php
             <!doctype html>
             <html>
                 <head><!-- 略 --></head>
             <body>
                        <h1>Home</h1>
             </body>
             </html>

貳、Blade樣板引擎
      一、觀念:
        laravel 的樣板引擎名為 Blade,只要將原本放在 resources/views 底下的*.php的檔名改成     
        *.blade.php.畫面輸出時,laravel自動就會使用Blade語法分析器來處理這些檔案的內容.
      二、規劃流程:
           (一).先定義主Layout: 
                  1.在 resources/views 建立一個 layouts/master.blade.php
                  2.主Layout 裡定義全站樣板的結構,以及要讓子Layout繼承填充的區塊位置
                     {{-- resources/views/layouts/master.blade.php --}}
                       <html>
                                <head>
                                     <title>App Name - @yield('title')</title>
                               </head>
                               <body>
@include('layouts.partials.navigation')
<div>
                                      @yield('content')
</div>
                               </body>
                       </html>

         (二).定義共用區塊的內容:
               1.在resources/views/layouts 底下新增資料夾partials,裡面新增navigation.blade.php,並
                  填入導覽列內容
                      {{-- resources/views/layouts/partials/navigation.blade.php --}}
                       <nav>
                                <div>
                                      <ul>
                                           <li>
                                             <a href="{{ route('layouts.master') }}">關於本站</a>
                                           </li>
                                           <li>
                                              <a href="{{ route('layouts.partials.navigation') }}">文章總覽</a>
                                           </li>
                                           <li>
                                              <a href="{{ route('layouts.partials.notification') }}">熱門文章</a>
                                           </li>                
                                      </ul>
                               </div>
                       </nav>

          (三).定義子Layout裡使用主Layout做延伸:
                1.在resources/views裡新增 *.blade.php
                2.子Layout要先宣告繼承的主Layout,並將要填充的區塊內容複寫進去
                    @extends('layouts.master')
                    @section('title','Page Title')
                    @section('content')
                        <p>This is my body content.</p>
                    @endsection
 

      三、寫在routes/web.php的內容為
        Route::get('/', ['as'=>'layouts.master',function () {
                  return view('layouts.master');
         }]);
        Route::get('/partials/navigtion', ['as'=>'layouts.partials.navigation',function () {
                  return view('layouts.partials.navigation');
         }]);
        Route::get('/partials/notification', ['as'=>'layouts.partials.notification',function () {
                  return view('test');
         }]);
      四、顯示內容為


      五、Blade 語法
        (一) @ 開頭:
              1.樣板控制   @yield@extends
                 @yield('{section name}')
                 @include('{view name}')
                 @extends('{view name}')
                 @section('{yield name}','{string}')
                 @section('{yield name}')
                 @endsection

              2.程式邏輯控制 @if@foreach
               (1)邏輯控制
                    @if 、@elseif 、@else、 @endif
               (2)迴圈
                    @for($i=0;$i<10;$i++)、@endfor
                    @foreach(@posts as $post)、@endforeach
                    @forelse(@posts as $post)、@empty、@endforelse

        (二) {   開頭:
              1.輸出內容 {{{!!           
              (1).{{  $string  }}  輸出前會做跳脫,安全預設  {{ $name or 'Default' }}
              (2).{!! $html !!} 輸出不會做跳脫,可用於印出HTML
              (3)萬一真的要顯示 {{ 的時候怎麼辦?用@{{ raw data }}

              2.註解 {{--

       (三) 命名慣例
               慣例僅供參考,Laravel 沒有強制規定要怎麼用,只要符合Laravel原生設定就可以了
                1.主樣板放在 layouts 資料夾內
                2.區塊樣板放在 partials 資料夾內
                3.子樣板放在 {resources} 資料夾內

      六、傳遞資料至View顯示
        把變數傳給View,讓View顯示動態資料
        // routes/web.php
        Route::get('/',function(){
               $data = [ 'name' => 'Simon' ];
               return view('home.index', $data );
         });

        // resources/views/home/index.blade.php
        <!doctype html>
        <html>        
               <head><!-- 略 --></head>
               <body>
                    <h1>My name is {{ $name }} </h1>
               </body>
        </html>
                                         最後結果
參、樣板製作和抽離
       一、調整views結構與命名
參考資料來源:
1.View 與 Blade 樣板引擎

2016年12月8日 星期四

2016年11月30日 星期三

laravel 5.3 routes 使用方法

在laravel 5.3   routes/web.php 定義 web相關的 routes,routes/api.php 定義 api相關的 routes。
寫在 routes/web.php
Route::get('foo', function () {
    return 'welcome';
});
Route::get('test', function () {
    return view('test');
});
與在 resources/views/test.blade.php 
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>TEST</title>
  </head>
  <body>
    <a href="#">TEST</a>
  </body>
</html>

通常情況下,您將會需要為您的路由產生 URL,您可以使用 url 輔助函數來操作:
$url = url('foo');
此時將上述所學,整理如下:
並有下列的結果

接收必要參數
Route::get('posts/{id}', function ($id) {
    return 'Post:'.$id;
});
接收選擇性參數
Route::get('users/{name?}', function ($name = 'John') {
    return 'My name is '.$name;
});
限制參數格式
   1.使用 where 限制
    Route::get('posts/{id}', function ($id) {
    return 'Post:'.$id;
    })->where('id','[0-9]+');
    
   2.使用 pattern 限制
    Route::pattern('id','[0-9]+');
    Route::get('posts/{id}', function ($id) {
    return 'Post:'.$id;
    })->where('id','[0-9]+');
 
    打上 192.168.81.210/posts/John 則會出現錯誤訊息

列出目前所有的orute 規則
$ php artisn route:list
Route Prefixing
設定某些Route前都有共同的前置uri
Route::group(['prefix'=>'admin'],function(){
    Route::get('users',function(){
      return 'abc';
    });
});
Sub-Domain Routing
限制Route只能在某個Sub-Domain 才接受
Route::group(['domin'=>'192.168.81.210'],function(){
        Route::get('{user}/{id}',function($user,$id){
           return $user.'  '.$id;
        });
});
今天依照網站架構圖,做一下練習
在這個階段的實作裡,直接在Route裡回傳字串,以確認把通道打開。
裡面的程式碼為
Route::get('/',['as'=>'home.index',function(){
  return 'home.index';
}]);
Route::get('about/',['as'=>'about.index',function(){
  return 'about.index';
}]);

Route::post('posts/',['as'=>'posts.store',function(){
  return 'posts.store';
}]);

Route::get('posts/',['as'=>'posts.index',function(){
  return 'posts.index';
}]);

Route::get('posts/create',['as'=>'posts.create',function(){
  return 'posts.create';
}]);

Route::delete('posts/{id}',['as'=>'posts.destory',function($id){
  return $id.'.posts.destory';
}]);

Route::patch('posts/{id}',['as'=>'posts.update',function($id){
  return $id.'.posts.update';
}]);

Route::get('posts/{id}',['as'=>'posts.show',function($id){
  return 'posts.show';
}]);
Route::post('posts/{id}/comment/',['as'=>'posts.comment',function($id){
  return $id.'.posts.comment';
}]);
Route::get('posts/{id}/edt',['as'=>'posts.edit',function($id){
  return $id.'.posts.edit';
}]);
Route::get('hot/',['as'=>'hot.index',function(){
  return 'hot.index';
}]);
Route::get('random/',['as'=>'random.index',function(){
  return 'random.index';
}]);

CSRF 保護

Laravel 提供簡易的方法,讓您可以保護您的應用程式不受到 CSRF (跨網站請求偽造) 攻擊。跨網站請求偽造是一種惡意的攻擊,藉以代表經過身份驗證的使用者執行未經授權的命令。

Laravel 會自動在每一位使用者的 session 中放置隨機的 token ,這個 token 將被用來確保經過驗證的使用者是實際發出請求至應用程式的使用者:

插入 CSRF Token 到表單

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
當然也可以在 Blade 模板引擎使用:

<input type="hidden" name="_token" value="{{ csrf_token() }}">
您不需要手動驗證在 POST、PUT、DELETE 請求的 CSRF token。 VerifyCsrfToken HTTP 中介層將儲存在 session 中的請求輸入的 token 配對來驗證 token 。

除了尋找 CSRF token 作為「POST」參數,中介層也檢查 X-XSRF-TOKEN 請求標頭,這在多數 Javascript framework 常被拿來使用。


方法欺騙

HTML 表單沒有支援 PUT 或 DELETE 動作。所以當定義 PUT 或 DELETE 路由並在 HTML 表單中被呼叫的時候,您將需要添加隱藏 _method 欄位在表單中。

將數值同 _method 欄位發送使用 HTTP 請求方法。舉例來說:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
</form>


參考資料:
1.PHP Laravel 開發入門(四) – 路由(Routes)
http://www.codedata.com.tw/uncategorized/php-laravel-dev-tutorial-3-class-artisan/
2.Route 路由控制
http://www.slideshare.net/shengyou/6-route?ref=http://www.laravel-dojo.com/workshops/201507-ntpc
3.HTTP 路由
https://wastemobile.gitbooks.io/laravel-5-chinese-document/content/routing.html


在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html