我正在NodeJS
服务器端运行,我正在尝试进行一些自动图像处理以确定图像的"基色".
以下是我想要做的步骤:
我知道这些东西在PHP中是可能的,但我想使用Node是可能的.我已经看过有关使用Node-imagick
基本处理(如调整大小和裁剪)的教程,但不知道从哪里开始更像这样的高级分析.
问题
(a)这可能与Node有关吗?
(b)哪些图书馆允许我这样做?
非常简单的问题:在从范围中删除项目时AngularJS 1.2.x
,是否可能(以及如何)ngAnimate
触发?
这是Plunker的一个例子:
http://plnkr.co/edit/tpl:FrTqqTNoY8BEfHs9bB0f?p=preview
码:
<body ng-controller="MainCtrl">
<div ng-repeat="img in imgs" class="my-repeat-animation">
<img ng-src="{{img}}" />
<button class="btn btn-primary" ng-click="remove(img)">DELETE</button>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
脚本:
app.controller('MainCtrl', function($scope) {
$scope.imgs = ['http://cache.mrporter.com/images/products/362812/362812_mrp_in_l.jpg', 'http://cache.mrporter.com/images/products/362807/362807_mrp_in_l.jpg', 'http://cache.mrporter.com/images/products/364762/364762_mrp_in_l.jpg', 'http://cache.mrporter.com/images/products/357020/357020_mrp_in_l.jpg']
$scope.remove = function(image){
var index = $scope.imgs.indexOf(image);
$scope.imgs.splice(index,1);
}
});
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,点击"删除"按钮运行splice()
上$scope.imgs
.我想动画这个,而不是让它消失.我正在使用刚刚从Moo年份文章中复制粘贴的过渡,这在过滤范围时效果很好,但显然不是从范围中删除时.
我是这种javascript的新手,所以我将给出一个简短的解释:
我有一个内置的web scraper,Nodejs
它收集(相当多)数据,处理它Cheerio
(基本上是jQuery
为了Node
)创建一个对象,然后将其上传到mongoDB.
它工作得很好,除了在较大的网站上.什么是似乎要发生的事情是:
request
模块获取页面源,然后将数据加载到Cheerio
.正如我所说,这发生在成千上万的URL上,一旦我到达,比如,加载了10,000个url,我在节点中出现错误.最常见的是:
Node: Fatal JS Error: Process out of memory
Run Code Online (Sandbox Code Playgroud)
好的,这是实际的问题:
我认为这是因为Node的垃圾清理工作不正常.例如,request
从所有40,000个URL中抓取的数据仍然可能存在于内存中,或者至少可以创建40,000个javascript对象.也许这也是因为MongoDB连接是在会话开始时进行的,并且永远不会关闭(我只需在完成所有产品后手动关闭脚本).这是为了避免每次登录新产品时打开/关闭连接.
要真正确保它们被正确清理(一旦产品进入MongoDB我不再使用它并且可以从内存中删除)可以/我应该只是简单地从内存中删除它,只需使用delete product
?
Moreso(我显然不是JS如何处理对象)如果我删除一个对象的引用是它完全从内存中删除,还是我必须删除所有这些?
例如:
var saveToDB = require ('./mongoDBFunction.js');
function getData(link){
request(link, function(data){
var $ = cheerio.load(data);
createProduct($)
})
}
function createProduct($)
var product = {
a: 'asadf',
b: 'asdfsd'
// there's about 50 lines of data in here in …
Run Code Online (Sandbox Code Playgroud) 我有一个内部有数组的文档,如下所示:
"userTags" : [
"foo",
"foo",
"foo",
"foo",
"moo",
"bar"
]
Run Code Online (Sandbox Code Playgroud)
如果我执行,db.products.update({criteriaToGetDocument}, {$push: {userTags: "foo"}}}
我可以正确插入foo
数组的另一个实例.
但是,如果我这样做,db.products.update({criteriaToGetDocument}, {$pull: {userTags: "foo"}}}
它会从数组中删除所有实例foo
,让我:
"userTags" : [
"moo",
"bar"
]
Run Code Online (Sandbox Code Playgroud)
这根本不会做,我只想从数组中拉出一个项而不是全部.如何更改命令以便只foo
删除一个命令?有什么$pullOnce
方法可以在这里工作吗?
我正在为我的webapp设计一个设计,我想要一个类似于这里看到的黑暗主题.
可悲的是,我发现Angular Material Theming Docs非常难以理解; 没有提到每种颜色的使用位置,如何设置背景颜色或文本颜色等.
我目前正在使用:
.config(function($mdThemingProvider) {
$mdThemingProvider.definePalette('coolpal', {"50":"#d9ddec","100":"#a6b1d2","200":"#8190bf","300":"#5468a5","400":"#495b90","500":"#252830","600":"#354168","700":"#2a3453","800":"#20283f","900":"#161b2b","A100":"#252830","A200":"#a6b1d2","A400":"#495b90","A700":"#2a3453"});
$mdThemingProvider.definePalette('accentpal', {"50":"#ffffff","100":"#bfe7f7","200":"#8dd5f1","300":"#4ebee9","400":"#32b4e5","500":"#1ca8dd","600":"#1993c2","700":"#157fa7","800":"#126a8c","900":"#0e5570","A100":"#ffffff","A200":"#bfe7f7","A400":"#32b4e5","A700":"#157fa7"});
$mdThemingProvider.definePalette('warnpal', {"50":"#f0fdf9","100":"#adf4dc","200":"#7bedc7","300":"#3ce5ac","400":"#21e1a0","500":"#1bc98e","600":"#17ae7b","700":"#149368","800":"#107855","900":"#0d5d42","A100":"#f0fdf9","A200":"#adf4dc","A400":"#21e1a0","A700":"#149368"});
$mdThemingProvider.theme('default')
.primaryPalette('coolpal').dark()
.accentPalette('accentpal')
.warnPalette('warnpal')
.backgroundPalette('coolpal')
})
Run Code Online (Sandbox Code Playgroud)
有点黑色的颜色,这可以正常,但如果我看一下颜色md-toolbar
,文本设置为rgba(0,0,0,0.87);
,我不知道如何改变它; 我以为它会来自我coolpal
主题的某个地方,但事实并非如此.这是我的文本元素的样式:
如何更改$mdThemingProvider
以确保文本是浅色而不是不透明的黑色?
不幸的是我没有记录我可以测试这个,但我无法在任何地方找到任何相关信息.
说我有这样的文件:
{
email: {
type: 'Gmail',
data: {//freeform data},
}
}
Run Code Online (Sandbox Code Playgroud)
我想更新doc.email.data
.我需要使用markModified()
,否则数据将无法正确保存.
我这样修改了吗?
doc.email.data = newData;
doc.markModified('email.data');
doc.save();
Run Code Online (Sandbox Code Playgroud)
或者我只是这样做,markModified('email')
而Mongoose会解决剩下的问题吗?
我正在使用与Gulp的browsersync,在特定的文件更改上运行一些任务.每当我保存文件时,[BS] Reloading Browsers...
我的终端都会得到10+ ,并且性能可以理解为滞后.
这是我的gulpfile:
gulp.task('bowerJS', function() {
gulp.src(lib.ext('js').files)
.pipe(concat('lib.min.js'))
.pipe(uglify())
.pipe(gulp.dest('app/assets/js'));
});
gulp.task('bowerCSS', function() {
gulp.src(lib.ext('css').files)
.pipe(concat('lib.min.css'))
.pipe(gulp.dest('app/assets/css/'));
});
// Compile sass into CSS & auto-inject into browsers
gulp.task('less', function() {
gulp.src('./app/css/*.less')
.pipe(less())
.pipe(autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
.pipe(gulp.dest('app/assets/css'))
.pipe(browserSync.stream());
});
// Render Jade templates as HTML files
gulp.task('templates', function() {
gulp.src('views/**/*.jade')
.pipe(jade({
pretty: true
}))
.pipe(gulp.dest('app/src/'))
});
gulp.task('php', function() {
php.server({ base: 'app', port: 8123, keepalive: true});
});
gulp.task('serve', ['bowerJS', 'bowerCSS', 'less', 'templates', …
Run Code Online (Sandbox Code Playgroud) 使用 React Navigation (6),我将底部选项卡设置为我的主导航器:
export function TabNavigator() {
const getColor = ({ focused, color }) => (focused ? palette.blue : color)
return (
<Tab.Navigator screenOptions={{ headerShown: false }}>
<Tab.Screen
name="home"
component={HomeScreen}
options={{
tabBarLabel: "Home",
tabBarIcon: ({ size, ...rest }) => (
<Ionicons name="home-outline" color={getColor(rest)} size={size} />
),
}}
/>
<Tab.Screen
name="favourites"
component={FavouritesScreen}
options={{
tabBarLabel: "Favourites",
tabBarIcon: ({ size, ...rest }) => (
<Ionicons name="heart-outline" color={getColor(rest)} size={size} />
),
}}
/>
<Tab.Screen
name="about"
component={AboutYouScreen}
options={{
tabBarLabel: "About you",
tabBarIcon: ({ size, …
Run Code Online (Sandbox Code Playgroud) 无法找到任何探索Angular此类问题的资源,如果您知道任何事情,请随时将我链接到正确的方向.
我正在使用Angular为移动设备建立一个在线商店(在这个阶段只有移动设备).
系统的核心是产品(每个产品都有名称,设计师,描述,颜色,价格,类别,商店位置和其他一些产品).
我现在将所有这些存储在JSON文件中并将其加载到Angular中,但是我添加的产品越多,这就变得越难以管理.
我想做什么:
我想要一个可以发送一些查询的数据库(例如:"男士,衬衫,
我唯一接触过的后端系统是MySQL(并没有那么多).我知道足够的PHP让我自己,我会说初学者 - 中级(我是一个前端开发者).
这种东西最适合任何特定类型的数据库吗?AngularJS有什么特别的"玩得好"吗?
我将以这样一个事实为前提:我真的不知道这是否是实现我正在做的事情的最佳方式,而且我对更好的建议非常开放.
我有一个用户帐户系统使用OAUTH2
它来查找我的数据库中的用户信息并将其保存为变量,$rootScope.userInfo
.它驻留在一个附加到我的应用程序的控制器中body
; 在这里,我认为最高级别的控制器会在其中存在之前加载,但显然不是.
如果我加载了一个试图$rootScope.userInfo
在我mainCtrl
有机会从我的数据库加载它之前尝试访问该对象的视图,它会抛出一个javascript错误并Angular
中断.
作为参考,这里是模板的粗略概念:
<body ng-controller="mainCtrl">
<header>Content</header>
<div class='main-view' ng-controller="userProfile">
<p>{{user.name}}</p>
<p>{{user.email}}</p>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我加载$rootScope.userInfo
在mainCtrl
这样的:
$http.get('/api/users/' + $cookies.id).
success(function(data) {
$rootScope.userInfo = data.user[0];
console.log("User info is:");
console.log($rootScope.userInfo);
$scope.status = 'ready';
});
Run Code Online (Sandbox Code Playgroud)
然后为了我的userProfile
控制,我做:
function userProfile($scope, $cookies, $http, $routeParams, $rootScope){
if($scope.status == 'ready'){
$scope.user = $rootScope.userInfo;
console.log("Double checking user info, here it is:");
console.log($rootScope.userInfo);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我来自应用程序中不打开的其他页面$rootScope.userInfo
,则API有足够的时间查找并且我的userProfile
页面工作正常.但是,如果进行整页刷新,$rootScope.userInfo
则没有时间加载,我会收到错误. …
javascript ×7
angularjs ×4
node.js ×4
mongodb ×3
database ×2
arrays ×1
browser-sync ×1
gulp ×1
image ×1
json ×1
memory-leaks ×1
mongoose ×1
ng-animate ×1
nosql ×1
php ×1
react-native ×1
reactjs ×1