小编Has*_*yed的帖子

Bash在循环中设置一个全局变量并保留其值 - 或者为假人处理替代

我是一名C/C++程序员,一般来说非常愚蠢(至少bash做的事情让我感到困惑).我无法解决流程替代问题.

我需要定义一个全局布尔值,将它设置在循环中的某个位置,并在全局范围内使用它.有人可以用最简单的方式解释如何调整下面的代码,让我实现我的用例,简单到足以使我明天不再扭曲我的大脑来尝试掌握过程替换.

# DEFINE HERE

for i in `seq 0 ${DAEMON_COUNT}`;
do
        if [ ! -d "data$i" ]; then
# SET HERE
                echo "data$i does not exist. Creating...";
                mkdir data$i
        fi
done

# TEST AND USE HERE
Run Code Online (Sandbox Code Playgroud)

说实话,我不认为bash能胜任这个任务......下一个块看起来像这样.

echo "-------------------------------------------------------------------------------"
echo "checking the state of potentially running daemons"
for i in `seq 0 ${DAEMON_COUNT}`;
do
        if [ ! -e "data$i/mongod.lock" ] ; then
                echo "[no lock file] mongod process $i does not exist"
        else
                echo "[lock file exists] …
Run Code Online (Sandbox Code Playgroud)

bash scripting posix process-substitution

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

在通用编程/ TMP世界中,究竟什么是模型/策略和"概念"?

我想在一个地方知道这三个概念的确切而简洁的定义.答案的质量应取决于以下两点.

  1. 显示一个简单的代码片段,以显示概念/技术的用途和方式.
  2. 要简单易懂,以便没有接触过这个区域的程序员能够掌握它.

注意:

可能有许多正确的答案,因为每个概念都有许多不同的方面.如果有很多好的答案,我最终会将问题转化为CW并汇总答案.

- 发布接受编辑 -

Boost有一篇关于泛型编程概念的好文章

c++ templates components metaprogramming generic-programming

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

社区维基:"Vim:yanking机制的高级用法"

社区维基

正如yank系统的文档所示(感谢Michal),Vim yank系统似乎比标准剪贴板更复杂.因此,我认为如果vim退伍军人可能向我们展示一些利用这种机制的不同风格,这是有益的.特别是对于复杂项目使用vim而不使用重量级IDE(比如C++?).

原始问题

现在我正在为我输入的所有内容使用vim,而不仅仅是为了配置服务器,我不想解决以下琐事.我试图制定谷歌搜索查询,但结果没有解决我的问题:D.

问题一:我如何多次猛拉和更换?

一旦我在抽奖历史中有了一些东西(如果这就是它的名字),然后在命令模式中突出显示并使用'p'字符,则替换的文本放在抽奖历史的前面; 因此,后续更换操作不会使用我想要的文本.我想这在某些情况下是一个有用的功能,但我在我的工作流程中并不需要它.

问题二:如何在不导致线条向前波动的情况下键入文本?

我使用硬标签来以某种方式对我的代码进行分配 - 例如,

FunctionNameX     ( lala * land               );
FunctionNameProto (                           );
Run Code Online (Sandbox Code Playgroud)

当我弄清楚需要进入第二个函数的内容时,如何在不移动文本的情况下插入它?

问题三有没有办法在同一台机器上的gvim实例上有统一的抽奖历史?我有> 1台显示器.只是想知道,我正在使用高亮+鼠标中键点击.

vim workflow text-editor

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

关于内存泄漏的维基百科文章中的错误

这篇维基百科文章的最后,在" C中的一个简单示例 "一节,声称"操作系统会延迟实际内存分配,直到写入内容为止".根据我的经验,这是不可能或更好的,"不可行".OS /处理器不跟踪每个内存写入.维基百科文章是否错误,我怀疑?如果没有赐教我.

编辑

我想当一个人考虑页面错误时,它在某些方面确实有意义.但是,页面错误和虚拟内存不适合讨论内存泄漏.我的意思是,如果进程分配2个页面,写入一个页面(第一页),然后泄漏两个页面它仍然是泄漏,无论天气如何第二页泄漏物理内存.我想该部分应该区分物理内存和虚拟内存?:d

c operating-system memory-management

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

使用LPEG(Lua Parser Expression Grammars),如boost :: spirit

所以我正在玩lpeg来取代一个提升精神语法,我必须说boost :: spirit比lpeg更优雅和自然.然而,由于当前C++编译器技术的限制以及C++中的TMP问题,它是一个麻烦.在这种情况下,类型机制是你的敌人,而不是你的朋友.另一方面,Lpeg虽然丑陋而且基本导致更高的生产力.

无论如何,我很离题,我的lpeg语法的一部分如下所示:

function get_namespace_parser()
  local P, R, S, C, V =
    lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.V

namespace_parser = 
lpeg.P{
    "NAMESPACE";
    NAMESPACE   = V("WS") * P("namespace") * V("SPACE_WS") * V("NAMESPACE_IDENTIFIER") 
                  * V("WS") * V("NAMESPACE_BODY") * V("WS"),

    NAMESPACE_IDENTIFIER = V("IDENTIFIER") / print_string ,
    NAMESPACE_BODY =  "{" * V("WS") *   
                      V("ENTRIES")^0 * V("WS") * "}",


    WS = S(" \t\n")^0,
    SPACE_WS = P(" ") * V("WS") 
}
  return namespace_parser
end 
Run Code Online (Sandbox Code Playgroud)

这个语法(尽管不完整)与以下内容相符namespace foo {}.我想实现以下语义(这是使用boost精神时的常见用例).

  1. 为命名空间规则创建局部变量.
  2. namespace IDENTIFIER {匹配后,将名称空间数据结构添加到此局部变量.
  3. 将新创建的命名空间数据结构传递NAMESPACE_BODY …

parsing peg boost-spirit lpeg

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

C++错误代码vs ASSERTS vs Exceptions选择选择:(

代码有问题

我已经听到(和反刍)围栏两侧的C++异常口头禅.它已经有一段时间了,我只想再次集中自己,这个讨论特定于我链接的代码(或容器等低级类),以及它的依赖关系.我曾经是一个使用C程序员的防御和错误代码,但这是一个令人厌倦的实践,我现在编程的更高层次的抽象.

所以我重写一个容器类(和它的依赖项)更灵活,读取更好(迭代器没有atm).正如您所看到的,我将返回枚举的error_codes,我知道我将在调用站点测试它们.容器用于AST的运行时构建,初始化和只读.它们的例外是防止容器被天真地使用(将来可能由我自己使用).

我在这堂课的所有地方都有例外,他们让我觉得很脏.我很感激他们的用例.如果我有选择,我可能会完全关闭它们(Boost使用了很多例外,我正在建立Boost,是的,我知道他们可以被禁用,但是在罗马时......).我可以选择用error_codes替换它们但是嘿,我不会测试它们,那么重点是什么?

我应该用ASSERTS替换它们吗?[1] [2] [3]这个膨胀的人是什么?每个函数调用点都能获得额外的机器吗?或者只有那些有捕获条款的人?既然我不会抓住这些例外,我不应该成为这种膨胀的受害者吗?ASSERTS不会进入发布版本,在基本原始类(即容器)的上下文中,这甚至不重要吗?我的意思是逻辑错误进入最终构建的可能性有多高?

既然我们想回答有针对性的问题,那么这就是我的:你会做什么,为什么?:d

不相关的链接:错误代码并让他们在异常中备份.

编辑2在这种特殊情况下选择在ASSERT和异常之间,我认为异常是最有意义的,正如我上面提到的,容器只在初始化后被读取,并且大多数异常在初始化期间被触发.

c++ exception assertions

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

数据库实现细节 - 每行标头开销

提示这个问题的问题与创建类似于构建IR系统时使用的巨大倒置指数有关.IR社区的一般口号是关系数据库不适合构建IR系统.无论如何,在查看posgres时,行元组开销是23字节+填充(请参阅" Postgres常见问题解答 "中的"从典型文本文件存储数据需要多少数据库磁盘空间?" ).这对我的工作来说太大了(不缩放).

顺便提一下,我的数据集是17个文本,需要4-5个表,具体取决于问题的切片方式.我记得在sqlite中尝试了一个模式,db文件打破了100个演出

我很想知道Sql Server/MySql/Sqlite/Berkeley db(所有访问方法)/ Berkley Db的sqlite3接口/ Kyoto,Tokyo db和Firebird的每行开销是多少.任何一个人都无法回答我猜的问题,除非有人像我一样好奇地调查此事.

编辑

  • Postgres - 23(OMG!)byte tuple header + padding.
  • bdb-hash:26字节页面开销,6字节密钥/数据开销(组合).
  • Bdb-btree:26字节页面开销,10字节密钥/数据开销(组合).
  • MySql Innodb:这里分析(5字节标题+事务id +滚动指针=每行18个)注意到自己:为什么事务ID出现在磁盘上?什么是滚动指针?
  • Sql Server:从这里开始.捕获变量元素长度,具有静态数据类型的行会产生非常适度的开销.开销估计很大程度上取决于模式和数据的性质.变量元素越大,开销越大.

database database-design data-modeling

6
推荐指数
0
解决办法
709
查看次数

SQLAlchemy一对多,没有子表具有主键

是否可以在SQLAlchemy中创建没有主键的表?我想要定义的关系如下:

class TPost(Base):
  __tablename__ = "forum_post"
  id = Column(Integer, primary_key = True)
  topic_id = Column(Integer, ForeignKey("forum_topic.id"))
  index = Column(Integer)
  page = Column(Integer)
  user_id = Column(Integer, ForeignKey("forum_user.id"))
  posted_at = Column(DateTime)
  post_text = Column(String)
  has_quotes = Column(Boolean)
  quotes = relationship("TQuote")

class TQuote(Base):
  __tablename__ = "forum_quotes"
  id = Column(Integer, ForeignKey("forum_post.id"))
  is_direct = Column(Boolean)
  quoted_text = Column(String)
  quoted_id = Column(Integer)   
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我并不需要主键,我不打算Quote将来扩展这种关系.

我的问题具体由此错误消息表示:

sqlalchemy.exc.ArgumentError: Mapper Mapper|TQuote|forum_quotes 
could not assemble any primary key columns for mapped table 'forum_quotes'
Run Code Online (Sandbox Code Playgroud)

编辑:(id,quoted_id)对是唯一的,它存在于大多数数据中,但是当引用不是直接的(并且在这种情况下没有quoted_id)时,我将引用的文本直接内联到引用关系中.我可以使用双表方法(其中直接引号具有带主键的表),但我真的宁愿将其实现为单个一对多关系.我不想做一次以上的加入.

编辑2:

我将对引号进行编号并使用外键+应用程序生成的数字作为pkey,仍然令人烦恼.现在来弄清楚语法. …

python database orm ddl sqlalchemy

6
推荐指数
2
解决办法
6646
查看次数

文字无法进入控制台

我有一个类型为"console"的ac项目,它从父应用程序中启动到它自己的应用程序域,它产生一个控制台窗口.但是,写入控制台的任何文本都不会显示.Console.ReadKey()确实有效.什么想法可能是错的?

注意:父进程的回显显示在父进程的嵌入式控制台(不是win32控制台,而是某种类型的directx GUI小部件)中Console.Out,System.Console.Out并且不是"空"流.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

using ParentApi;

namespace LSTest4
{   
    class Program
    {

        static void Main(string[] args)
        {
            Console.OpenStandardOutput();
            ParentApi.Echo(System.Console.Out.ToString());
            Console.Out.WriteLine("monkeys");
            Console.WriteLine("app start");
            Console.Write("lalala");
            Console.ReadKey();
            ParentApi.Echo("app start");

    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

经过进一步调查:

有问题的代码被注入另一个应用程序,注入是敌对的并由"ParentApi"管理,似乎注入目标是重新映射标准流.在这种情况下,最好的办法是以其他方式处理跟踪.我可能会使用WCF将跟踪输出推送到外部进程.

c# stdout

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

用于组合各种形状的已编译查询的 Scala Slick 策略

我正在使用 postgresql 9.6、slick 3.2 并连接了slick-pg

我正在 Scala 中实现一个 graphql 后端,我需要实现查询来解析各种形状的 GraphQL 游标。输入的形状是可枚举的。影响查询的一些输入可能是:

  • 用户可选择的排序。
  • 各种过滤条件(全文搜索、日期范围等)。
  • 在向后或向前遍历之间进行选择。

我当前的简单游标将向后和向前硬编码为编译查询。并且两者都具有相同的形状,我使用标准的光滑抽象来分解重用的共性(带有操作的值类、“实体”表的继承层次结构和代码生成)。但是仍然有很多样板文件,除非我将它们全部列出,否则它不会扩展到更动态的形状。

这是使用此模式的类的摘录:

private [shard] class SchemaAllTypeCursor(shard: SlickShard) extends CursorSpec[TypeModel] {
  import shard.PostgresProfile.api._
  private val forwardQC = Compiled { (tenantIdUrls: Rep[List[String]], low: Rep[Long], take: ConstColumn[Long]) =>
    Queries.listTypesByTenantIds(tenantIdUrls).forwardCursorById(low, take)
  }
  private val backwardQC = Compiled { (tenantIdUrls: Rep[List[String]], high: Rep[Long], take: ConstColumn[Long]) =>
    Queries.listTypesByTenantIds(tenantIdUrls).backwardCursorById(high, take)
  }

  def executor(tenantIdUrls: List[String])(c: CursorRequest)(implicit req: Req[_]): Observable[TypeModel] = {
    implicit val ec = req.ctx.ec
    Observable fromFuture {
      shard.db.run { …
Run Code Online (Sandbox Code Playgroud)

scala slick slick-pg

6
推荐指数
0
解决办法
430
查看次数