我是一名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) 我想在一个地方知道这三个概念的确切而简洁的定义.答案的质量应取决于以下两点.
注意:
可能有许多正确的答案,因为每个概念都有许多不同的方面.如果有很多好的答案,我最终会将问题转化为CW并汇总答案.
- 发布接受编辑 -
c++ templates components metaprogramming generic-programming
社区维基
正如yank系统的文档所示(感谢Michal),Vim yank系统似乎比标准剪贴板更复杂.因此,我认为如果vim退伍军人可能向我们展示一些利用这种机制的不同风格,这是有益的.特别是对于复杂项目使用vim而不使用重量级IDE(比如C++?).
原始问题
现在我正在为我输入的所有内容使用vim,而不仅仅是为了配置服务器,我不想解决以下琐事.我试图制定谷歌搜索查询,但结果没有解决我的问题:D.
问题一:我如何多次猛拉和更换?
一旦我在抽奖历史中有了一些东西(如果这就是它的名字),然后在命令模式中突出显示并使用'p'字符,则替换的文本放在抽奖历史的前面; 因此,后续更换操作不会使用我想要的文本.我想这在某些情况下是一个有用的功能,但我在我的工作流程中并不需要它.
问题二:如何在不导致线条向前波动的情况下键入文本?
我使用硬标签来以某种方式对我的代码进行分配 - 例如,
FunctionNameX ( lala * land );
FunctionNameProto ( );
Run Code Online (Sandbox Code Playgroud)
当我弄清楚需要进入第二个函数的内容时,如何在不移动文本的情况下插入它?
问题三有没有办法在同一台机器上的gvim实例上有统一的抽奖历史?我有> 1台显示器.只是想知道,我正在使用高亮+鼠标中键点击.
在这篇维基百科文章的最后,在" C中的一个简单示例 "一节中,声称"操作系统会延迟实际内存分配,直到写入内容为止".根据我的经验,这是不可能或更好的,"不可行".OS /处理器不跟踪每个内存写入.维基百科文章是否错误,我怀疑?如果没有赐教我.
编辑
我想当一个人考虑页面错误时,它在某些方面确实有意义.但是,页面错误和虚拟内存不适合讨论内存泄漏.我的意思是,如果进程分配2个页面,写入一个页面(第一页),然后泄漏两个页面它仍然是泄漏,无论天气如何第二页泄漏物理内存.我想该部分应该区分物理内存和虚拟内存?:d
所以我正在玩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精神时的常见用例).
namespace IDENTIFIER {
匹配后,将名称空间数据结构添加到此局部变量.NAMESPACE_BODY …
我已经听到(和反刍)围栏两侧的C++异常口头禅.它已经有一段时间了,我只想再次集中自己,这个讨论特定于我链接的代码(或容器等低级类),以及它的依赖关系.我曾经是一个使用C程序员的防御和错误代码,但这是一个令人厌倦的实践,我现在编程的更高层次的抽象.
所以我重写一个容器类(和它的依赖项)更灵活,读取更好(迭代器没有atm).正如您所看到的,我将返回枚举的error_codes,我知道我将在调用站点测试它们.容器用于AST的运行时构建,初始化和只读.它们的例外是防止容器被天真地使用(将来可能由我自己使用).
我在这堂课的所有地方都有例外,他们让我觉得很脏.我很感激他们的用例.如果我有选择,我可能会完全关闭它们(Boost使用了很多例外,我正在建立Boost,是的,我知道他们可以被禁用,但是在罗马时......).我可以选择用error_codes替换它们但是嘿,我不会测试它们,那么重点是什么?
我应该用ASSERTS替换它们吗?[1] [2] [3]这个膨胀的人是什么?每个函数调用点都能获得额外的机器吗?或者只有那些有捕获条款的人?既然我不会抓住这些例外,我不应该成为这种膨胀的受害者吗?ASSERTS不会进入发布版本,在基本原始类(即容器)的上下文中,这甚至不重要吗?我的意思是逻辑错误进入最终构建的可能性有多高?
既然我们想回答有针对性的问题,那么这就是我的:你会做什么,为什么?:d
不相关的链接:错误代码并让他们在异常中备份.
编辑2在这种特殊情况下选择在ASSERT和异常之间,我认为异常是最有意义的,正如我上面提到的,容器只在初始化后被读取,并且大多数异常在初始化期间被触发.
提示这个问题的问题与创建类似于构建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的每行开销是多少.任何一个人都无法回答我猜的问题,除非有人像我一样好奇地调查此事.
编辑
是否可以在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,仍然令人烦恼.现在来弄清楚语法. …
我有一个类型为"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将跟踪输出推送到外部进程.
我正在使用 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)