JSmiles

文章 0 评论 0 浏览 84961

JSmiles 2022-08-24 10:32:02

新版本的 WordPress 没测试过,插件页 https://wordpress.org/plugins/multiple-post-thumbnails/ 注明了测试过的最高版本 5.0.16,这插件 4 年没更新了,不兼容就没法了。

Multiple Post Thumbnails 给文章添加多个特色图片

JSmiles 2022-08-01 00:03:07

感谢反馈,已修复编码问题!

相似公司股票搬砖

JSmiles 2022-07-29 16:28:22

你说的是这个:https://github.com/pallets/flask

第二部分 Flask 插件使用指南 - 建立目录管理配置

JSmiles 2022-07-23 19:40:33

禁止上传 bmp 图片。

允许上传 gif、jpeg、png 图片,并确保图片实际类型、图片后缀名、 content_type 一致。

关于PNG图片,如果不能确保用户安装 Ms07-057 补丁,禁止上传。

PHP-如何防止img xss注入

JSmiles 2022-06-20 20:33:02

据我所知,图片的色彩模式不是CMYK模式,置入到 AI 中会自动转化成 CMYK 模式,但已经做好的图在不修改的情况是不会自己变颜色的。

illustrator 在做图中,做好的矢量图色值自己发生变化,过程中并无更改过颜色模式,请问怎么解决这一问题?

JSmiles 2022-03-25 21:11:40

Python 的快速参考:https://www.pcwdld.com/python-cheat-sheet

轻松理解 Python 装饰器

JSmiles 2022-03-25 15:34:52

其实这里由于λ演算中,对于函数是延迟求值的,而对于 JS 这种 call by value 的语言来说,是必须先求值再作为实参传入函数的。所以在 JS 中利用 v => f(x(x))(v) 这种方式来进行对 x 延迟求值,而在λ演算中,直接 f(v=>x(x)(v)),这里的 x 表达式并不会立即求值。注意在 JS 中如果是λ中的这种写法会引起 stack crash。

在 JavaScript 中用匿名函数(箭头函数)写出递归的方法

JSmiles 2022-03-22 23:34:31

好文,找了很多篇讲 YC 的,这篇最好懂。多谢博主。
最后有个问题,我把

let Y = factory => {
    let magic = self => n => factory(self(self))(n)
    return magic(magic)
}

手动转化为 es6 箭头函数,结果如下:

let Y = f =>
(x => v => f(x(x))(v))
(x => v => f(x(x))(v))

这和 λ演算 的写法不太一样啊,λ演算是

f =>
(x => f(v => x(x)(v)))
(x => f(v => x(x)(v)))

问题就出在 v => f(x(x))(v)f(v => x(x)(v))是否等价,感觉大部分情况都不等价,似乎只有某一类特定的f才能满足这个……“结合律”?

在 JavaScript 中用匿名函数(箭头函数)写出递归的方法

JSmiles 2022-03-18 13:33:10
//这样Y就变得非常简单了
let Y = f => f(f)

//但这样 factory 就变得复杂了
let factory = self => n => n < 2 ? 1 : n * self(self)(n-1)

我觉得这里的问题好像不是谁简单谁复杂,而是这样的 Y 似乎不再具备 Y 组合子的特性了?就这篇文章的目的来说,这应该不是一个可接受的状况。

在 JavaScript 中用匿名函数(箭头函数)写出递归的方法

JSmiles 2022-03-16 19:32:14

你的思路非常不错。

//这个 self 指的是阶乘函数自身,只是一个语义提示
let factory = self => n => n < 2 ? 1 : n * self(n - 1)

//也可以换成这样
let factory = fact=> n => n < 2 ? 1 : n * fact(n - 1) //这样做,很难反映出 fact 就是 factory 生产出来的。


//这样Y就变得非常简单了
let Y = f => f(f)

//但这样 factory 就变得复杂了
let factory = self => n => n < 2 ? 1 : n * self(self)(n-1)

至于性能测试,这篇文章的内容,不是为了投入实际生产,不是一个实用技巧。

更像是一个科普资讯,展现 js 里的匿名函数跟函数式语言里的 lambda 表达式的关系,以及跟计算机里的 lambda 跟图灵机,跟数学里的 lambda 演算,跟哥德尔不完备定理,跟康托尔的集合论之间存在的千丝万缕的联系。

这是 JavaScript 所处的大背景,这篇文章是为了让更多人能在在这么个背景下,重新审视这门语言。

在 JavaScript 中用匿名函数(箭头函数)写出递归的方法

JSmiles 2022-03-15 19:29:51
//定义时就工厂化,生产出阶乘函数
let factory = self => n => n < 2 ? 1 : n * self(n - 1)

我觉得这里不太对,这里说的factory是一个生成lambd函数的工厂,而真正需要形成递归的是 其生成的lambd函数,但是 这里的self指的是factory而不是 其生成的lambda函数,及这里的self需要替换成 需要递归的lambda函数——>最简单的方式:

let factory = self => n => n<2 ? 1 : n*self(self)(n-1)

//这样Y就变得非常简单了,
let Y = f => f(f)

还有,我有一样东西想不明白,为什么要执着于用lambda函数做递归?
我简单用ES5测了一下,三种方式的时间消耗量:

var f1 = function (s) {
  return function (n) {
    return n<2 ? 1: n*s(s)(n-1)
  }
}

//your function
var f2 = function (s) {
  return function (n) {
    return n<2 ? 1: n*s(n-1)
  }
}

var simpleY = function (f) {
  return f(f);
}

//your Y
var Y = function (factory) {
  var magic = function (self) {
    return function (n) {
      return factory(self(self))(n)
    }
  }
  return magic(magic)
}

var e1 = simpleY(f1)
var e2 = Y(f2)

function normal(n){
  return n < 2 ? 1: n*normal(n-1)
}


function player(f, n, loop){

  for(var i=0;i< loop;i++){
    f(n)
  }
}

var start = new Date()
player(normal, 1000, 10000)
var end1 = new Date()
player(e1, 1000, 10000)
var end2 = new Date()
player(e2, 1000, 10000)
var end3 = new Date()
console.log(end1 - start)
console.log(end2 - end1)
console.log(end3 - end2)

//result:
//136
//558
//1382 
//我的电脑低性能,求原谅

在 JavaScript 中用匿名函数(箭头函数)写出递归的方法

JSmiles 2021-08-25 19:59:18

经测试,直接在 cmd 里面执行会提示找不到命令,需要在 windows powershell 执行才可以。

解决 yarn.ps1 cannot be loaded because the execution of scripts is disabled on this system 错误

JSmiles 2021-06-25 20:06:37

感觉 MBOX 灵活,MVVM 的,数据驱动,理解特别容易,VIEW 只是 STATE 的一个展现。

MobX 和 Redux 的比较

JSmiles 2021-06-25 19:32:10

另外示例中是在 renderer 端对更新操作进行控制,个人认为更新功能作为独立的小模块,放在 main 端更加符合一般的通用场景。

main 端自动更新的代码可以参考 autoUpdate

Electron 实践之自动更新

JSmiles 2021-06-25 19:31:14

用相同的方法在 Windows 下做了实践,与 MacOX 的不同主要有两个部分

update.json

update.json 格式参考如下:

{
    "win32-x64-prod": {
        "readme": "Second Release",
        "update": "http://xxx/releases/download/1.2.0",
        "install": "http://xxx/releases/download/1.2.0/xxx.Setup.1.2.0.exe",
        "version": "1.2.0"
    }
}

install 指定更新包的地址。

build 配置

package.jsonelectron-builder 配置内容如下:

"build": {
    ...
    "win": {
      "target": "squirrel"
    },
    "squirrelWindows": {
      "iconUrl": "https://raw.githubusercontent.com/megahertz/electron-simple-updater/master/example/build/icon.ico"
    }
  },

Electron 实践之自动更新

更多

推荐作者

隔纱相望

文章 0 评论 0

昵称有卵用

文章 0 评论 0

梨涡

文章 0 评论 0

蓝咒

文章 0 评论 0

白芷

文章 0 评论 0

樱娆

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文