小编mic*_*ael的帖子

CakePHP ACL混乱,如何将ACL应用于对象,而不是动作?

任何人都可以建议一个可扩展的设计模式来实现对照片和相册的访问控制,每个都有个人隐私设置(即所有者,群组成员,公共)?

我正在使用CakePHP,我在ACL组件上阅读的示例似乎控制对控制器/操作的访问,而不是对象本身.当我试图跟踪时似乎失控

  • / C/R/U/D特权
  • 每个控制器动作
  • 每个隐私设置(即所有者,团体成员,公众)
  • 每张专辑,照片等

特别是当你每张专辑可能有1000张照片时,照片就是habtm专辑.我是对的还是我完全错过了什么?

有人可以添加一些伪代码来帮助我理解如何解决这个问题吗?或者指出我正确的方向因为我知道它已经在Flickr这样的网站上完成了.

TIA.

php permissions acl cakephp

6
推荐指数
1
解决办法
1451
查看次数

如何从`.d.ts` 文件导入?

这条线在一个使用 angular2 RC4 的项目中工作

import * as mapTypes from '../../../../node_modules/angular2-google-maps/core/services/google-maps-types.d.ts';

发生了什么?

现在我正在尝试使用 RC6 的新种子文件,同一行给了我这个错误

error TS2691: An import path cannot end with a '.d.ts' extension. Consider importing '../../../../node_modules/angular2-google-maps/core/services/google-maps-types' instead.

但是,如果我进行建议的更改,我会得到

Cannot find module '../../../../node_modules/angular2-google-maps/core/services/google-maps-types'

.d.ts文件如下所示:

/**
 * angular2-google-maps - Angular 2 components for Google Maps
 * @version v0.12.0
 * @link https://github.com/SebastianM/angular2-google-maps#readme
 * @license MIT
 */
export declare var google: any;
export interface GoogleMap {
    constructor(el: HTMLElement, opts?: MapOptions): void;
    panTo(latLng: LatLng | LatLngLiteral): void;
    setZoom(zoom: number): void;
    addListener(eventName: …
Run Code Online (Sandbox Code Playgroud)

typescript angular

5
推荐指数
1
解决办法
2773
查看次数

如何在动态加载的Typescript中扩展一个类

我正在使用谷歌地图JS API和google.maps命名空间 npm install @types/googlemaps.我相信API是动态加载的,因此google.mapsJS全局不会立即可用.

但我不明白为什么我会得到运行时错误:Uncaught ReferenceError: google is not defined当我尝试google.maps.Marker使用a class而不是a 进行扩展时interface

// No problem!
export interface UuidMarker extends google.maps.Marker {
  uuid: string;
}

// Uncaught ReferenceError: google is not defined!!
export class UuidMarker0 extends google.maps.Marker {
  uuid: string;
  constructor(uuid: string, options?: gmMarkerOptions) {
    super(options);
    this.uuid = uuid;
  }
}
Run Code Online (Sandbox Code Playgroud)

仅使用接口的替代方法

// this works
export function UuidMarkerFactory(uuid: string, marker: google.maps.Marker): google.maps.Marker & {uuid:string} {  
  return Object.assign(marker, {uuid});
} …
Run Code Online (Sandbox Code Playgroud)

javascript typescript angular

5
推荐指数
1
解决办法
1247
查看次数

你如何使用Observable.bindCallback()

如何使用Observable.bindCallback()返回2个参数的回调,callback(results, status)?该示例使用google.maps.places以下API:

  const service = new google.maps.places.PlacesService(map);
  // service.nearbySearch(request, callback);


  function callback(results, status) {
    if (status === google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

const handleError = err=>console.error(error);

const nearbyAsObservable = Observable.bindCallback(service.nearbySearch)
nearbyAsObservable(request)
   .subscribe( 
     (results,status)=>{
       if (status!="OK") handleError(results);
       callback
     }
     , handleError
   )
Run Code Online (Sandbox Code Playgroud)

但我不确定以下几点:

1)最好的做法是从next处理程序中"抛出"错误并在处理程序中捕获它error,或者只是调用方法handleError()

2)我收到Cannot read property 'nearbySearch' of undefined(…)错误.但是当我打电话给const nearbyAsObservable = Observable.bindCallback( service.nearbySearch.bind(service) …

rxjs typescript rxjs5 angular

5
推荐指数
1
解决办法
5440
查看次数

code-style:JS对象的内联初始化好吗?

我经常发现自己使用内联初始化(见下面的例子),特别是在我不知道哪个case循环会命中的switch语句中.我发现它比if语句更容易阅读.

但这是一种好的做法还是会产生副作用或性能受损?

for (var i in array) {
    var o = o ? o : {};  // init object if it doesn't exist
    o[array[i]] = 1;     // add key-values
}
Run Code Online (Sandbox Code Playgroud)

是否有一个很好的网站去获取编码风格的提示?

javascript coding-style

4
推荐指数
2
解决办法
574
查看次数

引导"必需"表单验证弹出窗口不适用于ipad(safari或chrome)

此标记在桌面浏览器上运行良好

<form class="form-inline" action="/action/sign-me-up" method="post" onsubmit="return false;">
<input type="email" placeholder="Email" class='email' required title="Join our email list">
</form>
Run Code Online (Sandbox Code Playgroud)

如果我在输入[type = email]中提交没有有效电子邮件的表单,我会收到一个说"请填写此字段"的弹出窗口,表单不会提交.

但是,在ipad上,我确实在用户输入电子邮件时获得了实时验证(红色边框),但是如果他们点击提交,我就不会得到弹出窗口.

有一个简单的解决方法,还是我需要使用jquery插件?

validation jquery-plugins ipad ios twitter-bootstrap

4
推荐指数
1
解决办法
7720
查看次数

GraphicsMagick是否具有与ImageMagick"convert -auto-orient"相同的选项?

我想转移到GraphicsMagick,因为我只是调整大小和旋转照片,我听说它快了一点.但它不直接采用-auto-orient选项.有没有其他方法可以有效地做到这一点?Imagemagick convert -auto-orient选项将读取EXIF方向标记,相应地旋转,然后将EXIF标记重置为orientation = 1.

请参阅:http://www.imagemagick.org/script/command-line-options.php?ImageMagick = 80iu7ek6jb638dl2kin7n3v4d5#auto-orient

imagemagick image-processing graphicsmagick

3
推荐指数
1
解决办法
3533
查看次数

将 _.memoize() 与 _.debounce() 一起使用

我想为每个调用特定页面的渲染函数去抖 - 渲染不同的页面将单独去抖。memoize 函数应该可以解决问题,但它无法正常工作。

var renderPage_underscore = function(pageNo){
  var debouncer = _.memoize(
    // memoize function
    _.debounce(
      // debounced function
      function () {
        // Do renderPage() work here
        document.getElementById("underscore").innerHTML += 
            '<br />' + pageNo + '@' +   new Date().getTime();
      },
      1000, // delay
      true
    ),
    // memoize hash function
    function (pageNo) {
        return pageNo;
    }
  );
  return debouncer(pageNo);
}; 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?http://jsfiddle.net/Zq8Wd/1/

javascript underscore.js

3
推荐指数
1
解决办法
2743
查看次数

当Observable/subscrption更改属性时,ngOnChanges不会触发

我想要的以后做什么Observable/ subscribe完成.我正在改变方法中的Input属性subscribe( onNext ),但从ngOnChanges不触发.

我应该做些什么呢?

import { Component, EventEmitter, 
  OnInit, AfterViewInit, OnChanges, SimpleChanges,
  Input, Output
} from '@angular/core';

@Component({
  templateUrl: 'myTemplate.html'
    , providers: [ NamesService ]
})

export class MyPage  {
  @Input() names: any[];

  constructor( public namesSvc: NamesService) {}

  ngOnInit() {
    this.getNames$()
  }


  getNames$() : void {
    this.nameService.get().subscribe( 
      (result)=>{
       this.names = result;
       console.log(`getNames$, names=${this.names}`);

       // I could doSomething() here, but it doesn't seem like the correct place
       // doSomething()  

      }
      , …
Run Code Online (Sandbox Code Playgroud)

angular2-services angular

3
推荐指数
1
解决办法
5655
查看次数