小编oli*_*ver的帖子

部分樱桃 - 用Git挑选一个提交

我正在研究两个不同的分支:发布开发.

我注意到我仍然需要将一些提交给发布分支的更改集成到开发分支中.

问题是我不需要所有的提交,只有某些文件中的一些人,所以很简单

git cherry-pick bc66559
Run Code Online (Sandbox Code Playgroud)

没有办法.

当我做的时候

git show bc66559
Run Code Online (Sandbox Code Playgroud)

我可以看到差异,但实际上并不知道将其部分应用于我当前工作树的好方法.

git git-cherry-pick

484
推荐指数
4
解决办法
11万
查看次数

什么haskell主题需要以真实世界 - 哈斯克尔风格来解决?

现在已经有一段时间RWH问世了(差不多3年).在网上逐渐写完这本书后,我急切希望得到我的副本(我认为,这是写一本书的最好方法之一.)在所有相当学术论文中,哈克尔学生的读书真是太有意义了经常遇到!

在一些旅行中它是一个坚固的伴侣,我会经常回顾它.尽管如此,我的副本开始变得非常糟糕,尽管大部分内容仍然有效,但在haskell世界中有大量新主题值得以类似方式进行报道.

我受伤的rwh副本

考虑到RWH已经(现在仍然如此)的影响,我真诚地希望有一天会有续集:)一些续集的主题会立即出现在我的脑海中:

  • Iteratees
  • 更多关于haskell的并发编程
  • 懒惰评价的优点和危险
    • 可能涉及一些处理这个的常见库
    • 特别是懒惰的io
  • 新的ghc功能(例如新的I/O管理器,LLVM代码生成器)
  • 记忆化
  • ..

haskell社区需要RWH风格解释的主题是什么?


这是迄今为止的建议摘要:

概念

  • Iteratees/lazy IO
  • 箭头
  • ghc活动经理

技术

  • 泛型(uniplate,syb)
  • 元编程(模板Haskell)
  • 数据结构(使用功能数据结构,设计数据结构)
  • EDSL(设计EDSL)
  • 记忆化
  • 用monads设计
  • 命令式编程的最佳实践

工具

  • ThreadScope
  • 高级FFI工具(c2hs,使用C中的Haskell)
  • 阴谋
  • 黑线鳕
  • hoogle
  • 调整运行时,尤其是 GC标志
  • 巨灵

图书馆

  • 数组和数组编程(vector,repa,hmatrix)
  • 数字(随机数)
  • 并行编程(Par monad)
  • unicode和locales(text,text-icu)
  • 解析(attoparsec,tagsoup)
  • 网络(snap,yesod)
  • 网页内容(模板)
  • 持久性(特别是no-sql存储绑定)
  • 图形(cairo,sdl,opengl)
  • xml(haxml)
  • 加密
  • 处理器和系统的东西

haskell

45
推荐指数
3
解决办法
2280
查看次数

什么是haskell复制目录的方法

我发现自己在haskell中做了越来越多的脚本.但在某些情况下,我真的不确定如何"正确"地做到这一点.
例如,递归地复制目录(la unix cp -r).

由于我主要使用Linux和Mac Os,我通常作弊:

import System.Cmd
import System.Exit

copyDir ::  FilePath -> FilePath -> IO ExitCode
copyDir src dest = system $ "cp -r " ++ src ++ " " ++ dest
Run Code Online (Sandbox Code Playgroud)

但是,以独立于平台的方式复制目录的推荐方法是什么?
我没有找到任何适合hackage的东西.

这是我到目前为止使用的相当天真的实现:

import System.Directory
import System.FilePath((</>))
import Control.Applicative((<$>))
import Control.Exception(throw)
import Control.Monad(when,forM_)

copyDir ::  FilePath -> FilePath -> IO ()
copyDir src dst = do
  whenM (not <$> doesDirectoryExist src) $
    throw (userError "source does not exist")
  whenM (doesFileOrDirectoryExist dst) $
    throw (userError …
Run Code Online (Sandbox Code Playgroud)

haskell

15
推荐指数
2
解决办法
2086
查看次数

haskell中的表达式评估模式用于脚本编写

正如别处指出多次(例如,1,2,...)在Haskell脚本可以说是相当强大的.
快速方法也可以是ghc表达式评估模式.这就是我实际上发现自己越来越多地使用(我真的很喜欢ruby中的这个功能).
一个小例子任务:
"找出包含HEAD和特定修订版之间的git差异的所有文件夹"

git diff --stat 9e2b68 | ghc -e \
  "getContents >>= return.(Data.List.nub).map(fst.break('/'==).head.words).lines"
Run Code Online (Sandbox Code Playgroud)

这看起来有点笨重,可能是因为我真的不知道使用的细节ghc -e.
鉴于所有有趣的部分只是nub.map(fst.break('/'==).head.words).lines实际的表达似乎有点罗嗦.

  • 我如何告诉ghc我需要使用的模块,所以我不需要使用全名来限定它们?
  • 我可以让ghc选择某种包含我经常使用的模块的配置文件吗?

我真的很感激从其他用例中看到一些例子,这些例子将有助于我改进我对这些小脚本使用haskell的方式!

旁注:Commandline-foo向导可能会对此嗤之以鼻,但我觉得使用haskell然后使用bash脚本更加舒服,所以这就是我想要使用的内容.

git scripting haskell

15
推荐指数
3
解决办法
661
查看次数

在Vim中为列插入缩进

使用Vim我真的是视觉模式的粉丝,它允许你在列之前插入文本.

在箭头后插入一些间距,

> one
> two
> three
Run Code Online (Sandbox Code Playgroud)

可以通过<Ctrl-V>jjI <Esc>以下方式完成

>   one
>   two
>   three
Run Code Online (Sandbox Code Playgroud)
  • 进入视觉模式<Ctrl-V>,
  • 扩展视觉选择jj,
  • 插入一些空格I__,
  • 将更改传播到块状视觉选择的所有行 <Esc>

现在我有一个需要格式化的文本文件.这就是它的样子:

start() -- xxx
initialize() -- xxx
go() -- xxx
Run Code Online (Sandbox Code Playgroud)

现在我想对齐此部分文本,将其排列成如下列:

start()       -- xxx
initialize()  -- xxx
go()          -- xxx
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我不能在每行中插入不同数量的缩进,只是缩进固定数量的空格/制表符是不够的.如何在所有缩进文本必须在同一列对齐的情况下进行缩进?


编辑:我只想出一个相当冗长和笨拙的方法:

  • 找到要缩进的字符串位置:\--,
  • 插入N(我们20说吧)之前,空格:20i <Esc>,
  • 删除这些空间的一部分返回到某列(假设15) d|15,
  • 将这些步骤保存为宏并根据需要重复宏,

......但是非常难看!

vim formatting text

12
推荐指数
1
解决办法
6489
查看次数

git中的预取钩子功能

在我的场景中,我在服务器上维护一个svn同步的git存储库.我组中的所有开发人员都使用此存储库来获取更新.开发人员获取最新更改之前,
我找不到触发自动"git svn fetch"(或任何其他命令)的方法. 我目前的解决方法是让一个cron作业每5分钟同步一次svn相关的更改.是否有可能拥有这种预取钩子? 谢谢

git

9
推荐指数
1
解决办法
2229
查看次数

React Native:将事件从android发送到javascript

有关于如何通过RN桥接器从RN javascript部分与android和ios中的本机部分进行通信的文档.什么是不清楚的是桥梁通信的生命周期.

(来源媒体)

我在android中有一个后台服务,需要将事件发送到我的RN应用程序.这是我从我的android发送事件的方式Service:

private RCTDeviceEventEmitter emitter() {
    return mReactContext.getJSModule(RCTDeviceEventEmitter.class);
}
private void pushPayload(String event, WritableMap payload) {
    emitter().emit(event, payload);
}
public void sendTimerEvent(long remaining) {
    WritableMap data = Arguments.createMap();
    data.putInt("remaining", (int) remaining);
    pushPayload("timeoutEvent", data);
}
Run Code Online (Sandbox Code Playgroud)

在javascript方面,我使用以下静态代码(不在组件中,只是导入到我的index.android.js文件的代码:

const subscribeForNativeEvents = (eventID, callback) => {
  const Emitter = Platform.OS === 'android' ? DeviceEventEmitter : NativeAppEventEmitter;
  Emitter.addListener(eventID, callback);
};

subscribeForNativeEvents('timeoutEvent', (event) => {
// work with event.remaining
}); …
Run Code Online (Sandbox Code Playgroud)

javascript java lifecycle android react-native

9
推荐指数
1
解决办法
2032
查看次数

执行VIM中多行的命令

对我来说,VIM的一个常用功能是通过外部命令过滤文件(或文本选择),并将选择替换为结果,例如:

:'<,>'!sort
Run Code Online (Sandbox Code Playgroud)

所以

c
b
a
Run Code Online (Sandbox Code Playgroud)

将被排序并将导致

a
b
c
Run Code Online (Sandbox Code Playgroud)

也可以用外部命令的返回值替换当前行,例如:

:,!ls | wc -l
Run Code Online (Sandbox Code Playgroud)

将插入当前目录中的文件数量(在我的情况下例如:)

41
Run Code Online (Sandbox Code Playgroud)

但有没有办法将字符串传递给shell的命令?例如,这可能是我的视觉选择的内容:

line_x
line_y
line_z
Run Code Online (Sandbox Code Playgroud)

我需要的是执行一些shell命令并将每个选定的行作为一个shell脚本参数,例如:

my_bash_command line_x -c -e -f
my_bash_command line_y -c -e -f
my_bash_command line_z -c -e -f
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

vim shell scripting

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

比较Flow中的枚举值

我正在使用flow来注释我的代码中的类型.

type Bar = 'One' | 'Two';
function foo(b: Bar) : boolean {
  return b === 'Three';
}
Run Code Online (Sandbox Code Playgroud)

是否有任何方法可以教导flow报告警告或错误以与不匹配类型进行比较(string在我的情况下)?

这是测试的例子

编辑:所以似乎无法使用枚举.但是,由于这实际上是我遇到的错误,我想表达这一点,以便流程将帮助我标记这种情况.

有什么想法吗?

javascript types flowtype

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

如何从外部控制 Flutter 中的动画?

将状态传递给小部件很容易。我有一个StatefulWidget包含动画及其控制器的动画。我需要能够从小部件树中更高的另一个小部件触发动画。

应用程序

MainApp应该使用按钮触发动画。

在此输入图像描述

据我了解,AnimationController只有一个命令式 API。我可以打电话controller.forward()controller.reverse(). 但要做到这一点,我需要将控制器公开给我的 MainApp。

我目前所做的就是保留我的状态的全局变量。

class MainApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      ...
      body: new LogoWidget(),
    );
  }

  _startAnimation() {
    _state.restartAnimation();
  }
}

_LogoWidgetState _state; // yuk!

class LogoWidget extends StatefulWidget {
  _LogoWidgetState createState() {
    _state = _LogoWidgetState();
    return _state;
  }
}

class _LogoWidgetState extends State<LogoWidget>
    with SingleTickerProviderStateMixin {
  Animation<double> animation;
  AnimationController controller;

  restartAnimation() {
    controller.value == 1.0 ? controller.reverse() : controller.forward(); …
Run Code Online (Sandbox Code Playgroud)

animation dart flutter

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

函数如何在打字稿中检查空值?

在打字稿 2.6 中,我想编写一个执行空检查的函数。当我启用严格的空检查时,打字稿 2.6 会抱怨以下代码。(注意,当使用空检查时直接有效)

编辑:更正,notNullOrUndefined因为它没有检查 foo

interface A {
  foo: string | undefined;
}
const notNullOrUndefined = (a: A): boolean => {
  return a.foo != null;
}
const len = (a: A): number => {
  //if (a.foo != null) {
  if (notNullOrUndefined(a)){
    return a.foo.length;
  }
  return 0;
} 
Run Code Online (Sandbox Code Playgroud)

这是要玩的示例:示例

解决这个问题的打字稿方法是什么?

javascript typescript

2
推荐指数
1
解决办法
6246
查看次数

如何使用未来的值填充流?

我正在使用流来监控我的Firestore后端的变化。这适用于更新,但我没有得到初始值。

class A {
  final Stream<DocumentSnapshot> _visitorCount =
      Firestore.instance.document('ServerData/serverStatus').snapshots();

  Stream<int> get visitorCount {
    return Observable(_visitorCount)
        .map((DocumentSnapshot doc) => doc['activeUsers'] as int);
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用rxdart'sstartWith来提供一个初始值,但是读出这个值会导致 aFuture<int>并且我需要提供一个intto startWith

static Future<int> f = Firestore.instance
  .collection('ServerData')
  .document('serverStatus')
  .get()
  .then((doc) => doc['activeUsers'] as int);
Run Code Online (Sandbox Code Playgroud)

在路上,我像这样使用它:

StreamBuilder(
          stream: _visitorCount,
          initialData: 0,
          builder: (context, snapshot) =>
              Text('${snapshot.data} users logged in') ...
Run Code Online (Sandbox Code Playgroud)

我提供0初始值,但这当然只是一个临时值。我相信这很明显,但我仍然很难做到正确。解决这个问题的最佳方法是什么?

reactive-programming dart flutter google-cloud-firestore

2
推荐指数
1
解决办法
2574
查看次数