EExcel 丞燕快速查詢2

EExcel 丞燕快速查詢2
EExcel 丞燕快速查詢2 https://sandk.ffbizs.com/

laravel controller use class but no pass class ?

https://www.youtube.com/watch?v=ShrS3HXwzPg

class PostController extends Controller
{
  public function update(Post $post,
before

class PostController extends Controller
{
  public function update($post_id,
    $post = Post::findOrFail($post_id);

And many more things.

file_put_contents failed to open stream: Permission denied /tmp/cache/views/


php artisan view:clear
https://laracasts.com/discuss/channels/laravel/permission-denied-on-storageframeworkviews https://laravel.io/forum/07-06-2016-session-permissions-issue https://laracasts.com/discuss/channels/general-discussion/laravel-framework-file-permission-security

laravel livewire file update Real-Time File Validation mutile files

 https://laravel-news.com/livewire-file-upload


Real-Time File Validation

use Livewire\Component;
use Livewire\WithFileUploads;

class Show extends Component
{
    use WithFileUploads;
    
    public $files = [];
    
    
    public function updatedFiles() // 即時檢查檔案格式
    {
        $this->validate([
            'files.*' => 'image|max:1024', // 1MB Max
        ]);
    }
    
    public function store()
    {
        $filenames = collect($this->photos)->map->store('photos');
        'files' => $filenames->implode(','),
updatedFiles() is Hook into the “updated”

updatedPhoto  public $Photo
updatedPhotos public $photos = []
updatedFile   public $file
updatedFiles  public $files = []

laravel livewire Name problem

Use - and lowwercase

App/Http/Livewire/Order/DropdownMaterial.php

class DropdownMaterial extends Component
{

resources/views/livewire/order/create.blade.php

@livewire('order.dropdown-material', ['post' => $order_material_id])

Laravel livewire have Big Problem!

When juse livewire at blade.php

Must have Div At first.




<div style="text-align: center">
    <button wire:click="increment">+</button>
    <h1>{{ $count }}</h1>
</div>


<div>

<button wire:click="increment">+</button>
    <h1>{{ $count }}</h1>
    
<button class="btn btn-success btn-block" wire:click="create">
            {{ trans('global.add') }} {{ trans('cruds.order.title_singular') }}
        </button>   
</div>

laravel livewire namespace

App/Http/Livewire/Orders.php

namespace App\Http\Livewire;

use Gate;
use Livewire\Component;
use Symfony\Component\HttpFoundation\Response;

class Orders extends Component
{
    public function render()
    {
        abort_if(Gate::denies('order_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        
        return view('livewire.order');
    }
}
resources/views/livewire/order.blade.php

@extends('layouts.app')
@section('content')
    @livewire('order.show')
@endsection
App/Http/Livewire/Order/Show.php

    namespace App\Http\Livewire\Order;

    public function render()
    {
        abort_if(Gate::denies('order_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        
        $this->orders = Order::all();
        // Order::where('owner_id', auth()->id())->get(); // 只能看自己

        return view('livewire.order.show');
    }
resources/views/livewire/order/show.blade.php

{{ virables }}

laravel eloquent orm

 [one to one]


Table: User, Phone

Model: User

Relation: return $this->hasOne('App\Phone');


Talbe Phone need have user_id. Auto use User id -> Phone user_id




Table: User, Phone

Model: Phone

Relaion: return $this->belongsTo('App\User');


Table Phone need have user_id. Auto use User id -> User user_id




[one to many]


Table: Post, Comment

Model: Post

Relation: return $this->hasMany('App\Comment');


Table Comment need have post_id. Auto use Post id -> Comment post_id




Table: Post, Comment

Model: Comment

Relaion: return $this->belongsTo('App\Post');


Table Comment need have post_id. Auto Post id -> Comment post_id




[Many To Many]


Table: User, Role, Role_User

 Table Role_User must have user_id, role_id

Model: User


way1:

Relaion: return $this->belongsToMany('App\Role', 'role_user');


way2:

Relaion: return $this->belongsToMany('App\Role');

Must database/migrations defined talbe class like "CreateRoleUserPivotTable"













livewire laravel route problem!

larvel 8 remove Providers/RouteServiceProvider.php namespace. Maybe you add back again.



        protected $namespace = 'App\Http\Controllers';
...

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });

Add backup namespace then get problem for livewire. Every route just use App\Http|controllers ooxxooxxooxx.

OLD Way


web.php

Route::resource('users', 'UsersController');
Route::delete('users/destroy', 'UsersController@massDestroy');

Get Error
Route::resource('orders', 'livewire.order');
Route::resource('orders', 'livewire@order');
Route::view('orders', [\App\Http\Livewire\Order::class, 'render']);

Maybe Way


web.php

Route::view('orders', 'livewire.order');

Files:
\app\Http\Livewire\Order.php inside use return view('livewire.order');
\resources\views\livewire\order.blade.php 

Get Error
Undefined variable: orders  or other ooxxooxx 
Alwasy get this Error. 

web.php

Route::get('/admin/orders', [\App\Http\Livewire\Order::class, 'render']);

Files:
\app\Http\Livewire\Order.php  
And use
return <<<'blade'
blade;

Get plain text @foreach($orders as o$key -> $permission 
Same Error.
Beacuse view run first. Only create view then @livewire('')

example:
order and orderlist

order view for fist(main) load page. orderlist be loaded by order view. order view have @livewire('orderlist').

https://stackoverflow.com/questions/64038485/laravel-livewire-components-or-controllers

or just remove namespace


Route::get('/admin/orders', \App\Http\Livewire\Order::class);

Don't add namespace in app/Http/livewire/ any file. Always get errors.

php auth role is_admin isAdmin or .... check role admin

User model getIsAdminAttribute()

https://www.youtube.com/watch?v=j97iBwTPlNE

https://stackoverflow.com/questions/58889575/laravel-5-8-authuser-is-not-using-user-model



public function getIsAdminAttribute()
{
   return (bool) $this->admin;
}

Auth::user()->isAdmin or auth()->user()->isAdmin

https://laracasts.com/discuss/channels/code-review/how-to-check-user-role-after-login


namespace App;

use App\Role;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function getIsAdminAttribute()
    {
        return $this->roles->pluck( 'name' )->contains( 'admin' );
    }

    public function roles()
    {
        // you will need a role model
        // Role::class is equivalent to string 'App\Role'
        return $this->belongsToMany( Role::class, 'users_role' );
    }
}
LoginController

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Auth;
use Input;
use Validator;
use Redirect;

class LoginController extends Controller
{
    //
    
    public function login_post( Request $request )
    {
        $data = Input::except( array( '_token' ) );

        // var_dump($data);

        $rule = array(
            'email'    => 'required|email',
            'password' => 'required',
        );

        $validator = Validator::make( $data, $rule );

        if ($validator->fails()) {
            // should do something
        } else {
            // no need to populate $data again with the same values
            // $data = Input::except( array( '_token' ) );
            
            if (Auth::attempt( $data )) {
                // here i want to check logged in user role
                $user = Auth::user();
                
                if ($user->roles->pluck( 'name' )->contains( 'admin' )) {
                    return Redirect::to( '/admin-dashboard' );
                }
                
                return Redirect::to( '/dashboard' );
            }
        }
    }
}

https://laravel.tw/docs/5.2/eloquent-serialization#appending-values-to-json

https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/111359/

方法簽名為getXXXAttribute
get XXX Attribute So XXX => IsAdmin

    public function getIsAdminAttribute()
    {
        return $this->roles()->where('id', 1)->exists();
    }

https://stackoverflow.com/questions/44017571/pass-current-eloquent-into-getxattribute-in-model


public function getIsAdminAttribute()
{   
   return Admin::where('user_id', $this->id)->count() > 0;
}

Error Running: npm install vue-template-compiler --save-dev --production=false

 Error 


  Additional dependencies must be installed. This will only take a moment.
  
  Running: npm install vue-template-compiler --save-dev --production=false
  


https://qiita.com/ucan-lab/items/f5bcdfceecffb9def4c5


Use yarn, Not npm


yarn add vue-template-compiler --dev --production=false
yarn run dev

[轉] Laravel Livewire vs Vue vs jQuery: Simple Example

 https://www.youtube.com/watch?v=o0HoP7WzRf0

php laravel UI Boostrap jetstream docker-compose

目錄裡面對應的檔案要先修改

=== 設定修改

[docker-compose]
 docker-compose.yml ./backend 在執行docker-compose目錄下建立backend目錄,或者是移動位置
db-store 使用的是 volumes


[mysql]
 infra/docker/mysql/Dockerfile
mysql user password root 等等自行變更,變更後要記得修改 infra/docker/php/Dockerfile

 infra/docker/mysql/my.cnf
collation_server = utf8mb4_unicode_ci


[php]
 infra/docker/php/Dockerfile 如果上面mysql設定有變更,記得這裡也要跟著變更
ENV TZ=Asia/Taipei
LANGUAGE=en_US:UTF-8


 infra/docker/php/php.ini
mbstring.language = zh-tw

[nginx]
 infra/docker/nginx/Dockerfile
ENV TZ=UTC+8



=== 指令開始執行

docker-compose up -d
  
docker-compose exec app composer create-project --prefer-dist laravel/laravel .

== jetstream Livewire !Now No Use


docker-compose exec app composer require laravel/jetstream
docker-compose exec app php artisan jetstream:install livewire  --teams
docker-compose exec app php artisan migrate

docker-compose exec web yarn install
docker-compose exec web yarn dev

== jetstream end

== Laravel UI Bootstrap Auth *more easy


docker-compose exec app composer require laravel/ui
docker-compose exec app php artisan ui bootstrap --auth
[ docker-compose exec app php artisan migrate ]

docker-compose exec web yarn install
docker-compose exec web yarn run dev

[ docker-compose exec web yarn add vue-template-compiler --dev --production=false ]

== Laravel UI Bootstrap end


docker-compose exec app composer require doctrine/dbal
docker-compose exec app composer require --dev barryvdh/laravel-ide-helper
docker-compose exec app composer require --dev beyondcode/laravel-dump-server
docker-compose exec app composer require --dev barryvdh/laravel-debugbar
docker-compose exec app composer require --dev roave/security-advisories:dev-master
docker-compose exec app php artisan vendor:publish --provider="BeyondCode\DumpServer\DumpServerServiceProvider"
docker-compose exec app php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"

=== remove all


docker-compose down --rmi all --volumes
docker-compose down --volumes

.參考:

https://github.com/ucan-lab/docker-laravel
https://github.com/ucan-lab/docker-laravel/blob/master/Makefile
https://qiita.com/ucan-lab/items/7824d1293fef4698c212

blade @can @cannot

https://laravel.com/docs/8.x/authorization#via-blade-templates


https://laravel.com/docs/8.x/authorization


The gate methods for authorizing abilities (allows, denies, check, any, none, authorize, can, cannot) and the authorization Blade directives (@can, @cannot, @canany) can receive an array as the second argument. These array elements are passed as parameters to gate, and can be used for additional context when making authorization decisions

flutter release apk

 1. pubspec.yqml

version1.1.1+3

2. local.properties

flutter.versionName=1.1.1
flutter.versionCode=3

Issue like this: 

這個 APK 已由擁有更高版本代碼的一或多個 APK 完全覆蓋,因此不會提供給任何使用者。從您的版本移除這個 APK,或查看版本中所有 APK 的指定目標和版本代碼。

Remove just create version in play store console. Create new version again. Maybe success.

噴墨

https://www.mobile01.com/topicdetail.php?f=498&t=5762149&p=2&p=2#72736497

我不是業代 也不需要幫hp打廣告 個人目前有
Brother MFC L2740dw 黑白雷射事務機
Canon CP910 相印機
HP IA 2020hc 噴墨

都用了超過三年以上 也都沒發生過問題 很合乎我的要求
之前買過7、8台噴墨
都是因爲印量不大 最後噴嘴乾掉壞掉
試過各種網路方法 都不好 無效
也曾請友人從美國帶正 附廠hp墨水 很多次(一個墨匣印不到200張 在台灣一個要快一千塊)
Epson canon Lexmark hp 都買過用過賣過丟過
只有這次這台hp 令我感到意外 用過非常滿意 有時一個月沒印 也不塞
因為用的少 第一瓶原廠附的墨水還在用 (要確認是用 HP 46 墨水匣 其他型號不清楚)
反正信不信看各人
我只是把好東西和網友分享 (印表機1990+墨水匣350 印 1500 彩色750張 不阻塞 我認爲合乎我的需要 事實上也是第一台令我滿意的噴墨印表機)


 (要確認是用 HP 46 墨水匣


重點是要找用"同墨匣 HP46" 的印表機 如HP 4729hc


如果印量不大的話 (一年幾百到1000張)
推薦 使用 HP46 墨匣的噴墨印表機 ( 就算噴頭出問題換掉也不心疼)
個人是使用已停產的 IA 2020hc 雖然很少用 (這是個人多年來唯一滿意的噴墨印表機, 3年多前隨機附的墨匣還沒換過) 噴頭沒塞過 列印效果不錯 重點是墨匣不到400元 可印 1500張 (彩色750張)

博奕代工

 這份報導,還是沒有寫出真正的情況,也是把事情混在一起談,因為並不是每一個進去博奕工作的工程師能了解大部份的情況

她碰到的根本是洗錢中心,不是博奕代工 內容中又把博奕代工和洗錢中心混在一起來談 區分三個角度 1. 線上博奕 2. 博奕代工 3. 洗錢 1. 線上博奕 對我們工程師來的角度來談,在國外“維運“,在合法的地方“維運“就是合法,大公司分工非常細和明確的,工程師只會負責開發遊戲,不負責“維運“ 大公司對於“風控“非常嚴格,一來怕內賊,二來怕一鍋踹,怎麼會混在一起 中小公司才有可能混在一起,也才有可能在一個地方“維運“ 2. 博奕代工 對我們工程師來的角度來談,代工就是幫忙寫遊戲系統、程式,這肯定100%不犯法,大公司會非常嚴格執行這個做法,建立一間公司,主力就是遊戲開發,開發遊戲,賣給台灣公司、外國公司都是合法的 就算是做實體機台(台灣有名就那家),賣給國外一樣合法 中小公司的代工理論上都就是上面所述,實際上會做到1. 的情況,那就會出現同樣問題“維運“,那“維運“到底合不合法,後面討論 3. 洗錢 癈話,一定違法,一定會出問題 “維運“這塊工作內,會有一定違法的兩個點:金流、客服,工程師的“維運“就妙在這裡,不是工程師的人做“維運“,那就要看你是做什麼了,這很清楚了吧! 內文中的點: 1. 拿現金 大公司是不會拿現金給你的,一定會匯給你,而且還會給你保足額的勞健保,該給你的一定給你 中小公司正常也不會拿現金給你的,那什麼時候拿現金,要避稅,可能是公司避,可能是你自己要避稅,都不是這些,那就是現金太多,應該就懂了吧! 2. 看到荷官…… 訓練的話應該是沒問題,實際被運用在台灣內的某角落才算違法吧! 3. 看到桌子…… 這是開發系統一定會需要的,實際被運用在台灣內的某角落才算違法吧! 4. 工作要上繳存簿,這不用想就知道這間公司是不正常的吧!不管是不是博奕,這年代還有人相信要上繳存簿?! 5. 跟政府談? 文內跟政府單位談線上博奕,這思序不清吧!國內連實體博奕都沒有,這些工作都是對國外,就算是出國轉回給內銷用,本質還是國外,國內那管得著,要談的是國外 日本、新加坡之類 6. 中國要求菲律賓停止“新“牌照發放,舊的能用,更好用,更貴,菲律賓不是笨蛋 7. 大量台灣人材... ... 大陸人材更多吧 8. 避免大量年輕人成為洗錢人頭戶,這跟博奕有個鬼關係,意思是沒博奕就沒有洗錢人頭戶?! 都混在一起談,詐騙就不用洗錢人頭戶?!犯毒就不用洗錢人頭戶?!

GCP logging winston LoggingWinston severity

If you want to control severity at LoggingWinston.

https://stackoverflow.com/questions/58055551/structured-logs-in-google-cloud-run-not-being-parsed-using-winston-for-logging


const winston = require('winston');
const useFormat = winston.format.combine(
  winston.format((info, opts) => {
    let level = info.level.toUpperCase();
      if(level === 'VERBOSE') {
        level = 'DEBUG';
      }

      info['severity'] = level;
      delete info.level;
      return info;
  })(),
  winston.format.json());
const { LoggingWinston } = require('@google-cloud/logging-winston');
const loggingWinston = new LoggingWinston();
const logger = winston.createLogger({
  level: 'debug',
  format: useFormat,
  transports: [
    new winston.transports.Console(),
    loggingWinston
  ]
});