小编Que*_*n3r的帖子

性能 - 在使用foreach循环之前检查列表是否为空

在Unity中使用foreach循环时,我需要在update方法中调用它.所以每帧调用一次......

我想知道,如果最好在使用foreach循环之前检查列表的计数,或者它是多余的.

所以我有

if (myList.Count > 0)
{
    foreach (Type type in myList)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

    foreach (Type type in myList) // no need for a check before
    {
    }
Run Code Online (Sandbox Code Playgroud)

我也可以用

for (int i = 0; i < myList.Count; i++) // use a for loop instead
{
    myList[i].DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

c# foreach unity-game-engine

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

POSTGRESQL:“utf8”编解码器无法解码位置 36 中的字节 0xfc:起始字节无效

我刚刚从这里下载并安装了 PostgreSQL

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

我想创建我的第一个服务器,但收到此错误

“utf8”编解码器无法解码位置 36 中的字节 0xfc:起始字节无效

错误

我的 pg 服务自动运行

服务

我缺少什么?

pgadmin-4

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

Unity可为空的整数作为检查器字段

Serializable为检查员创建了一个类。

[Serializable]
public class CellType
{
    [SerializeField]
    public int? Cost; // This does not appear in the inspector

    [SerializeField]
    public Color MaterialColor;
}
Run Code Online (Sandbox Code Playgroud)

可为空的字段Cost不会出现在检查器中。我通过创建一个SerializeField

[SerializeField]
private CellType[] types;
Run Code Online (Sandbox Code Playgroud)

如果该字段Cost为默认int,则该字段将出现。有解决方法吗?

c# unity-game-engine

5
推荐指数
0
解决办法
577
查看次数

在JavaScript中创建网格数组

我想设置一个包含m * n个对象的网格。该网格的宽度为mn列。

我首先尝试了这段代码

let map = [][]; // Create an array that takes a x and y index

function createMap() {
    for (let x = 0; x < columnCount; x++) {
        for (let y = 0; y < rowCount; y++) {
            addCell(x, y); 
        }
    }
}

function addCell(x, y) {
    map[x][y] = cell(); // create a new object on x and y
}
Run Code Online (Sandbox Code Playgroud)

显然,这是错误的语法。地图的初始化错误。如何通过将x和y坐标传递给数组来创建可以访问对象的数组?

假设我要访问要访问的(3 | 7)上的对象map[3][7]

那可能吗?

javascript arrays

5
推荐指数
2
解决办法
3360
查看次数

尽管参数可用,但架构验证失败

我创建了一个 REST api 并希望在调用控制器逻辑之前验证主体和参数。对于验证,我使用Joi ( https://www.npmjs.com/package/joi )。

假设我有一个带有一个 url 参数和一些 body 变量的路由。该params对象包含此 url 参数,但 Joi 仍返回一个400. 详细信息是

“用户 ID”是必需的

我试图创建一个显示我的代码的简约示例。要重现错误,请创建app.js文件

const express = require('express');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const cors = require('cors');

const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());

app.use('/users', require('./routes/users.js'));

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

由于每次验证都失败这一事实,因此只需要一条路线来对其进行测试。使用以下内容创建users.js

const express = require('express');
const router = express.Router();

const usersController = require('../controllers/users.js');
const usersControllerPolicy = require('../policies/users.js');

router.get('/:userId', usersControllerPolicy.getUserById, usersController.getUserById);

module.exports = router; …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express joi

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

为TSLint(NestJs)和ESLint(VueJs)设置VS Code linting

我正在使用带有Typescript / TSLint的NestJs和带有Javascript / ESLint的VueJs。我的VSCode扩展是ESLint,TSLint,Prettier和Vetur。开发后端时,一切都很好,代码格式正确。在使用Vue开发时,我使用了airbnb linter配置,但遇到了问题。

假设我有这个Vue实例

<script>
export default {
  components: {},
  data() {
    return {
      foo: '',
    };
  },
};
</script>
Run Code Online (Sandbox Code Playgroud)

然后保存文件,格式化程序将代码更新为

<script>
export default {
  components: {},
  data() {
    return {
      foo: ""
    };
  }
};
</script>
Run Code Online (Sandbox Code Playgroud)

我无法运行代码,因为linter根据airbnb linter配置抛出错误。尽管它不应该修复代码,因为我已经使用过airbnb样式指南。

我使用设置同步,因此可以共享整个VSCode设置以进行复制。这些是我的设定

{
    "vetur.validation.template": true,
    "eslint.autoFixOnSave": true,
    // ...
    "javascript.updateImportsOnFileMove.enabled": "always",
    // ...
    "typescript.updateImportsOnFileMove.enabled": "always",
    "prettier.singleQuote": true,
    "prettier.trailingComma": "es5",
    "prettier.useTabs": true,
    "editor.formatOnSave": true,
    // ...
    "vetur.format.defaultFormatter.html": "prettier"
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到整个要点

https://gist.github.com/matthiashermsen/9620a315960fa7b9e31bf6cda8583e84

那么,Prettier是否正在与TSLint和ESLint进行斗争?我想要一个用于Typescript和Javascript项目的标准设置。

我还尝试使用更漂亮的皮毛来创建一个新的Vue项目,并且一切正常。所以看来,这只是在与airbnb linter配置苦苦挣扎。

有任何想法吗?感谢帮助!

javascript eslint visual-studio-code vscode-settings

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

为渐进式 Web 应用缓存设置最小网络类型 (WLAN)

我通过使用外部 API 的 Vue CLI 创建了一个 PWA。API 响应应该被缓存以供离线访问。

从文档https://cli.vuejs.org/core-plugins/pwa.html#configuration我在根目录中创建了一个vue.config.js文件

module.exports = {
  publicPath: '/pwa',
  pwa: {
    appleMobileWebAppCapable: 'yes',
    workboxPluginMode: 'GenerateSW',
    workboxOptions: {
      runtimeCaching: [
        {
          urlPattern: new RegExp('^https://example.com/'),
          handler: 'networkFirst', // Network first, Cache fallback
          options: {
            networkTimeoutSeconds: 5,
            cacheName: 'api-cache',
            cacheableResponse: {
              statuses: [0, 200],
            },
          },
        },
      ],
    },
  },
};
Run Code Online (Sandbox Code Playgroud)

该项目运行良好,但我想避免在非常糟糕的连接上从 API 加载数据。

我只想在 WLAN 网络连接上加载数据。有没有办法扩展配置并设置要检测的网络类型?该配置应称为

首先使用网络但仅使用 WLAN,否则使用缓存作为后备

javascript vue.js progressive-web-apps workbox

5
推荐指数
0
解决办法
63
查看次数

v-list-item-group 一次全选/取消选择所有项目

我想为我的 Vue 应用程序使用 Vuetify 的v-list-item-group组件。此列表表示与图相关的节点。我可以不选择、选择部分或全部并删除所选的。

为了获得更好的用户体验,我想在标题旁边的顶部提供一个“全选/取消全选”复选框。如果仅选择了某些节点,则复选框应呈现不确定状态。

目前这是我正在使用的代码

<div id="app">
    <v-app id="inspire">
        <v-list>
            <v-list-item>
                <v-list-item-action>
                    <v-checkbox :indeterminate="someNodesSelected" :input-value="allNodesSelected"  @click="toggleCompleteSelection" />
                </v-list-item-action>
                <v-list-item-content>
                    <v-list-item-title v-text="graphWithNodes.name"></v-list-item-title>
                </v-list-item-content>
                <v-list-item-action>
                    <v-btn icon :disabled="noNodesSelected" @click="deleteNodes">
                        <v-icon color="error">mdi-delete</v-icon>
                    </v-btn>
                </v-list-item-action>
            </v-list-item>
            <v-list-item-group v-model="selectedNodeIds" multiple>
                <v-list-item v-for="node in graphWithNodes.nodes" :key="node.id" :value="node.id">
                    <template v-slot:default="{ active, toggle }">
                        <v-list-item-action>
                            <v-checkbox :input-value="active" :true-value="node.id" @click="toggle" />
                        </v-list-item-action>
                        <v-list-item-content>
                            <v-list-item-subtitle v-text="node.id"></v-list-item-subtitle>
                        </v-list-item-content>
                    </template>
                </v-list-item>
            </v-list-item-group>
        </v-list>
    </v-app>
</div>

new Vue({
    el: '#app',
    vuetify: new Vuetify(),
    data() {
        return { …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuetify.js

5
推荐指数
0
解决办法
2033
查看次数

指定字段名称而不是“值”

我必须逐个验证值,而不是传递多个值的整个架构。基于此处的单值验证文档

https://hapi.dev/module/joi/

和这个示例代码

const validator: AnySchema = Joi.string().valid('foo', 'bar').required();
const validationResult: ValidationResult = validator.validate('invalid');
const validationError: ValidationError = validationResult.error;

if (validationError) {
    throw validationError;
}
Run Code Online (Sandbox Code Playgroud)

该代码将引发错误并显示以下错误消息

ValidationError:“值”必须是 [foo,bar] 之一

有没有一种简单的方法可以"value"用特定名称替换?因此,当我想验证环境时,错误消息可能是

ValidationError:“环境”必须是[开发、生产、测试​​]之一

或者只有在一次验证多个值时才可能?

joi

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

将 guildUserProperties.Mute 设置为 false 时,Bot 不会取消用户静音

我使用 Discord.Net 创建了一个 Discord 机器人,它观察来自多个公会的多个语音通道。我正在侦听该UserVoiceStateUpdated事件,因为每当用户加入观察到的已静音的语音通道时,该用户应该被机器人静音。每当用户离开观察到的语音信道时,该用户应该被取消静音。

我有一个内存缓存,用于保存有关所有观察到的语音通道的信息。每个信息对象提供这些信息

public class ObservedVoiceChannelInfo
{
    public ulong VoiceChannelId { get; set; }
    public bool Muted { get; set; }
    public List<ulong> MutedUserIds { get; set; } = new List<ulong>();
}
Run Code Online (Sandbox Code Playgroud)

对于事件部分,我考虑了以下几点:

  • 如果用户离开观察到的处于静音状态的语音通道,则该用户应该被机器人取消静音
  • 如果用户加入具有静音状态的观察语音通道,则该用户应被机器人静音

基本上我想要实现的是:如果有人加入观察到的静音语音频道,请将该用户静音。如果该用户离开此频道,则在状态为静音的情况下取消他的静音。

这是我当前的实现(observedVoiceChannelsCache是具有观察语音通道的内存缓存字典)

    private async Task OnUserVoiceStateUpdated(SocketUser socketUser, SocketVoiceState oldSocketVoiceState,
        SocketVoiceState newSocketVoiceState)
    {
        SocketGuildUser socketGuildUser = socketUser as SocketGuildUser;

        if (newSocketVoiceState.IsMuted &&
            newSocketVoiceState.VoiceChannel == null &&
            _observedVoiceChannelsCache.TryGetValue(oldSocketVoiceState.VoiceChannel.Id,
                out ObservedVoiceChannelInfo oldObservedVoiceChannelInfo) &&
            oldObservedVoiceChannelInfo.Muted)
        {
            bool userRemovedFromMuteList = oldObservedVoiceChannelInfo.MutedUserIds.Remove(socketGuildUser.Id);

            if (userRemovedFromMuteList) …
Run Code Online (Sandbox Code Playgroud)

c# discord.net

5
推荐指数
0
解决办法
150
查看次数