编辑:这个问题/答案是从2013年开始,当Awesome仍然在版本3.4/3.5时,自那时以来很多变化,因为Awesome在版本4+中被重写,你现在看到的可能会有所不同.我正在添加此免责声明,因为我看到了针对此问题的新回复/观看次数.
我正在尝试映射类似于tmux的令人敬畏的wm快捷方式.我喜欢tmux的alt +箭头组合来调整任一维度中的窗格大小.我知道awesome的awful.tag.incmwfact()
功能可以垂直或水平工作,具体取决于布局.但是,我也想要一个在相同布局下在另一个维度上调整大小的函数.这对于垂直最大化其中一个较小的窗口而不侵入屏幕另一半上最大窗口的空间非常有用:
+----------+----------+
| | |
| | ^ |
| +-----|----+
| | v |
| | |
+----------+----------+
Run Code Online (Sandbox Code Playgroud)
我也发现了这个awful.client.moveresize()
功能,但它似乎只能在浮动布局中工作.我知道这是可行的,因为我可以用鼠标调整窗口大小,即使在平铺布局中也是如此.我只是不知道鼠标挂钩的功能.
我们一直在使用Perl::Critic
这里来执行我们的代码约定.最近/tmp
,由于该Temp::File::tempdir
功能,我们遇到了填满目录的问题.tempdir
当Perl进程终止时清理,但由于我们的整个后端是Perl进程,这只发生在服务器本身重新启动时(不经常).我们希望鼓励开发人员newdir
在将来使用对象方法,一旦对象超出范围,它就会自行清理.
基本上,我们试图将其标记Temp::File::tempdir
为违反代码约定,但我似乎无法找到任何类似于CPAN的规则.我知道这很难用动态类型的语言强制执行而不会引入误报,但我希望有人在过去遇到类似的问题而另一个已弃用的函数.我们也不期望抓住所有棘手的案例,只是最明显的用途Temp::File::tempdir
.我们的想法是阻止意外使用tempdir
何时newdir
可以完成工作,而不是抓住所有欺骗批评者的尝试(开发人员总是可以使用## no critic
).tempdir
如果use Temp::File
定义了(最好检查没有别的东西重新定义tempdir
)和何时Temp::File::tempdir
使用,它可能就足够了.
是否有类似的东西,或者我应该从头开始?谢谢
我以前在我的项目(完全工作项目)中有一组功能性的Pod,直到最新的pod install
运行,现在我的桥接头中提到的头文件中出现"找不到文件"的错误(这是一个带有Obj-的Swift项目C包括).做了一些研究后,似乎应该有标题的符号链接Pods/Headers
,该目录对我来说是空的.但是,已经下载了pod本身并且Pods/[Lib]
存在所有相应的目录.
我在这个错误开始发生之前就已经改变的是为我正在引入的一个库指定:git
和:commit
标记.然后我重新pod install
开始看到"找不到文件"错误.那时我正在使用Cocoapods 0.39
我尝试了其他堆栈溢出线程的一些解决方案,包括添加User Header Search Paths
,没有效果(现在回到原始版本),并更新我的cocoapods.我目前的cocoapods版本现在是1.0.0.beta.6.除了我经历的额外麻烦,例如必须重写我的Podfile的部分以符合新标准,我现在似乎回到了相同的状态(所有库成功下载,但标题未能找到).
这是一个如何在桥接头中包含我的标头的示例:
// In this header, you should import all the public headers of your framework using statements like #import <MyKit/PublicHeader.h>
#import <CocoaLumberjack/CocoaLumberjack.h>
Run Code Online (Sandbox Code Playgroud)
这是我的Podfile的样子(我试图减少它以避免不相关的内容):
source 'https://github.com/CocoaPods/Specs'
platform :ios, '8.0'
use_frameworks!
pod 'CocoaLumberjack', '2.0.0'
pod 'SwiftyJSON', '~> 2.3'
pod 'Classy', :git => 'https://github.com/ClassyKit/Classy.git', :commit => 'c319908f8bded62e268dfd48ee5d65329b819129'
workspace 'my.work-ios'
project 'mywork' # sdk
project 'Examples/example1' # sample …
Run Code Online (Sandbox Code Playgroud) 在我的iOS应用程序中,我使用NSAttributedString生成项目符号列表.不幸的是,我正努力让子弹看起来很漂亮.我的第一次尝试是使用常规文本和子弹的unicode字符,基本上使用这样的字符串:
var attributedString = NSMutableAttributedString(
string: "Here is a list of bullets and a paragraph introducing them, note that this paragraph spans multiple lines\n" +
"• This is the first bullet\n" +
"• Here is a second bullet\n" +
"• And here is a third bullet with a lot of text such that it overflows to the next line"
)
Run Code Online (Sandbox Code Playgroud)
结果如下:
我喜欢子弹看起来如何,但是最后一个子弹中的溢出文本应该与之前的行对齐,我无法弄清楚如何用纯文本实现(没有对上面的段落应用相同的对齐).
我的第二次尝试是通过NSHTMLTextDocumentType在NSAttributedString中使用html,并使用<ul>
和<li>
元素生成项目符号.
let content = "Here is a list of bullets and a paragraph introducing …
Run Code Online (Sandbox Code Playgroud) 我是一个vim用户,最近才开始玩zsh以便能够在shell中使用vi模式(由于缺少插入/命令模式指示,这在bash中不实用).在阅读了一些例子之后,我设置了以下功能来相应地更新线路(我选择了colorscheme以匹配vim-powerline,我也使用它):
vim_ins_mode="%{$fg[white]%}?%{$fg_bold[blue]$bg[white]%} INSERT %{$reset_color%}"
vim_cmd_mode="%{$fg[green]%}?%{$fg_bold[black]$bg[green]%} COMMAND %{$reset_color%}"
vim_mode=$vim_ins_mode
function zle-line-init zle-keymap-select {
RPS1="${${KEYMAP/vicmd/${vim_cmd_mode}}/(main|viins)/${vim_ins_mode}}"
RPS2=$RPS1
zle reset-prompt
}
zle -N zle-line-init
zle -N zle-keymap-select
Run Code Online (Sandbox Code Playgroud)
它工作得很好,除了当我运行更多命令时,先前命令的RPS1输出到屏幕.你可以想象,我的终端上有多个明亮的盒子会让你分心:
我希望以某种方式清除此字段,然后将其作为上一个命令转储到行缓冲区中,但到目前为止,我看到的示例和zsh主题都没有做到这一点.在我的旧.bashrc文件中,我有一个陷阱设置来重置我的命令的颜色,以便输出颜色不受影响,我想知道这里是否有类似的东西?或者也许有一个更清洁的方式与zsh?
我们公司希望向我们的客户分发iOS的闭源SDK.我一直在使用Cocoapods构建框架并构建了一个使用它的示例应用程序.以前,该应用程序在模拟器上以及部署在设备上时运行良好.但是,我还在应用程序本身中嵌入了Pods.framework文件.可能感兴趣的另一条信息是框架是用Swift编写的,包含的cocoapods依赖项是Swift和Objective-C.
我想让pods的要求更容易管理,因此用户不需要关心它们并尝试将Pods.framework文件嵌入到我们正在构建的SDK中 - 所以我删除了嵌入Pods框架和从示例应用程序复制Pods资源,只留在框架中,我还删除了Pods.framework作为示例应用程序的依赖项,只留在SDK中.这似乎在模拟器中工作,但现在应用程序崩溃移动设备与dyld:库未加载错误.
在研究它之后,我偶然发现了一些相关的讨论:https : //github.com/CocoaPods/CocoaPods/issues/344 https://objectpartners.com/2014/06/25/developing-private-in-house-libraries -with-的CocoaPods /
但是,使用私有pod的建议解决方案看起来不适合我们,我的理解是私有pod中的源代码仍然是开放的,我们无法与我们的客户共享它.
有人可以就这种情况下可行的解决方案提出建议吗?
前几段描述了我想要实现的目标,实际问题在最后.谢谢
以前,我只是使用new
关键字来创建对象,并使用原型来分配方法和处理继承.然而,最近,(部分受到CoffeeScript生成的JS的启发)我决定使用一个对象创建函数,它看起来像这样:
var Test = function(a) {
function Test(a) {
this.a = a;
}
var numCalls = 0;
Test.prototype.output = function() {
alert('I was initialized with ' + this.a);
numCalls++;
};
Test.prototype.called = function() {
alert('You called the output ' + numCalls + ' times');
};
return new Test(a);
};
Run Code Online (Sandbox Code Playgroud)
然后我会创建一个这样的新对象:
var obj = Test('string');
Run Code Online (Sandbox Code Playgroud)
与new
用于每个实例的典型方法相比,这种方法有几个优点.首先,我不太可能忘记使用这个词new
(我知道还有其他方法可以避免new
,但从我看到他们遇到的问题与我下面描述的问题类似),其次,我很容易看到'构造函数在任何现在属于类的函数中看到的私有'变量.我测试的时候确实遇到过警告.instanceof
不再有效,因为它没有看到内部对象测试.为了解决这个问题,我尝试使用构造函数属性:
var a = Test('one');
var b = Test('two');
a.constructor == b.constructor // false
a.constructor.name …
Run Code Online (Sandbox Code Playgroud) 有没有办法绕过顽皮的通知消息的字符限制?我不知道这个限制是什么,但它们似乎在一定长度后被截断.我正在使用orglendar,它在一个消息/窗格中总结了我的谷歌日历事件,这非常方便.
问题是如果我有超过4个左右的事件,它们往往会变得太长而被切断.由于截断的</span>
标记导致解析不正确,最终的消息有些难以理解.
或者,由于通知消息可能不是为这样的长列表设计的,所以是否有替代小部件我可以修改orglendar来代替使用?
我们需要根据环境(local/dev/staging/production)修改我们的 React Native 应用程序(使用 Expo 构建)中的某些配置/变量。我已经查看了许多为此目的而设计的库,但似乎所有库都存在一个对我们的用例造成破坏的缺陷:
作为不需要第三方插件的更简洁的替代方案,我正在考虑使用 babel 的env选项,并将所有环境作为单独的 json 对象在babel.config.js
. 但是,我没有看到太多关于此的文档或示例。难道我只是添加env
在同一水平场presets
和plugins
包含production
,development
等等。如下面的例子中字段:
module.exports = (api) => {
api.cache(true);
return {
presets: [...],
env: {
development: {
CONFIG_VAR: 'foo'
},
production: {
CONFIG_VAR: 'bar'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
那行得通吗?CONFIG_VAR
稍后我将如何在代码中访问它?
这是我的webpack.config.js
,我没有看到其中有任何奇怪的东西(即无限线程池)会造成挂起,但我总是必须手动按 Ctrl+C 该步骤才能继续。这是一个小麻烦,但我想在重构一些部署代码时解决它。
const path = require('path');
const version = require('./VERSION').version;
const SentryWebpackPlugin = require('@sentry/webpack-plugin');
module.exports = {
mode: process.env.NODE_ENV,
entry: './client/index.js',
output: {
filename: 'client.js',
libraryTarget: 'var',
library: 'ui',
path: path.resolve(__dirname, 'dist'),
publicPath: '/dist/',
},
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-flow'],
},
},
},
],
},
plugins: [
new SentryWebpackPlugin({
include: '.',
ignoreFile: '.sentrycliignore',
ignore: [
'node_modules',
'lib',
'server',
'flow-typed',
'scripts',
'webpack.config.js'
],
configFile: 'sentry.properties', …
Run Code Online (Sandbox Code Playgroud) awesome-wm ×2
cocoapods ×2
ios ×2
javascript ×2
objective-c ×2
swift ×2
babeljs ×1
cocoa-touch ×1
expo ×1
lua ×1
perl ×1
perl-critic ×1
shell ×1
typescript ×1
webpack ×1
xcode ×1
zsh ×1