基于ConvertTo-Htmcss风格和指定单元格效果html报表的生成

PowerShell本身具有一个简单但是很实用的命令 ConvertTo-Htm,可以把整个对象转换成HTML格式。事实上,作为基本的功能他已经可以实现一些漂亮的界面了。但是还是太基础了,不能满足大多数用户的需要。

一方面,Html风格能否为美轮美奂css。还有,如何指定具体某一个单元格的效果呢,让用户体验更好呢。比如说,希望把Item5列所为ERR内容的都标示红色。

网上有这类函数,但不巧的是要收费,不提供源代码。我在ConvertTo-Htm基础上,经过改造实现了上述设想。现提供源代码供大家参考。

源代码如下:

Function Set-CellColor
{   <#.SYNOPSISFunction that allows you toset individual cell colors in an HTML table.DESCRIPTIONTo be used inconjunctionwith ConvertTo-HTML this simple function allows youto set particular colors forcells in an HTML table.  You provide thecriteriathe script uses to make thedetermination if a cell should be a particularcolor (property -gt 5,property -like "*Apple*", etc).You can add the function toyour scripts, dot source it to load into your currentPowerShell session or add itto your $Profile so it is always available.To dot source:.".\Set-CellColor.ps1".PARAMETER PropertyProperty, or column that youwill be keying on. .PARAMETER ColorName or 6-digit hex value ofthe color you want the cell to be.PARAMETER InputObjectHTML you want the script toprocess.  This can be entered directlyinto theparameter or piped to thefunction..PARAMETER FilterSpecifies a query todetermine if a cell should have its color changed.  $trueresults will make the colorchange while $false result will return nothing.Syntax<Property Name><Operator> <Value><Property Name>::= thesame as $Property.  This must matchexactly<Operator>::="-eq" | "-le" | "-ge" | "-ne" |"-lt" | "-gt"| "-approx" | "-like" |"-notlike"<JoinOperator> ::="-and" | "-or"<NotOperator> ::="-not"The script first attempts to convert thecell to a number, and if it fails it willcast it as a string.  So 40 will be a number and you can use -lt,-gt, etc.  But 40%would be cast as a string soyou could only use -eq, -ne, -like, etc. .PARAMETER RowInstructs the script tochange the entire row to the specified color instead of the individual cell..INPUTSHTML with table.OUTPUTSHTML.EXAMPLEget-process | convertto-html| set-cellcolor -Propety cpu -Color red -Filter "cpu -gt 1000" |out-file c:\test\get-process.htmlAssuming Set-CellColor hasbeen dot sourced, run Get-Process and convert to HTML. Then change the CPU cell tored only if the CPU field is greater than 1000..EXAMPLEget-process | convertto-html| set-cellcolor cpu red -filter "cpu -gt 1000 -and cpu -lt 2000" |out-file c:\test\get-process.htmlSame as Example 1, but nowwe will only turn a cell red if CPU is greater than 100but less than 2000..EXAMPLE$HTML = $Data | sort server| ConvertTo-html -head $header | Set-CellColor cookedvalue red -Filter"cookedvalue -gt 1"PS C:\> $HTML = $HTML |Set-CellColor Server green -Filter "server -eq 'dc2'"PS C:\> $HTML |Set-CellColor Path Yellow -Filter "Path -like""*memory*""" | Out-File c:\Test\colortest.htmlTakes a collection ofobjects in $Data, sorts on the property Server and converts to HTML.  From therewe set the"CookedValue" property to red if it's greater then 1.  We then send the HTML through Set-CellColoragain, this time setting theServer cell to green if it's "dc2". One more time through Set-CellColorturns the Path cell toYellow if it contains the word "memory" in it..EXAMPLE$HTML = $Data | sort server| ConvertTo-html -head $header | Set-CellColor cookedvalue red -Filter"cookedvalue -gt 1" -RowNow, if the cookedvalueproperty is greater than 1 the function will highlight the entire row red..NOTESAuthor:             Martin PughTwitter:            @thesurlyadm1nSpiceworks:         Martin9700Blog:               www.thesurlyadmin.comChangelog:1.5             Added ability to set row colorwith -Row switch instead of the individual cell1.03            Added error message in case the$Property field cannot be found in the table header1.02            Added some additional text tohelp.  Added some error trapping around$Filtercreation.1.01            Added verbose output1.0             Initial Release.LINKhttp://community.spiceworks.com/scripts/show/2450-change-cell-color-in-html-table-with-powershell-set-cellcolor#>[CmdletBinding()]Param ([Parameter(Mandatory,Position=0)][string]$Property,[Parameter(Mandatory,Position=1)][string]$Color,[Parameter(Mandatory,ValueFromPipeline)][Object[]]$InputObject,[Parameter(Mandatory)][string]$Filter,[switch]$Row)Begin {Write-Verbose"$(Get-Date): Function Set-CellColor begins"If ($Filter){   If($Filter.ToUpper().IndexOf($Property.ToUpper()) -ge 0){   $Filter =$Filter.ToUpper().Replace($Property.ToUpper(),"`$Value")Try {[scriptblock]$Filter = [scriptblock]::Create($Filter)}Catch {Write-Warning"$(Get-Date): ""$Filter"" caused an error, stoppingscript!"Write-Warning$Error[0]Exit}}Else{   Write-Warning "Could not locate$Property in the Filter, which is required. Filter: $Filter"Exit}}}Process {ForEach ($Line in$InputObject){   If($Line.IndexOf("<tr><th") -ge 0){   Write-Verbose "$(Get-Date): Processingheaders..."$Search = $Line |Select-String -Pattern '<th ?[a-z\-:;"=]*>(.*?)<\/th>'-AllMatches$Index = 0ForEach ($Match in$Search.Matches){   If ($Match.Groups[1].Value -eq $Property){   Break}$Index ++}If ($Index -eq$Search.Matches.Count){   Write-Warning "$(Get-Date): Unable tolocate property: $Property in table header"Exit}Write-Verbose"$(Get-Date): $Property column found at index: $Index"}If ($Line -match"<tr(style=""background-color:.+?"")?><td"){   $Search = $Line | Select-String -Pattern'<td ?[a-z\-:;"=]*>(.*?)<\/td>' -AllMatches$Value =$Search.Matches[$Index].Groups[1].Value -as [double]If (-not $Value){   $Value =$Search.Matches[$Index].Groups[1].Value}If (Invoke-Command$Filter){   If ($Row){   Write-Verbose "$(Get-Date): Criteriamet!  Changing row to $Color..."If ($Line-match "<trstyle=""background-color:(.+?)"">"){   $Line = $Line -replace "<trstyle=""background-color:$($Matches[1])","<trstyle=""background-color:$Color"}Else{   $Line =$Line.Replace("<tr>","<tr style=""background-color:$Color"">")}}Else{   Write-Verbose "$(Get-Date): Criteriamet!  Changing cell to $Color..."$Line =$Line.Replace($Search.Matches[$Index].Value,"<tdstyle=""background-color:$Color"">$Value</td>")}}}Write-Output $Line}}End {Write-Verbose"$(Get-Date): Function Set-CellColor completed"}
}function filestring-search($inputFile,$matchstring,$matchcount){$tmpcontent = Get-Content$inputFilefor($i=0;$i -le$tmpcontent.length;i++){if($tmpcontent[$i] -like'*Err*'){$matchcount++wite-host matchcount:$matchcount  -background red}}return
}Function ConvertTo-AdvHTML
{   <#.SYNOPSISAdvanced replacement ofConvertTo-HTML cmdlet.DESCRIPTIONThis function allows forvastly greater control over cells and rowsin a HTML table.  It takes ConvertTo-HTML to a whole newlevel!  Youcan now specify what color acell or row is (either dirctly or throughthe use of CSS).  You can add links, pictures and pictures ASlinks.You can also specify a cellto be a bar graph where you control thecolors of the graph and textthat can be included in the graph.All color functions arethrough the use of imbedded text tags inside theproperties of the object youpass to this function.  It is importantto notethat this function does notdo any processing for you, you must make sure allcontrol tags are alreadypresent in the object before passing it to thefunction.Here are the different tagsavailable:Syntax                          Comment===================================================================================[cell:<color>]<optional text>   Designate the color of the cell.  Must beat the beginning of the string.Example:[cell:red]System Down[row:<color>]                   Designate the color of therow.  This controlcan be anywhere, in any property of the object.Example:[row:orchid][cellclass:<class>]<optional text> Designate the color, and other properties, of thecell based on a class in your CSS. You musthave the class in your CSS (use the -CSS parameter).Must be at the beginning of the string.Example:[cellclass:highlight]10mb[rowclass:<class>]             Designate the color, and other properties, of therow based on a class in your CSS. You musthave the class in your CSS (use the -CSS parameter).This control can be anywhere, in any property of the object.Example:[rowclass:greyishbold][p_w_picpath:<height;width;url>]<alternate text>Include an p_w_picpath in your cell. Put size of picturein pixels and url seperated by semi-colons.  Formatmust beheight;width;url.  You can also includeothertext in the cell, but the [p_w_picpath] tag must be at theend of the tag (so the alternate text is last).Example:[p_w_picpath:100;200;http://www.sampleurl.com/samplep_w_picpath.jpg]Alt Text ForImage[link:<url>]<linktext>         Include a link in yourcell.  Other text is allowed inthe string, but the [link] tag must be at the end of thestring.Example:blah blah blah [link:www.thesurlyadmin.com]Cool PowerShell Link[linkpic:<height;width;url to pic>]<url for link>This tag uses a picture which you can click on and go to thespecified link.  You must specifythe size of the picture andurl where it is located, this information is seperated by semi-colons.  Other text is allowed inthe string, but the [link] tagmust be at the end of the string.Example:[linkpic:100;200;http://www.sampleurl.com/samplep_w_picpath.jpg]www.thesurlyadmin.com[bar:<percent;barcolor;remainder color>]<optional text>Bar graph makes a simple colored bar graph within the cell.  Thelength of the bar is controlled using <percent>.  You candesignate the color of the bar, and the color of the remaindersection.  Due to the mysteries ofHTML, you must designate awidth for the column with the [bar] tag using the HeadWidth parameter.So if you had a percentage of 95, say 95% used disk youwould want to highlight the remainder for your report:Example:[bar:95;darkgreen;red]5% freeWhat if you were at 30% of a sales goal with only 2 weeks left inthe quarter, you would want to highlight that you have a problem.Example:[bar:30;darkred;red]30% of goal.PARAMETER InputObjectThe object you wantconverted to an HTML table.PARAMETER HeadWidthYou can specify the width ofa cell.  Cell widths are in pixelsand are passed to theparameter in array format.  Each elementin the array corresponds tothe column in your table, any elementthat is set to 0 willdesignate the column with be dynamic.  Ifyou hadfour elements in yourInputObject and wanted to make the 4th a fixedwidth--this is required forusing the [bar] tag--of 600 pixels:-HeadWidth 0,0,0,600.PARAMETER CSSDesignate custom CSS foryour HTML.PARAMETER TitleSpecifies a title for theHTML file, that is, the text that appears between the <TITLE> tags..PARAMETER PreContentSpecifies text to add beforethe opening <TABLE> tag. By default, there is no text in that position..PARAMETER PostContentSpecifies text to add afterthe closing </TABLE> tag. By default, there is no text in that position..PARAMETER BodySpecifies the text to addafter the opening <BODY> tag. By default, there is no text in thatposition..PARAMETER FragmentGenerates only an HTMLtable. The HTML, HEAD, TITLE, and BODY tags are omitted..INPUTSSystem.Management.Automation.PSObjectYou can pipe any .NET objectto ConvertTo-AdvHtml..OUTPUTSSystem.StringConvertTo-AdvHtml returnsseries of strings that comprise valid HTML..EXAMPLE$Data = @"
Server,Description,Status,Disk
[row:orchid]Server1,Hello1,[cellclass:up]Up,"[bar:45;Purple;Orchid]55%Free"
Server2,Hello2,[cell:green]Up,"[bar:65;DarkGreen;Green]65% Used"
Server3,Goodbye3,[cell:red]Down,"[bar:95;DarkGreen;DarkRed]5%Free"
server4,This is quite a cooltest,[cell:green]Up,"[p_w_picpath:150;650;http://pughspace.files.wordpress.com/2014/01/test-connection.png]TestImages"
server5,SurlyAdmin,[cell:red]Down,"[link:http://thesurlyadmin.com]TheSurly Admin"
server6,MoreSurlyAdmin,[cell:purple]Updating,"[linkpic:150;650;http://pughspace.files.wordpress.com/2014/01/test-connection.png]http://thesurlyadmin.com"
"@$Data = $Data |ConvertFrom-Csv$HTML = $Data |ConvertTo-AdvHTML -HeadWidth 0,0,0,600 -PreContent"<p><h1>This might be the best reportEVER</h1></p><br>" -PostContent "<br>Done!$(Get-Date)" -Title "Cool Test!"This is some sample codewhere I try to put every possibile tag and use into a single setof data.  $Data is the PSObject 4 columns.  Default CSS is used, so the [cellclass:up]tagwill not work but I left itthere so you can see how to use it..NOTESAuthor:             Martin PughTwitter:            @thesurlyadm1nSpiceworks:         Martin9700Blog:               www.thesurlyadmin.comChangelog:1.0             Initial Release.LINKhttp://thesurlyadmin.com/convertto-advhtml-help/.LINKhttp://community.spiceworks.com/scripts/show/2448-create-advanced-html-tables-in-powershell-convertto-advhtml#>#requires -Version 2.0[CmdletBinding()]Param ([Parameter(Mandatory=$true,ValueFromPipeline=$true)][Object[]]$InputObject,[string[]]$HeadWidth,[string]$CSS = @"
<style>
TABLE {border-width: 1px;border-style: solid;border-color:black;border-collapse: collapse;}
TH {border-width: 1px;padding: 3px;border-style: solid;border-color:black;background-color: #6495ED;font-size:120%;}
TD {border-width: 1px;padding: 3px;border-style: solid;border-color:black;}
</style>
"@,[string]$Title,[string]$PreContent,[string]$PostContent,[string]$Body,[switch]$Fragment)Begin {If ($Title){  $CSS += "`n<title>$Title</title>`n"}$Params = @{Head = $CSS}If ($PreContent){  $Params.Add("PreContent",$PreContent)}If ($PostContent){  $Params.Add("PostContent",$PostContent)}If ($Body){   $Params.Add("Body",$Body)}If ($Fragment){   $Params.Add("Fragment",$true)}$Data = @()}Process {ForEach ($Line in $InputObject){   $Data += $Line}}End {$Html = $Data |ConvertTo-Html @Params |Set-CellColor item5 red -Filter "item5 -eq'ERR'"$NewHTML = @()ForEach ($Line in $Html){   If ($Line -like "*<th>*"){   If ($Headwidth){   $Index = 0$Reg = $Line |Select-String -AllMatches -Pattern "<th>(.*?)<\/th>"ForEach ($th in$Reg.Matches){   If ($Index -le ($HeadWidth.Count - 1)){   If ($HeadWidth[$Index] -and$HeadWidth[$Index] -gt 0){   $Line = $Line.Replace($th.Value,"<thstyle=""width:$($HeadWidth[$Index])px"">$($th.Groups[1])</th>")}}$Index ++}}}Do {Switch -regex($Line){   "<td>\[cell:(.*?)\].*?<\/td>"{   $Line =$Line.Replace("<td>[cell:$($Matches[1])]","<tdstyle=""background-color:$($Matches[1])"">")Break}"\[cellclass:(.*?)\]"{  $Line =$Line.Replace("<td>[cellclass:$($Matches[1])]","<tdclass=""$($Matches[1])"">")Break}"\[row:(.*?)\]"{   $Line =$Line.Replace("<tr>","<tr style=""background-color:$($Matches[1])"">")$Line =$Line.Replace("[row:$($Matches[1])]","")Break}"\[rowclass:(.*?)\]"{   $Line =$Line.Replace("<tr>","<trclass=""$($Matches[1])"">")$Line =$Line.Replace("[rowclass:$($Matches[1])]","")Break}"<td>\[bar:(.*?)\](.*?)<\/td>"{   $Bar = $Matches[1].Split(";")$Width = 100- [int]$Bar[0]If (-not$Matches[2]){   $Text = "&nbsp;"}Else{   $Text = $Matches[2]}$Line =$Line.Replace($Matches[0],"<td><divstyle=""background-color:$($Bar[1]);float:left;width:$($Bar[0])%"">$Text</div><divstyle=""background-color:$($Bar[2]);float:left;width:$width%"">&nbsp;</div></td>")Break}"\[p_w_picpath:(.*?)\](.*?)<\/td>"{   $Image = $Matches[1].Split(";")$Line =$Line.Replace($Matches[0],"<imgsrc=""$($Image[2])""alt=""$($Matches[2])""height=""$($Image[0])""width=""$($Image[1])""></td>")}"\[link:(.*?)\](.*?)<\/td>"{   $Line =$Line.Replace($Matches[0],"<a href=""$($Matches[1])"">$($Matches[2])</a></td>")}"\[linkpic:(.*?)\](.*?)<\/td>"{   $Images = $Matches[1].Split(";")$Line =$Line.Replace($Matches[0],"<ahref=""$($Matches[2])""><imgsrc=""$($Image[2])""height=""$($Image[0])""width=""$($Image[1])""></a></td>")}Default{   Break}}} Until ($Line -notmatch"\[.*?\]")$NewHTML += $Line}Return $NewHTML}
}$today = Get-Date -UFormat "%Y%m%d"
$LogFilePath = "C:\DayCheck\ftpLog_$today.txt"$today = Get-Date -UFormat "%Y%m%d"
$TargetFileTxt= "C:\DayCheck\CheckResultALL.txt"
$TargetFileHtml= "C:\DayCheck\CheckResultALL.html"if( Test-Path $TargetFileTxt ){write-host  "$TargetFileTxt exist remove"remove-item$TargetFileTxt -Force
}else {write-host"create $TargetFileTxt "New-Item -Path$TargetFileTxt -Type file
}remove-item C:\DayCheck\ResultOut.txt -Force
remove-item C:\DayCheck\CheckResult* -ForceNew-Item -Path C:\DayCheck\*_result.txt  -Typefile
New-Item -Path C:\DayCheck\CheckResultSummaryALL.txt -Type file
New-Item -Path C:\DayCheck\ResultOut.txt  -Typefile
New-Item -Path C:\DayCheck\C:\DayCheck\CheckResultALL.txt  -Type file$UserName = "daycheck"
$Password = "daycheck""item1,item2,item3,item4,item5,item6"|  Out-File -Encoding utf8  C:\DayCheck\CheckResultSummaryALL.csvImport-Csv 'C:\DayCheck\MachineList.csv' |ForEach-Object{$OS = $_.OS$APP = $_.APP$IP = $_.IP$NAME = $_.NAME$RemoteFilename = "ftp://xx.xx.20.240/"+ $OS + "_"+ $NAME + "_all_"+ "20160722" +"07_" + "result.txt"$RemoteFilename     $filename = "C:\DayCheck\" + $OS +"_"+ $NAME + "_all_"+"20160722" + "07_"+ "result.txt"if ( Test-Path -Path $filename ) {write-host "search file $filenamebegining "$tmpcontent=Get-Content$filename | Where-Object { $_ -like '*Err*' }$matchcount=0foreach($element in$tmpcontent){$matchcount++#write-host"element $element "}write-host "search fileErr  : $matchcount " -background redif($matchcount -eq 1 ){"$APP,$NAME$IP,$OS,download,O K,$herffilename" | Out-File  -Encoding utf8  -Append C:\DayCheck\CheckResultSummaryALL.csv}else{"$APP,$NAME$IP,$OS,download,ERR,$herffilename" | Out-File  -Encoding utf8  -Append C:\DayCheck\CheckResultSummaryALL.csv}}     else{"$APP,$NAME($IP),$OS,N/A,N/A,N/A"  |  Out-File -Encoding utf8 -Append C:\DayCheck\CheckResultSummaryALL.csv}}C:\DayCheck\*_result.txt>>C:\DayCheck\CheckResultTotalALL.txtimport-csv C:\DayCheck\CheckResultSummaryALL.csv |  ConvertTo-AdvHTML -HeadWidth 0,0,0,0,0,0-PreContent "<p><h1>This might be the best reportEVER</h1></p><br>" -PostContent "<br>Done!$(Get-Date)" -Title "Cool Test!" | Set-Content  "C:\DayCheck\CheckResultSummaryALL.html"invoke-item C:\DayCheck\CheckResultSummaryALL.html

转载于:https://blog.51cto.com/19701522/1965610

POWERSHELL基于ConvertTo-Htm指定单元格效果css风格html报表相关推荐

  1. 基于注解和EasyExcel指定单元格下拉选内容

    基于注解和EasyExcel指定单元格下拉选内容 1.场景描述 要求基于EasyExcel进行导出,有的单元格的内容必须是通过下拉选内容进行编辑,以便于后续修改导入,规避用户随意录入数据. 2.编写测 ...

  2. 基于java + easyExcel实现模板填充生成动态模板并设置指定单元格为下拉框样式

    需求描述:java后端开发过程中,为了满足动态生成excel模板并设置指定单元格为下拉框,且下拉框的数据项来源为动态查询的需求,在基于easyExcel的情况下,使用模板填充的方式,完成该需求. 1. ...

  3. C#/VB.NET 复制Excel中的指定单元格区域

    本文介绍C#及VB.NET程序代码来复制Excel中的指定单元格区域,包括复制单元格文本及单元格样式.复制时,可在工作簿中的同一个sheet工作表内复制,也可在不同工作簿的不同sheet工作表间复制. ...

  4. html如何取单元格内容,JS获取表格内指定单元格html内容的方法

    JS获取表格内指定单元格html内容的方法 本文实例讲述了JS获取表格内指定单元格html内容的方法.分享给大家供大家参考.具体如下: 下面的代码先通过表格对象的rows获得指定的行的所有单元格数组, ...

  5. EasyExcel锁定指定单元格 禁止表格复制

    3.0版本:https://github.com/asdfLiang/easy-excel-test 2.0版本:https://github.com/asdfLiang/easyexcel-low- ...

  6. 如何给el-table表格的指定单元格设置颜色

    一.需求及效果图 最近的项目中,遇到给表格中指定单元格设置字体颜色,使用的是el-table做的,控制单元格字体颜色,每一行的最大值设置成绿色,最小值设置成红色,效果如下: 二.方法及代码 使用的是控 ...

  7. TileList自动滚动指定单元格,可视部分

    TileList自动滚动指定单元格,可视部分 TileList1.scrollToIndex(50)

  8. VBA赋值给指定单元格

    这是一个Range对象基本操作实例,对指定单元格赋值,然后使用弹窗获取值. 代码如下: Sub test1() Worksheets("Sheet1").Range("A ...

  9. excel引用指定单元格数据_Excel数据查找引用函数详解,一看就会用 #办公技巧 #excel #职场

    Lookup函数 简介:在查找区域中搜索查找对象,并映射到结果区域,返回相同位置的值 Lookup函数 =LOOKUP(D2,A2:A6,B2:B6) 结果将找出与产品编号为1003相对应的产品名称 ...

最新文章

  1. RouteHttpMap要添加的引用
  2. 从 0 开始手写一个 Mybatis 框架,三步搞定!
  3. 【效率】推荐一款特别厉害的在线工具,程序员的百宝箱
  4. 将绘图保存到图像文件,而不是使用Matplotlib显示
  5. Netlink 0007 --- 创建实现分析
  6. 复盘:windows ubuntu 双系统引导恢复、分区表恢复
  7. 火狐可以使用广告终结者_使用Jupyter从终结者终止的地方重新启动脚本
  8. php 微信h5支付 mweb,php微信H5支付讲解(MWEB)
  9. 微信小程序设置单个页面自定义头部为背景图
  10. 天空之城用计算机弹歌,原神琴谱天空之城怎么弹?天空之城琴谱一览
  11. 关于o1,o2,o3
  12. 【Linux学习笔记】20:Bash基础-历史命令
  13. python怎样分析文献综述_教你如何做文献综述
  14. VC中调用cmd命令的四种方式
  15. Android开发百度地图指南针消失问题
  16. python助教酱酱是谁_papi酱个人资料
  17. Iphone6S 换屏教程
  18. 华为鸿蒙分布,华为鸿蒙开源!
  19. 《重学设计模式》PDF 出炉了 - 小傅哥,肝了50天写出18万字271页的实战编程资料...
  20. 用 WPF 写的颜色拾取器

热门文章

  1. linux网络操作系统应用技术规程,GB/T 32395-2015
  2. 把大核卷积拆成三步,清华胡事民团队新视觉Backbone刷榜了,集CNN与ViT优点于一身...
  3. 自动驾驶系统为何要打上「思想钢印」?北京顺义闹市区里藏着毫末智行的谜底...
  4. 啥都不如烂笔头,约翰霍普金斯大学新研究:学外语还得用手写
  5. 把「光」存储1小时,中科大新研究破世界纪录,保真度高达96.4% | Nature子刊
  6. DeeCamp2021启动,李开复张亚勤吴恩达等大咖喊你报名啦
  7. 中国联想和浪潮最能算,雄霸全球超算TOP 500数量榜单
  8. 性能领先,即训即用,快速部署,飞桨首次揭秘服务器端推理库
  9. IBM:破解密码并不是量子计算机主要用途,不必为此担心
  10. 碎片化时间里的高质量阅读,这几个公众号请收好~