lightnode优惠码(it 优惠码)

0 183
本文目录: 1、如何使用lightHouse进行前端性能分析 2、nodejs创建一个http服务器来接收上传的文件 3、ios开发 scenekit导...

本文目录:

如何使用lightHouse进行前端性能分析

Lighthouse 是一个开源的自动化工具,用于改进网络应用的质量。只要为 Lighthouse 提供一个需要审查的网址,它将针对此页面运行一连串的测试,然后生成一个有关页面的性能报告。

三种安装方式

1. 安装命令:# 注意:Lighthouse需要 Node 10 LTS (10.13) 或更高的版本.

2. 运行Lighthouse:

3. 以百度为例,输入下面的命令即可:

完成后,可以查看HTML报告

这个意思就是某处文字背景色和文字颜色对比度不够,对于视障用户可能不好区分。

搜索引擎在索引网站内容时也需要知道网站适用的语言,从而更好地为用户返回搜索结果

改为:

当设置rel="noopener"时chrome会在独立的进程中打开新页面,同时会阻止window.opener,因此不存在跨窗口访问。

优化后

这是 Lighthouse 目的:它能识别和修复,影响我们网站的性能、可访问性和用户体验的常见问题。

nodejs创建一个http服务器来接收上传的文件

时间有限。自己看

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

var connect = require('connect')

var http = require('http')

var app = connect()

var multipart = require('connect-multiparty');

// parse urlencoded request bodies into req.body

var bodyParser = require('body-parser')

app.use(bodyParser.urlencoded())

app.use(multipart())

// respond to all requests

app.post('/upload', function(req, resp) {

console.log(req.body, req.files);

// don't forget to delete all req.files when done

});

//create node.a href=";tn=44039180_cprfenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3PAuWP1T4rH9-nyRzPADk0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6K1TL0qnfK1TL0z5HD0IgF_5y9YIZ0lQzqlpA-bmyt8mh7GuZR8mvqVQL7dugPYpyq8Q1DvrH0YPWmsrjRdnWR3Pjn4rj6" target="_blank" class="baidu-highlight"js/a http server and listen on port

http.createServer(app).listen(3000)

参考 :

ios开发 scenekit导入模型后怎么让模型动起来

ios8之后苹果推出了一个3D模型渲染框架。SceneKit。但是国内针对这方面的教程并不是很多。前两天搞了一下也是一头雾水,终于把最基础的内容搞明白了之后,写下这篇随笔作为cnblogs的开篇,希望能一直写下去。

SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过。这篇文章只针对.dae模型写。

首先如果是希望加载一个已有的,不需要程序在运行的时候动态添加的dae模型。那么我们可以直接新建一个game类型的工程。在选项中选择SceneKit,在程序中加载自带模型的那句话中将模型名称替换即可。本文主要讲一下如何导出dae模型,并在server端动态下载并显示。

首先我们手中有一个.stl或者其他的模型文件,将模型文件转换成.dae文件我使用Blender。

(1)在Blender中新建场景

(2)在右上侧栏中将自动生成的Cube、Camera等3个物体删掉

(3)导入我们已有的模型文件

(4)调整我们的模型文件的方向、大小

(5)在右上侧栏更改模型文件及子文件的名字为你要导出的dae文件的名字(这一步很重要!)

(6)在左侧栏中Edit Options中点击Smooth

(7)File-export-dae

(8)在接下来的页面中,我们选择导出的位置和文件的名字,并且在左侧选项Texture中选择include material texture(同样重要!)

接下来我们在桌面上新建一个文件夹,暂时起名为model,更改后缀为.scnassets,将我们生成好的模型文件拷贝进去。SceneKit对于动态添加文件夹写了两个脚本。不太清楚作用原理是什么,以后再研究吧。暂时知道怎么用就行。将copySceneKitAssets、scntool文件拷贝到model.scnassets所在的目录下,进入终端并cd到该目录下,运行

1 ./copySceneKitAssets model.scnassets -o model-o.scnassets

如果终端没有报错,并且生成了model-o.scnassets,则代表运行成功。

接下来我们把生成的model-o.scnassets文件打包成zip文件,目的是为了能让iPhone客户端下载的时候文件更小。

打包好了之后上传至服务器即可。

两个可执行文件下载链接

接下来是重头戏,如何在程序中下载,解压,并显示呢。

下载解压我使用了两个开源框架 AFNetworking 和 SSZipArchive ,朋友们可以自行查阅使用方法。

一步一步来,先是下载,解压

1 - (void)downloadZip {

2

3 NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];

4 AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

5 //这里我们用本地链接替代一下,可以使用任意url链接

6 NSURL *URL = [NSURL URLWithString:@""];

7 NSURLRequest *request = [NSURLRequest requestWithURL:URL];

8

9 NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {

10 NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];

11 return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];

12 } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

13 NSLog(@"File downloaded to: %@", filePath);

14

15 //对文件解压

16 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

17 NSString *documentsDirectory = [paths objectAtIndex:0];

18 NSString *inputPath = [documentsDirectory stringByAppendingPathComponent:@"/product-1-optimized.scnassets.zip"];

19

20 NSError *zipError = nil;

21

22 [SSZipArchive unzipFileAtPath:inputPath toDestination:documentsDirectory overwrite:YES password:nil error:zipError];

23

24 if( zipError ){

25 NSLog(@"[GameVC] Something went wrong while unzipping: %@", zipError.debugDescription);

26 }else {

27 NSLog(@"[GameVC] Archive unzipped successfully");

28 [self startScene];

29 }

30

31 }];

32 [downloadTask resume];

33 }

而对于3d模型场景的创建,我们使用SCNSceneSource,代码如下

1 NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];

2//这里的dae文件名字是我们导出时定义的文件名,下面一段代码中加载的SCNNode是我们之前在面板中改过的模型名

3 documentsDirectoryURL = [documentsDirectoryURL URLByAppendingPathComponent:@"model.scnassets/cube.dae"];

4

5 SCNSceneSource *sceneSource = [SCNSceneSource sceneSourceWithURL:documentsDirectoryURL options:nil];

然后我们加载.dae文件中的模型,作为一个SCNNode,名字为我们在一开始改过的模型名

1 SCNNode *theCube = [sceneSource entryWithIdentifier:@"Cube" withClass:[SCNNode class]];

最后我们设置一下灯光等效果,其实是新建game文件中设置好了的,我们要做的是将SCNNode *theCube加载到Scene中

// Create a new scene

SCNScene *scene = [SCNScene scene];

// create and add a camera to the scene

SCNNode *cameraNode = [SCNNode node];

cameraNode.camera = [SCNCamera camera];

[scene.rootNode addChildNode:cameraNode];

// place the camera

cameraNode.position = SCNVector3Make(0, 0, 15);

// create and add a light to the scene

SCNNode *lightNode = [SCNNode node];

lightNode.light = [SCNLight light];

lightNode.light.type = SCNLightTypeOmni;

lightNode.position = SCNVector3Make(0, 10, 10);

[scene.rootNode addChildNode:lightNode];

// create and add an ambient light to the scene

SCNNode *ambientLightNode = [SCNNode node];

ambientLightNode.light = [SCNLight light];

ambientLightNode.light.type = SCNLightTypeAmbient;

ambientLightNode.light.color = [UIColor darkGrayColor];

[scene.rootNode addChildNode:ambientLightNode];

// Add our cube to the scene

[scene.rootNode addChildNode:theCube];

// retrieve the SCNView

SCNView *scnView = (SCNView *)self.view;

// set the scene to the view

scnView.scene = scene;

// allows the user to manipulate the camera

scnView.allowsCameraControl = YES;

// show statistics such as fps and timing information

scnView.showsStatistics = YES;

// configure the view

scnView.backgroundColor = [UIColor blackColor];

这样我们就可以动态下载一个dae文件并显示了。

nodejs和vscode是什么关系?

Visual Studio Code is a lightweight but powerful source code editor

which runs on your desktop and is available for Windows, macOS and

Linux.Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

由这两段话,很清楚地表明了各自的身份,VSCode是editor, NodeJS是runtime;

" 国光" 一词翻译成英语?

"国光"英语是(King Light)

"国光"一般是台湾那的说法,如台湾综艺〈国光帮帮忙〉

如:国光日报(King Light Daily)

《国光日报》于1988年5月1日创刊。该报属于综合性报纸,要闻与地方新闻并重。该报创办背景主要是台的大陆籍国民党老兵和其它大陆籍国民党人士。

详细的可以看这里的介绍:)~

access中怎样实现树状结构

详见:

TreeView 控件

TreeView 控件显示 Node 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。

语法

Treeview

说明

创建了 TreeView 控件之后,可以通过设置属性与调用方法对各 Node 对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。Collapse、Expand 和 NodeClick 三个事件也提供编程功能。

Node 对象使用 Root、Parent、Child、FirstSibling、Next、Previous 和 LastSibling 属性。在代码中可通过检索对 Node 对象的引用,从而在树上定位。也可以使用键盘定位。UP ARROW 键和 DOWN ARROW 键向下循环穿过所有展开的 Node 对象。从左到右、从上到下地选择 Node 对象。若在树的底部,选择便跳回树的顶部,必要时滚动窗口。RIGHT ARROW 键和 LEFT ARROW 键也穿过所有展开的 Node 对象,但是如果选择了未展开的 Node之后再按 RIGHT ARROW 键,该 Node 便展开;第二次按该键,选择将移向下一个 Node。相反,若扩展的 Node 有焦点,这时再按 LEFT ARROW 键,该 Node 便折回。如果按下 ANSI 字符集 中的键,焦点将跳转至以那个字母开头的最近的 Node。后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。

控件的外观有八种可用的替换样式,它们是文本、位图、直线和 +/- 号的组合,Node 对象可以任一种组合出现。

TreeView 控件使用由 ImageList 属性指定的 ImageList 控件,来存储显示于 Node 对象的位图和图标。任何时刻,TreeView 控件只能使用一个 ImageList。这意味着,当 TreeView 控件的 Style 属性被设置成显示图像的样式时,TreeView 控件中每一项的旁边都有一个同样大小的图像。

发行注意 TreeView 控件是 MSCOMCTL.OCX 文件中的一组 ActiveX 控件的一部分。为了在应用程序中使用 TreeView 控件,必须将 MSCOMCTL.OCX 文件

2. Sorted 属性(TreeView 控件)

返回或设置一值,此值确定 Node 对象的子节点是否按字母顺序排列。

返回或设置一值,此值确定 TreeView 控件的根层节点是否按字母顺序排列。

语法

object.Sorted [ = boolean]

Sorted 属性语法包含下面部分:

部分 描述

object 对象表达式,其值是“应用于”列表中的一个对象。

boolean 布尔表达式,表示 Node 对象是否已被排序如“设置值”中描述。

设置值

boolean 的设置值是:

设置值 描述

True Node 对象根据它们的 Text 属性按字母顺序排列。其 Text 属性由数字开始的 Node 对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。

False Node 对象不排序。

说明

Sorted 属性有两种用法,第一,在 TreeView 控件的根(顶)层排列 Node 对象,第二,对任何单个 Node 对象的立即子节点排序。例如,下面的代码是对 TreeView 控件的根节点排序:

Private Sub Command1_Click()

3. EnsureVisible 方法

这个方法确保指定的 ListItem 或 Node 对象是可视的。如果需要,这个方法可展开 Node 对象并滚动 TreeView 控件。该方法仅可滚动 ListView 控件。

语法

object.EnsureVisible

object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。

返回值

值 描述

True 如果 ListView 或 TreeView 控件必须滚动与/或扩展以显露该对象,该方法返回 True。

False 如果不需滚动与/或展开,该方法返回 False。

说明

一个特定的 Node 或 ListItem 对象可能深藏于 TreeView 或 ListView 控件中,当要使其为可视时,使用 EnsureVisible 方法。

如果 Scroll 属性设置为 False,则该方法将不会在 TreeView 控件上起作用。

 

4. Node 对象和 Nodes 集合

Node 对象是 TreeView 控件中的一项,它包含图像和文本。

Nodes 集合包含一个或多个 Node 对象。

语法

treeview.Nodes

treeview.Nodes.Item(index)

以上语法行,按照标准集合语法分别引用集合与集合中的单独元素。

treeview 对象表达式,其值是 TreeView 控件。

index 整数或字符串,它唯一地标识 Nodes 集合的一个成员。整数是 Index 属性的值,字符串是 Key 属性的值。

说明

节点可包含文本和图片。然而,要使用图片,必须用 ImageList 属性关联一个 ImageList 控件。

图片可以根据节点的状态而改变;例如,如果将 SelectedImage 属性设置为来自关联的 ImageList 的图像,则被选中的节点可拥有与未选中的节点不同的图片。

5. Add 方法(Nodes 集合)

在 Treeview 控件的 Nodes 集合中添加一个 Node 对象。

语法

object.Add(relative, relationship, key, text, image, selectedimage)

Add 方法的语法包含下面部分:

描述

object 必需的。对象表达式,其值是“应用于”列表中的一个对象

relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。

relationship 可选的。指定的 Node 对象的相对位置,如设置值中所述。

key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。

text 必需的。在 Node 中出现的字符串。

image 可选的。在关联的 ImageList 控件中的图像的索引。

selectedimage 可选的。在关联的 ImageList 控件中的图像的索引,在 Node 被选中时显示。

设置值

relationship 的设置值是:

6. Root 属性(Node 对象)

返回对所选 Node 的根 Node 对象的引用。

语法

object.Root

object 所在处代表是对象表达式,其值是“应用于”列表中的对象

说明

Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 各属性全将返回对另一个 Node 对象的引用。因此,可以同时引用并执行对 Node 的操作,如下所示:

With TreeView1.Nodes(x).Root

.Text = "New text"

.Key = "New key"

.SelectedImage = 3

End With

也可以将对象变量设置为被引用的 Node,如下所示:

Dim NodRoot As Node

'得到对节点 x 的根的引用。

Set NodRoot = TreeView1.Nodes(x).Root

'用此引用执行对根节点的操作。

With nodRoot

.Text = "New text" '改变文本。

.Key = "New key" '改变键。

.SelectedImage = 3 '改变 SelectedIma

 

7. Parent 属性(Node 对象)

这个属性返回或设置 Node 对象的父对象。仅在运行时可用。

语法

object.Parent[ = node]

Parent 属性的语法包含下面部分:

部分 描述

object 对象表达式,其值是“应用于”列表中的一个对象。

node 变成该对象的父对象的 Node 对象。 

说明

在运行时,设置这个属性为一个对象的操作不能搞成一个循环,否则便发生错误。例如,不能将任何 Node 设置成为其后代的子 Node。

Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:

With TreeView1.Nodes(x).Parent

.Text = "New text"

.Key = "New key"

.SelectedImage = 3

End With

也可以将对象变量设置为引用的 Node,如下所示:

Dim NodParent As Node

Private Sub TreeView1_DragDrop(Source As Control, x As Single, y As Single)

'如果用户没移动鼠标,或在无效区释放它。

If TreeView1.DropHighlight Is Nothing Then

indrag = False

Exit Sub

Else

'设置被拖动的节点的 parent 属性为目标节点。

On Error GoTo checkerror '阻止循环错误。

Set nodX.Parent = TreeView1.DropHighlight

Cls

Print TreeView1.DropHighlight.Text _

" is parent of " nodX.Text

'释放 DropHighlight 引用。

Set TreeView1.DropHighlight = Nothing

indrag = False

Exit Sub '如未发生错误则退出。

End If

checkerror:

'定义表示 Visual Basic 错误代码的常数。

Const CircularError = 35614

If Err.Number = CircularError Then

Dim msg As String

msg = "A node can't be made a child of its own children."

'显示带有一个感叹号图标

'和“确定”与“取消”按钮的消息框。

If MsgBox(msg, vbExclamation vbOKCancel) = vbOK Then

'释放

9. Children 属性

这个属性返回包含在 Node 对象中的各子 Node 对象的个数。

语法

object.Children

object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。

说明

在执行一个影响子节点的操作之前,可用 Children 属性检查 Node 对象是否有子节点。例如,以下代码在检索第一个 Node 的 Text 属性之前,使用 Child 属性检查子节点的存在。

Private Sub TreeView1_NodeClick(ByVal Node As Node)

If Node.Children 0 Then

MsgBox Node.Child.Text

End If

End Sub

Children 属性示例

这个例子在 TreeView 控件中放置几个 Node 对象。这组代码检查 Node 是否有子节点。如果有,则显示子节点的文本。为试用此例,在窗体上安放一个 TreeView 控件,并在窗体的声明部分中粘贴下面的代码。运行此例,单击 Node 对象以选择它,然后单击该窗体来察看 Node 对象的子节点的文本。

Option Explicit

Private Sub Form_Click()

Dim strC As String

Dim N As Integer

If TreeView1.SelectedItem.Children 0 Then '有子节点。

10. FirstSibling 属性(Node 对象)

这个属性返回对 TreeView 控件中的 Node 对象的第一个相邻对象的引用。

语法

object.FirstSibling

object 所在处代表一个对象表达式,其值是“应用于”列表中的一个对象

说明

第一个相邻节点是出现在一个节点层中第一个位置上的 Node。实际上到底是哪一个 Node 出现在第一个位置取决于在那一层上的 Node 对象是否被排序,这由 Sorted 属性确定。

Child、FirstSibling、LastSibling、Previous、Parent、Next 和 Root 属性都返回对另一个 Node 对象的引用。所以可以同时引用并执行对一个 Node 的操作,如下所示:

With TreeView1.Nodes(x).FirstSibling

.Text = "New text"

.Key = "New key"

.SelectedImage = 3

End With

也可以将对象变量设置为引用的 Node,如下所示:

Dim NodFirstSib As Node

'获取 Node x 的第一个相邻节点的引用。

Set NodFirstSib = TreeView1.Nodes(x).FirstSibling

'使用这个引用执行对第一个相邻 Node 的操

常数 值 描述 

【lightnode优惠码】内容来源于网络,若引用不当、侵权,请联系我们修正或者删除!

最后修改时间:
文章相关标签:
美国vps
上一篇 2023年02月20日 13:27
下一篇 2023年02月20日 13:33

评论已关闭