Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 中文字幕一区日韩在线视频,免费日本在线视频,欧美成人性视频播放

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          一鍵發布圖文視頻音樂Miami朋友圈程序全開源版源碼

          一鍵發布圖文視頻音樂Miami朋友圈程序全開源版源碼

          iami朋友圈程序全開源版源碼,前臺一鍵發布圖文,視頻,音樂。發布內容支持定位或自定義位置信息。支持將發布內容設為廣告模式消息站內通知或郵件通知。支持其他用戶注冊,支持其他用戶發布文章,管理自己的文章。擁有豐富的后臺管理功能,一鍵操作。

          安裝環境:Nginx ≥1.22/PHP=7.4/MySQL ≥5.6安裝前首先配置運行環境,運行需要在PHP中安裝exif擴展。

          總結:這邊測試了一下沒有發現問題,此源碼為開源版,安裝后即可使用。

          版權申請:本文A5資源網原創,經原創作者允許轉載許可聲明。原文地址http://a5.org.cn/a5_ziyuan/38963.html

          者:Matt Trilby-Bassett;Min Huang

          排版:Rani Sun



          開發人員在閱讀 API 參考文檔時,有時會需要或希望查看相應的源代碼。直到不久之前,.NET API 參考文檔還沒有提供指向源代碼的鏈接,這引起社區添加這一功能的呼聲。針對這一反饋,我們很高興地宣布,現在大多數流行的 .NET API 上都提供了連接文檔和源代碼的鏈接。


          在這篇博文中,我們將分享將鏈接添加到文檔以及利用現有 API 來實現這一改進的詳細信息。



          鏈接的實例

          在介紹實施細節之前,我們想展示一下文檔的改動。對于符合我們標準(啟用了源代碼鏈接、具有可訪問的 PDB 并托管在公共存儲庫中)的 .NET API,其鏈接包含在 Definition 元數據中。以下來自 String 類的截圖演示了這個新鏈接的位置:


          如果存在重載,鏈接將包含在重載標題的下面。下面的 String.IndexOf 方法截圖演示了這種情況:

          參考文檔

          https://learn.microsoft.com/en-us/dotnet/api/

          String.IndexOf 方法

          https://learn.microsoft.com/en-us/dotnet/api/system.string.indexof?view=net-8.0#system-string-indexof(system-string-system-int32-system-int32)



          我們如何建立鏈接?

          .NET 參考文檔管道對一組 DLL 文件和 NuGet 包進行操作。這些文件由各種工具處理,以將其內容轉換為顯示在 Microsoft Learn 上的 HTML 頁面。正確構建源代碼的鏈接需要了解源代碼、二進制文件和 GitHub 之間的關系,以及它們如何與一些現有的 .NET API 配合在一起。在與 .NET 和 Roslyn 團隊的開發人員討論我們公開源代碼鏈接的目標時,很明顯我們的要求與 Visual Studio 的Go to definition功能緊密相關。


          憑借這種理解以及 @davidwengier 在 Roslyn 中針對外部源的Go to definition改進中提供的有關Go to definition的大量細節,我們能夠采用類似的方法來構建指向文檔源代碼的鏈接。

          Go to definition

          https://github.com/dotnet/roslyn/issues/55834

          @davidwengier

          https://github.com/davidwengier



          源代碼鏈接

          源代碼鏈接是一種技術,它使 .NET 開發人員能夠調試其應用程序引用的程序集的源代碼。盡管源代碼鏈接最初旨在用于源代碼調試,但它完全適用于我們的場景。每個啟用源代碼鏈接的 .NET 項目都會在 PDB(程序數據庫)中生成從相對文件夾路徑到 絕對存儲庫 URL 的映射。這與 @davidwengierRoslyn 中針對外部源的 Go to definition 改進中所述一致。


          若要查看源鏈接條目,可以使用 dotPeek 或 ILSpy 打開 DLL。以下屏幕截圖顯示了使用 dotPeek 訪問 System.Private.CoreLib 的源鏈接條目的示例,方法是導航到 Portable PDB Metadata,然后導航到 CustomDebugInformation 表:

          [!NOTE] 若要了解有關源代碼鏈接的元數據定義,請轉到:PortablePdb-Metadata

          源代碼鏈接

          https://github.com/dotnet/sourcelink

          @davidwengier

          https://github.com/davidwengier

          Roslyn 中針對外部源的 Go to definition 改進

          https://devblogs.microsoft.com/dotnet/go-to-definition-improvements-for-external-source-in-roslyn/#source-link

          ILSpy

          https://github.com/icsharpcode/ILSpy

          PortablePdb-Metadata

          https://github.com/dotnet/runtime/blob/main/docs/design/specs/PortablePdb-Metadata.md#source-link-c-and-vb-compilers



          建立鏈接

          現在我們知道在源代碼鏈接條目中存儲了一個總體映射,下一個問題是如何為這個 DLL 中的每個類型/成員構建唯一的鏈接?


          例如,我們為 String.Clone 方法構建的鏈接是:

          https://github.com/dotnet/runtime/blob/5535e31a712343a63f5d7d796cd874e563e5ac14/src/libraries/System.Private.CoreLib/src/System/String.cs#L388C13-L388C25


          此鏈接可分為 3 個部分:

          1. 第一部分 https://github.com/dotnet/runtime/blob/5535e31a712343a63f5d7d796cd874e563e5ac14 是從源代碼鏈接映射 json 解析出來的,并且與特定的存儲庫提交綁定。

          2. 第二部分 src/libraries/System.Private.CoreLib/src/System/String.cs 可以在 PDB 的文檔表中找到。

          3. 最后一部分 #L388C13-L388C25 是基于 MethodDebugInformation 表的 SequencePoints 列構建的。SequencePoints blob 會將此方法塊中的一系列 IL 指令映射回其原始源代碼行號,如下面的屏幕截圖所示。有關更多詳細信息,請轉到 SequencePoints 元數據定義

          我們使用 System.Reflection.Metadata 庫來遍歷此 DLL 中的所有類型/成員,然后匹配 MethodDebugInformation 表中的記錄以構建最終的鏈接。

          • var mdReader=peReader.GetMetadataReader();foreach(var typeDefHandle in mdReader.TypeDefinitions){ var typeDef=mdReader.GetTypeDefinition(typeDefHandle);
            string typeName=mdReader.GetString(typeDef.Name); string ns=mdReader.GetString(typeDef.Namespace);
            string fullName=String.IsOrEmpty(ns) ? typeName : $"{ns}.{typeName}"; Console.WriteLine(fullName);
            foreach (var document in debugReader.FindSourceDocuments(typeDefHandle)) { Console.WriteLine($" {document.SourceLinkUrl}"); }}

            該實現也可以在 Roslyn DocumentDebugInfoReader.csSymbolSourceDocumentFinder.cs 中找到。

            SequencePoints 元數據定義

            https://github.com/dotnet/runtime/blob/main/docs/design/specs/PortablePdb-Metadata.md#sequence-points-blob

            System.Reflection.Metadata

            https://learn.microsoft.com/en-us/dotnet/api/system.reflection.metadata?view=net-8.0

            DocumentDebugInfoReader.cs

            https://github.com/dotnet/roslyn/blob/bbcac94e166e0cd87d36b41a387278e7d00d1728/src/Features/Core/Portable/PdbSourceDocument/DocumentDebugInfoReader.cs

            SymbolSourceDocumentFinder.cs

            https://github.com/dotnet/roslyn/blob/4262648cadff59cc703b6be8c00b9814a6b13c5a/src/Features/Core/Portable/PdbSourceDocument/SymbolSourceDocumentFinder.cs



            查找 PDB 文件

            因為我們知道鏈接的信息可以在 PDB 中找到,所以下一步就是找到這些 PDB 以供我們使用。


            目前,指定某一個 DLL,我們會在三個地方查找相應的 PDB:

            1. 嵌入式 PDB。如果您的 csproj 中指定了<DebugType>embedded</DebugType>,則 PDB 文件將嵌入到此 DLL 中。

            2. 磁盤上的 PDB。您可以將 PDB 放在 DLL 旁邊。

            3. Microsoft Symbol Server。有一個公共符號服務器,我們可以從中下載 DLL 的 PDB。


            請參閱 Roslyn PdbFileLocatorService.cs 中的實現。

            PdbFileLocatorService.cs

            https://github.com/dotnet/roslyn/blob/b3d9ff7c9dc9e330b24d6087419dffe611a9dd77/src/Features/Core/Portable/PdbSourceDocument/PdbFileLocatorService.cs



            查找正確的 PDB 版本

            我們想進一步討論如何從 Microsoft Symbol Server 下載指定 DLL 的正確版本的 PDB。


            下面是一個PDB 下載 URL的示例 ,其格式在 portable-pdb-signature 中定義。

            http://msdl.microsoft.com/download/symbols/System.Private.CoreLib.pdb/8402667829752b9d0b00ebbc1d5a66d9FFFFFFFF/System.Private.CoreLib.pdb


            從 URL 模式中我們可以觀察到,我們需要提供 PDB 文件名 System.Private.CoreLib.pdb 和 GUID 8402667829752b9d0b00ebbc1d5a66d9FFFFFFFF。那么問題是我們可以在哪里找到這些信息?

            之前我們使用 dotPeek 打開 DLL 來查找源代碼鏈接條目。現在我們可以再次打開它并檢查元數據部分。

            在上面的截圖中,我們可以在 Debug Directory 中找到這個 GUID,并且該條目必須是一個可移植代碼視圖條目。該條目的 Path 屬性代表 PDB 文件的路徑,我們可以從中獲取文件名。

            • foreach (var entry in peReader.ReadDebugDirectory()){ if (entry.Type==DebugDirectoryEntryType.CodeView && entry.IsPortableCodeView) { var codeViewEntry=peReader.ReadCodeViewDebugDirectoryData(entry); var pdbName=Path.GetFileName(codeViewEntry.Path); var codeViewEntryGuid=$"{codeViewEntry.Guid.ToString("N").ToUpper()}FFFFFFFF"; return $"{MsftSymbolServerUrl}/{pdbName}/{codeViewEntryGuid}/{pdbName}"; }}



              查找 DLL 文件

              如前所述,我們的 .NET 參考文檔管道對 DLL 文件或 NuGet 包的集合進行操作。但對于某些程序集,我們需要發揮創造力來生成指向源代碼的鏈接。以下是我們需要開發解決方案的兩種情況:

              1. 參考程序集。例如, Microsoft.NETCore.App.Ref 包中的 DLL。參考程序集沒有將 PDB 上傳到符號服務器,這阻止我們生成源代碼鏈接。我們當前的解決方案是下載Runtime 包并使用其中的程序集下載匹配的 PDB。

              2. 源代碼嵌入在 PDB 中。例如,System.Threading.AccessControl 包在構建時會將源代碼生成到 obj 文件夾中。

              這并不能幫助我們鏈接到源代碼,因此我們不會使用 lib 文件夾中的 DLL,而是會在runtimes文件夾中查找同名的 DLL。

              Microsoft.NETCore.App.Ref

              https://www.nuget.org/packages/Microsoft.NETCore.App.Ref/8.0.0

              Runtime 包

              https://www.nuget.org/packages/Microsoft.NETCore.App.Runtime.linux-x64/8.0.0

              System.Threading.AccessControl

              https://www.nuget.org/packages/System.Threading.AccessControl/8.0.0



              使用文檔管道中的鏈接

              一旦我們找到正確的 DLL/PDB 文件并成功建立源代碼的鏈接,我們就會將此信息以 JSON 文件形式保存在目標文檔 GitHub 存儲庫中。

              為了了解我們將如何使用這些信息,我們需要重新審視 .NET 參考文檔管道。管道為每種唯一類型創建一個 XML 文件,我們的構建系統稍后會將其轉換為顯示在 Microsoft Learn 上的 HTML 頁面。為了將 XML 中的 API 映射到 JSON 文件中找到的相應源代碼鏈接,我們使用唯一標識符 DocId。此值存在于 XML(DocId)和 JSON(DocsId)中。

              例如,System.String 的 DocId 為 T:System.String。此 DocId 值將用于定位 System.Private.CoreLib.json 文件(其對應版本)中的源代碼鏈接。

            "DocsId": "T:System.String","SourceLink": "https://github.com/dotnet/runtime/blob/5535e31a712343a63f5d7d796cd874e563e5ac14/src/libraries/System.Private.CoreLib/src/System/String.cs"

            若要了解如何生成 DocId,請參閱 DocCommentId.csDocumentationCommentId.cs

            DocId

            https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/documentation-comments#d42-id-string-format

            T:System.String

            https://github.com/dotnet/dotnet-api-docs/blob/main/xml/System/String.xml#L4

            System.Private.CoreLib.json

            https://github.com/dotnet/dotnet-api-docs/blob/main/xml/SourceLinkInformation/net-8.0/System.Private.CoreLib.json

            DocCommentId.cs

            https://github.com/jbevain/cecil/blob/56d4409b8a0165830565c6e3f96f41bead2c418b/rocks/Mono.Cecil.Rocks/DocCommentId.cs#L303C2-L303C66

            DocumentationCommentId.cs

            https://github.com/dotnet/roslyn/blob/fd9a371c76d7b3440d0bf61ba2d8fe534d4a99ac/src/Compilers/Core/Portable/DocumentationCommentId.cs#L50



            已知限制

            在當前的實施中,我們意識到一些限制:

            1. 對于 PDB 中沒有記錄文檔信息的類型(例如枚舉或接口),在 CustomDebugInformation 表中引入了新的 GUID TypeDefinitionDocuments 來解決此問題。但是,對于某些 DLL,這些信息有時會被修剪,導致我們無法生成鏈接。

              請參閱此處的錯誤詳細信息 https://github.com/dotnet/runtime/issues/100051

            2. 對于沒有定義主體的類成員(例如 extern 或 abstract),PDB 中不包含行信息(SequencePoints)。因此,我們無法指向某個跨度范圍,而是指向整個文件。我們計劃在未來做出改進以解決此問題。

            TypeDefinitionDocuments

            https://www.w3.org/TR/WCAG22/#keyboard-accessible



            另一個改進想法

            您可能已經注意到,我們與 Go to definition共享了許多核心邏輯。事實上,我們在實現中重用了它們的幾個類。我們提出了一個準備用來的改進此過程的功能,即使用現有代碼修改 Roslyn,以生成供我們使用的類型/成員級源映射。


            如果社區有同樣的需求,請評論為我們投票。謝謝!



            向我們提供您的反饋

            我們很樂意聽取您對使用這些鏈接的反饋,因此請告訴我們您的想法!如果您發現任何與鏈接相關的問題,請隨時使用反饋控件分享或在相關文檔存儲庫上提交 GitHub 問題。



            最后,致謝

            我要感謝我的同事@shiminxu 為這個項目做出的貢獻。還要感謝 .NET 團隊的 @ericstj 和 Roslyn 團隊的 @tmat 提供的技術指導。最后,感謝無數為實現這一改變做出的貢獻的人。

            @shiminxu

            https://github.com/jianying10202713

            @ericstj

            https://github.com/ericstj

            @tmat

            https://github.com/tmat

          日干貨好文分享丨請點擊+關注 對R語言感興趣的加微信fridaybifly,邀請你進入R語言學習群。

          今天我們就一起來利用簡單的R函數做一些爬蟲工作,當做是為一些爬蟲愛好者提供一些思路。假如想爬取天善社區現在的在線課程數據,查看你感興趣課程的相關信息(授課老師、課時數、價格、銷量)等等。接下來,讓我們一步步完成以上的需求。

          先看看天善社區的視頻首頁地址:

          https://edu.hellobi.com/course/explore?page=1

          首頁截圖如下:

          在網頁上點擊鼠標右鍵,選擇查看網頁源代碼,查看當前頁面的HTML源碼:

          假如各位看官不懂得爬蟲技術,只要懂得運用readLines函數和簡單的正則表達式就能完成簡單的爬蟲工作。

          首先我們先利用readLines函數將網頁的html信息爬取到R中。

          查看讀取后的結果:

          可見,已經把HTML的源碼爬到R中,接下來,我們一步步提取需要的數據。

          先提取課程名稱

          現在提取課程數信息

          學習人數、授課老師、課程售價的信息根據以上方式提取出來,代碼如下:

          可見,第一頁的課程信息全部被爬下來了(備注,第十個課程無授課老師,直接跳過)。

          我們發現,天善一共有7頁視頻,現在利用爬蟲全部爬取下來,總結網頁地址:

          https://edu.hellobi.com/course/explore?page=1

          https://edu.hellobi.com/course/explore?page=2

          ……

          爬取全部網頁數據的完整代碼如下:

          其實,R做爬蟲也有很多功能強大的包,例如quantmod包、XML包、RCrul包、rvest包。善用這些包,可以實現復雜的爬蟲工作,并大大簡化代碼量。最后,我們利用rvest包對以上的爬蟲重做一遍,這邊直接給出爬蟲代碼。

          結果如下:

          可見,天善線上一共有107套視頻。我們想查看一下謝佳標老師現在在線的視頻有哪些,中需要在serach窗口輸入老師名字即可。

          說明:

          本文作者為天善智能簽約講師謝佳標,此文允許轉載,轉載時需請完整保留以下內容,違者必究。

          原文來自天善智能社區:

          www.hellobi.com

          原文地址:

          https://ask.hellobi.com/blog/xiejiabiao/5402

          友情提示:

          天善智能是國內最大的商業智能BI、數據分析、大數據領域社區,歡迎大家登陸天善學院有更多免費行業專家數據庫,商業智能BI,數據分析,大數據,數據挖掘視頻和干貨好文分享。

          Friday BI Fly:每周一個主題,一場跟數據有關的行業、工具、技術的交流盛宴。我們的口號是“Friday BI Fly 周五BI飛起來”。 Friday BI Fly 微信直播活動目前已舉辦30期,往期分享內容包括:【金融行業、零售行業、旅游行業、大數據挖掘、大數據落地、數據分析師、數據治理、大數據征信、風控管理、Python實戰、用戶畫像、數據治理、數據架構、R語言等】。

          本周分享主題:2016年11月4日晚8點半微信直播交流游戲行業數據倉庫存儲模型第38場,參加每周五的微信直播分享活動,請加微信:fridaybifly(備注:公司+行業+姓名)。

          更多內容歡迎登陸:https://www.hellobi.com/ 。


          主站蜘蛛池模板: 区三区激情福利综合中文字幕在线一区亚洲视频1| 久久久精品人妻一区亚美研究所| 精品国产亚洲一区二区在线观看| 午夜天堂一区人妻| 亚洲日韩一区精品射精| 成人区人妻精品一区二区不卡视频| 精品欧洲AV无码一区二区男男| 超清无码一区二区三区| 国产成人av一区二区三区在线观看| 日本在线视频一区二区| 免费无码一区二区三区| 国产综合无码一区二区辣椒 | 国产亚洲自拍一区| 日本在线视频一区二区三区| 一区二区三区高清| 亚洲一区二区三区精品视频| 久久精品一区二区三区资源网| 国产乱码伦精品一区二区三区麻豆 | 成人午夜视频精品一区| 亚洲国产综合无码一区二区二三区 | 国产精品亚洲不卡一区二区三区 | 国产福利一区二区精品秒拍| 亚洲AV无码一区二区三区牛牛| 肉色超薄丝袜脚交一区二区| 国产亚洲一区区二区在线| 国产午夜毛片一区二区三区| 农村人乱弄一区二区| 红杏亚洲影院一区二区三区| 波多野结衣的AV一区二区三区| 日韩精品一区二区三区中文字幕| 国产一区二区三区美女| 偷拍精品视频一区二区三区| 成人在线视频一区| 国产福利电影一区二区三区久久久久成人精品综合| 国产精品美女一区二区三区| 在线日韩麻豆一区| 国产精品主播一区二区| 高清国产精品人妻一区二区| 亚洲一区免费观看| 国产欧美色一区二区三区| 国产产一区二区三区久久毛片国语|