小编Jon*_*tan的帖子

使用JavaScript确定字符串是否在base64中

我正在使用该window.atob('string')函数将字符串从base64解码为字符串.现在我想知道,有没有办法检查'string'实际上是否有效base64?如果字符串不是base64,我希望收到通知,以便我可以执行不同的操作.

javascript base64

25
推荐指数
7
解决办法
4万
查看次数

在vim中的选择上执行'base64 --decode'

我正在尝试在可视模式下选择的一段文本上执行'base64 --decode',但是base64命令似乎传递了整行,而不仅仅是我所做的选择.

我在可视模式下选择文本,然后进入正常模式,以便我的命令行如下所示:

:'<,'>!base64 --decode
Run Code Online (Sandbox Code Playgroud)

我应该如何只将选定的一行传递给base64 --decode?

提前致谢

vim base64

21
推荐指数
3
解决办法
6780
查看次数

Xkb:如何将键码转换为keysym

我只是尝试使用KeyCode和修饰符掩码并使用Xkb扩展将其转换为KeySym.我似乎无法弄清楚为什么这不起作用.很明显,修饰语不匹配,但我不知道为什么.我甚至不知道我是否正确地转换了这个组.

#include <stdio.h>
#include <stdlib.h>
#include <X11/X.h>
#include <X11/XKBlib.h>

void check(XkbDescPtr keyboard_map, KeyCode keycode, unsigned int mask) {
    //What the hell is diff between XkbKeyGroupInfo and XkbKeyNumGroups?
    unsigned char info = XkbKeyGroupInfo(keyboard_map, keycode);
    int num_groups = XkbKeyNumGroups(keyboard_map, keycode);

    int key_width = XkbKeyGroupsWidth(keyboard_map, keycode);
    //int num_syms = XkbKeyNumSyms(keyboard_map, keycode);

    //Get the group
    unsigned int group = 0; // What should this default to?
    switch (XkbOutOfRangeGroupAction(info)) {
        case XkbRedirectIntoRange:
            /* If the RedirectIntoRange flag is set, the four least significant 
            * bits …
Run Code Online (Sandbox Code Playgroud)

linux x11 keyboard keycode

8
推荐指数
1
解决办法
5150
查看次数

我的c ++游戏架构

我是一个相当有经验的程序员,但我仍然相对较新的OOP架构和c ++设计.我的大部分经验都是使用C#和Java.我最近努力用c ++编写一个简单的游戏引擎.我使用SDL作为图形.在这篇文章中,我想讨论我的架构并获得一些反馈.特别是,我遇到了一个我想要帮助的设计问题.所以,这里是:

  • 在我的主要功能中,我初始化所有SDL内容以绘制到屏幕等.
  • 然后我实例化我打算使用的所有对象:floor,wall,player等.
  • 接下来我开始主循环.该循环执行每个对象的移动,碰撞检测和碰撞处理功能,并重绘它们.
  • 主循环运行直到应用程序退出,每次迭代绘制一帧.

我的问题是:我尝试做一种界面风格的设计.它涉及一系列允许每个对象实现行为的抽象基类.例如,如果我想要一个对象是可移动的,那么它必须从包含被调用的虚函数move()和一些位置坐标的可移动基类继承.如果我要它是可碰撞,对象会从可碰撞抽象类,其中包含虚拟函数继承checkCollision()handleCollision()以及一个击中格成员变量.像播放器这样的对象继承了这两个基类以及其他几个基类.

只要我在主循环中手动完成所有操作,这就足够了.我可以说:

player.move();
player.checkCollision();
player.handleCollision();
player.draw(). 
Run Code Online (Sandbox Code Playgroud)

这没关系.但我希望能够在主循环中有一个矢量或通用对象数组,并执行以下操作:

for each object in vector
    if object is of type movable
        object.move();
    if object is of type collidable
        object.checkCollision();
Run Code Online (Sandbox Code Playgroud)

我认为我可以通过动态铸造实现这一目标,但我真的无法想出任何东西.我已经尝试将它们存储为void指针,但这并不像我想要的那样工作.我一直在阅读有关视频游戏的游戏对象组件架构,我可能会尝试,但我真的想要挽救我已经写过的内容.我认为这是一个很好的学习机会.如果有人有任何想法我会非常感激.我的架构与其他简单的游戏引擎设计相比如何?我的界面架构是否有意义还是完全不稳定?

c++ architecture oop interface game-engine

7
推荐指数
1
解决办法
1613
查看次数

识别Haskell中函数的当前HEC

我正在使用Strategies编写并行Haskell程序.它没有做它应该做的事情,我想检查一个函数执行的Haskell执行上下文(HEC).

是否有一个getHEC调用或类似的东西,我可以在我的调试输出中使用?

parallel-processing haskell

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

类似于 /dev/urandom 的东西,带有可配置的种子?

我是dd“从荷兰国际集团/dev/urandom,以创建一个随机文件内容。这很有效,但我希望能够在稍后通过使用相同的种子再次运行 PRNG 来重现文件内容。是否有任何暴露字符设备的可种子 PRNG?

我正在使用最新的 Linux 3.X 内核。

linux

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

使用Tab键在TextEdit中导航

我有两个TextEdit盒子和一个自定义按钮小部件,我希望使用键盘上的Tab键按以下顺序更改焦点:

TextEdit1 <-> TextEdit2 <-> Button
Run Code Online (Sandbox Code Playgroud)

为了获得上面的链,我为每个小部件指定了类似的内容:

KeyNavigation.tab: TextEdit2
KeyNavigation.backtab: TextEdit1
Run Code Online (Sandbox Code Playgroud)

然而,我的问题是Tab键击中了TextEdit,并且不能用于导航.如何禁用标签,TextEdit而不是用它来改变焦点?

qml qt-quick

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

C++函数调用后花括号的含义

我正在阅读关于Doom 3源代码的代码质量的博客文章,我已经陷入了一段我无法理解的C++代码.我应该说我不是C++程序员.

违规代码如下:

Sys_StartAsyncThread(){                          // The next look runs is a separate thread.
    while ( 1 ){
        usleep( 16666 );                         // Run at 60Hz
        common->Async();                         // Do the job
        Sys_TriggerEvent( TRIGGER_EVENT_ONE );   // Unlock other thread waiting for inputs
        pthread_testcancel();                    // Check if we have been cancelled by the main thread (on shutdown).
    }
}
Run Code Online (Sandbox Code Playgroud)

(摘自http://fabiensanglard.net/doom3/index.php,主题为"展开循环")

这看起来像一个闭包被作为参数传递给返回值Sys_StartAsyncThread()- 但据我所知,这在C++中是不可能的,而且也是Sys_StartAsyncThread()void类型,所以这里发生了什么?

定义Sys_StartAsyncThread()可以在这里找到.

c++ syntax

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

如何在内核代码中扩展__FILE__和__LINE__?

我正在阅读Linux设备驱动程序,并注意到您可以使用printk打印当前行和文件.这是如何实现的?Linux如何跟踪包含printk语句的行?我还没有在用户空间中编写的"普通C代码"中看到类似的功能.

这是LDD3的一个例子:

printk(KERN_DEBUG "Here I am: %s:%i\n", __FILE__, __LINE__);
Run Code Online (Sandbox Code Playgroud)

编辑:正如piokuc所说,这些实际上是标准的宏.GCC文档在这里描述它们:http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

__CODE__为每一行设置并由预处理器替换为当前行,__CODE__为每个文件设置.

c linux kernel

-1
推荐指数
1
解决办法
2357
查看次数