小编Kev*_*Old的帖子

在Redux应用程序中预加载initialState的最佳做法是什么?

我目前不满意使用Flux进行的黑客攻击,现在Redux用于在我的商店中填充initialState.

我总是在初始页面加载的情况下发送JSON的有效负载.通用JavaScript在我的某些应用程序中不是一个选项,因为它们并非全部由Node支持.我想关注如何在客户端上预加载数据的"最佳实践"和模式.然后,我觉得搬到服务器是微不足道的.

以下是我目前在工作中使用Redux的一些其他玩具应用程序的要点:

https://gist.github.com/kevinold/5767bb334472b7e2bfe3

总结一下:

  • 我正在向页面发送全局变量
  • 在componentDidMount()中,我正在调度"接收"并处理各种数据的动作.(当通过请求操作获取异步时,这些"接收"方法在处理这些数据位时使用,我在这里重新利用它们,因为我已经拥有了数据.)

这是有效的,并没有我们遇到的任何问题,但它感觉像一个我不是很满意的黑客.另外,我觉得Redux的初始状态并不满意我这样做.

根据http://rackt.org/redux/docs/recipes/ServerRendering.html和"客户端"部分,我可以将initialState传递给我的商店.

这是我正在帮助的另一个项目(KeystoneJS)的补丁.我将它的Keystone对象传递给initialState:

https://github.com/kevinold/keystone/commit/6f80c2f6f1e5c081361369a8bb31b75f1e62460f#diff-cd8e9933209e834b0519a0257bcfa914R8

虽然这确实有效,但正如你所看到的,我被迫匹配我的整体组合减速器的输出形状(https://github.com/kevinold/keystone/commit/6f80c2f6f1e5c081361369a8bb31b75f1e62460f#diff-b4b498ca92c4d05e050b45c725c26f9d)或者我会得到控制台警告等

我可能在处理这个问题时非常懒惰,但是当我添加/更改与reducers相关的任何内容时,我试图限制更新另一条数据(添加一个reducer,它们是如何编写的等等).

我意识到我可能必须正确地将这个initialState放入reducer.

我正在消化如何(https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/client.js#L25)处理它的initialState.

我非常感谢有关为他人工作的"最佳"和"现实世界"实践的一些反馈.

reactjs redux

27
推荐指数
1
解决办法
1万
查看次数

使用RVM时,当宝石安装在不同的ruby版本中时,bundler不会安装在正确的gemset中

我遇到了rvm,bundler和gemsets的问题.我在rvm中安装了3个红宝石:

rvm rubies

   macruby-0.7.1 [ x86_64 ]
   ree-1.8.7-2010.02 [ x86_64 ]
=> ruby-1.9.2-p0 [ x86_64 ]
Run Code Online (Sandbox Code Playgroud)

和宝石一样:

rvm gemsets

   macruby-0.7.1 [ x86_64 ]
   ree-1.8.7-2010.02 [ x86_64 ]
   ree-1.8.7-2010.02@chef [ x86_64 ]
   ree-1.8.7-2010.02@global [ x86_64 ]
   ree-1.8.7-2010.02@mobi [ x86_64 ]
   ree-1.8.7-2010.02@temple_rails [ x86_64 ]
   ruby-1.9.2-p0 [ x86_64 ]
=> ruby-1.9.2-p0@instapaper [ x86_64 ]
   ruby-1.9.2-p0@mobi [ x86_64 ]
Run Code Online (Sandbox Code Playgroud)

我有一个.rvmrc切换到ruby 1.9.2和"instapaper"gemset:

rvm use ruby-1.9.2-p0@instapaper
Run Code Online (Sandbox Code Playgroud)

我想使用bundler,所以我在这个gemset中手动安装bundler,这很好用.

我构建我的Gemfile:

source "http://rubygems.org"
gem "mechanize"
gem "highline"
gem "www-delicious"
Run Code Online (Sandbox Code Playgroud)

然后,当我运行"bundle install"时,它使用它在ree 1.8.7中看到的gem:

Using highline (1.6.1) 
Using nokogiri (1.4.4) …
Run Code Online (Sandbox Code Playgroud)

ruby bundler rvm

7
推荐指数
1
解决办法
6367
查看次数

获取ack以排除类型为".min.js"的文件

我动态缩小javascript文件并在现有文件旁边生成.min.js文件.这是一个问题,虽然当使用ack时,因为它将这些视为.js文件并搜索它们使用缩小的javascript乱丢我的结果屏幕.

我试过把它添加到我的.ackrc而没有运气:

--type-set=minjs=.min.js                                                                                  
--nominjs
Run Code Online (Sandbox Code Playgroud)

有没有办法让ack忽略这种类型的扩展?

PS我没有简单地将.min.js重命名为.min_js或任何其他变体的选项.

ack

7
推荐指数
1
解决办法
1904
查看次数

通过 imagemagick -modulate 从 Photoshop 色调/饱和度值改变现有图像的色调

我正在尝试将这张图像(以及其他类似图像)的色调以不同的渐变等方式从“蓝色”转换为我的设计师在 Photoshop 中完成的模型中定义的另一种颜色。

我从 Photoshop 附加了 2 个色相/饱和度屏幕,其中 HSL 值为紫色和橙色,但通过以下 ruby​​ 代码在 Imagemagick 中使用 -modulate:

# burnt orange - works
hue = 25.0 # must be a decimal
sat = 100
bri = 0

# purple - does not work
#hue = 266.0 # must be a decimal
#sat = 100
#bri = 0

# formula from -modulate http://www.imagemagick.org/Usage/color_mods/#modulate
h = ( hue * 100/180 ) + 100

system("convert -define modulate:colorspace=HSB home_tab_back_right.png -modulate #{h},#{sat},#{bri} #{h}-#{sat}-#{bri}-home_tab_back_right.png")
Run Code Online (Sandbox Code Playgroud)

这适用于烧焦的橙色图像,但不适用于紫色和我给出的其他颜色。

通过传递“modulate:colorspace=HSB”,我比不传递“modulate:colorspace=HSB”取得了更大的成功,但仍然无法一致地插入从 Photoshop 接收到的值,并让它获取基础蓝色图像并改变色调。

这可以做到吗?

我想将基蓝色图像转换为另一种颜色

Photoshop 中的焦橙色色调饱和度

Photoshop 中的紫色色调饱和度

photoshop image colors imagemagick image-processing

3
推荐指数
1
解决办法
3118
查看次数

将json数据读入Node.js中的全局变量

我正在尝试将json结构读入全局变量,但似乎无法使其工作.一旦从文件中读取(我正在使用该部分),我正在使用回调进行处理.

我想填充"source_files".

var fs = require('fs');
var source_files = [];

function readConfig(callback) { 
    fs.readFile('data.json', 'utf-8', function (err, content) {
        if (err) return callback(err);
        callback(content);
    });             
}                       

readConfig(function(config) { 
    var settings = JSON.parse(config);
    var inputs = settings.inputs;

    for (var id=0; id < inputs.length; id++) {
        source_files.push(inputs[id].replace('./',''));
    }           
});

console.log(source_files);
Run Code Online (Sandbox Code Playgroud)

file readfile node.js

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