我为Acrobat Reader创建了Javascript,允许您保存当前打开的选项卡.它添加了菜单项:"保存选项卡","加载选项卡"和"切换自动加载".它保存标签和页码,并恢复它们.
它对Linux来说特别有用,因为Linux上没有很多pdf阅读器.但是,我无法弄清楚如何捕获打开或关闭文档事件,或者设置一些计时器事件以自动存储当前的选项卡列表.
/*
Here is the script, put it in $HOME/.adobe/Acrobat/9.0/JavaScripts (or in
the equivalent program files folder under Windows,) and it will automatically
be loaded.
When you need to save current state, choose menu "view -> Save Tabs", to restore
recently saved tabs choose "view -> Load Tabs".
*/
var delim = '|';
var parentMenu = "View";
/*
Loading Saved Tabs
*/
function LoadTabs() {
if (global.tabs_opened == null) {
return;
}
var …Run Code Online (Sandbox Code Playgroud) 我已经使用任何权限组合进行了很多操作以使 docker 工作,但是......起初我的环境:
Ubuntu linux 15.04 和 Docker 版本 1.5.0,构建 a8a31ef。
我在用户组中有一个目录“/test/dockervolume”和两个用户 user1 和 user2
chown user1.users /test/dockervolume
chmod 775 /test/dockervolume
ls -la
drwxrwxr-x 2 user1 users 4096 Oct 11 11:57 dockervolume
Run Code Online (Sandbox Code Playgroud)
user1 和 user2 都可以在该目录中写入删除文件。我使用标准的 docker ubuntu:15.04 图像。用户 1 的 ID 为 1000,用户 2 的 ID 为 1002。
我用下一个命令运行 docker:
docker run -it --volume=/test/dcokervolume:/tmp/job_output --user=1000 --workdir=/tmp/job_output ubuntu:15.04
Run Code Online (Sandbox Code Playgroud)
在 docker 中,我只进行简单的“触摸测试”,它适用于 ID 为 1000 的 user1。当我使用 --user 1002 运行 docker 时,我无法写入该目录:
I have no name!@6c5e03f4b3a3:/tmp/job_output$ touch test2
touch: cannot touch …Run Code Online (Sandbox Code Playgroud) 我有一个功能代码片段,它使用 Angular 服务创建 Observable 管道。该代码使用 mergeMap、filter、map 和 shareReplay(1) 运算符来处理用户身份验证并从用户配置文件中检索加入状态。该管道旨在重复使用,以有效地观察入职状态的变化。
当我将此逻辑封装在函数中并返回生成的 Observable 或将其分配给类属性时,我观察到不同的行为。当我从函数返回 Observable 时,管道内的整个链在每个订阅上执行。另一方面,如果我将 Observable 分配给类属性,则 shareReplay(1) 运算符将按预期工作,并且整个链仅执行一次。
我对这种差异感到困惑,并怀疑这可能与新实例的创建有关。你能帮我理解为什么从函数返回 Observable 和将其分配给类属性之间的行为不同吗?如何在这两种情况下使用 shareReplay(1) 运算符实现一致的行为?
user$ = user(this.auth).pipe(shareReplay(1));
getStatus(): Observable<> {
return this.angularService.user$.pipe(
mergeMap(user => {
console.log('Onboarding merge map');
return this.angularService.getUserProfile(user?.uid || "").pipe(
filter(({ profile, user }) => {
console.log('Filter: ', profile['onboarding'])
return profile && profile['onboarding'];
}),
map(d => d.profile['onboarding'])
)
}),
shareReplay(1)
);
}
Run Code Online (Sandbox Code Playgroud)
user$ = user(this.auth).pipe(shareReplay(1));
readonly onboardingStatus$: Observable<> = this.angularService.user$.pipe(
mergeMap(user => {
console.log('Onboarding merge map');
return this.angularService.getUserProfile(user?.uid || …Run Code Online (Sandbox Code Playgroud)