1

голосов
1

ответ
54

Просмотры

How to consume this EF Core C# async method in F#?

I am using F# with Entity Framework and I can't get my head around consuming C# async methods from F#. Despite others SO answers related to similar issues can't really get my head around. Here is my attempt with the code below, initially synchronous: let getAirport (id: Guid) = use context = new MyContext() context.Flights.Find id |> (fun x -> if box x = null then None else Some x) And its async counterpart: let getAirportAsync (id: Guid) = async { use context = new MyContext() let! flight = context.Airports.FindAsync id |> Async.AwaitTask return (fun x -> if box x = null then None else Some x) } However, when both are called in the main: [] let main argv = let myGuid = Guid.NewGuid() let airport = { Id = myGuid Name = "Michelle" X = 42.0 Y = 42.0 } AirportRepository.addAirport airport let thisAirport = AirportRepository.getAirport myGuid let thisAirportToo = AirportRepository.getAirportAsync myGuid |> Async.RunSynchronously assert (thisAirport = Some airport) assert (thisAirportToo = Some airport) 0 It cannot compile: Program.fs(61, 13): [FS0001] The type '('a -> 'a option)' does not support the 'equality' constraint because it is a function type Program.fs(61, 30): [FS0001] This expression was expected to have type ''a -> 'a option' but here has type ''b option' I read: https://medium.com/jettech/f-async-guide-eb3c8a2d180a https://docs.microsoft.com/en-us/dotnet/fsharp/tutorials/asynchronous-and-concurrent-programming/async C# async / await method to F#? I thought the process to consume an async C# method was: Pass the C# method to |> Async.AwaitTask Pass the result to let! Return that result Wrap everything in an async block which forms the body of an async F# function Use that newly async created F# function by passing it to |> Async.RunSynchronously What am I missing here?
Ehouarn Perret
1

голосов
0

ответ
95

Просмотры

Есть ли эквивалент для C # IAsyncEnumerable в Python?

Мне интересно, есть ли эквивалент C # 8 Асинхронный поток интерфейса IAsyncEnumerable в Python? То есть, последовательность, с которой каждый элемент извлекается из источника асинхронного. Например, допустим, есть удаленный файл F на сервере А, и мы можем прочитать каждую строку этого файла асинхронно от сервера B работает веб-API, без необходимости держать в памяти весь файл и преобразовывая каждую строку на извлечение до того возвращение трансформированных линий, построчно на веб-апи ресурса R, немного как поток данных, которые будут преобразованы в Web API ресурса. Например: https: //? BaseUrl / API / преобразование fileUri = {} Я хотел бы добиться того, что с помощью Python Web API (будь то AIOHTTP или кварта).
Ehouarn Perret
1

голосов
1

ответ
35

Просмотры

Джекил: как не интерпретировать Джекил / рубин строки в фрагменте кода (румяна)?

У меня есть этот фрагмент кода в должности Джекил: {% выделения HTML linenos%} {% включают head.html%} [...] {% endhighlight%} Я хотел бы, что, например, строка {% включают head.html %} не интерпретируются при визуализации фрагмента кода.
Ehouarn Perret
1

голосов
1

ответ
0

Просмотры

Visual Studio Code debugging the default ASP.NET Core MVC WebApp: does not work

I am using Manjaro linux and tried to debug the default ASP.NET Core MVC project but the debugging stopped without any error I created the project with: dotnet new mvc in a Meow folder, nothing special, and then added a new configuration .NET Core Launch (web). It turns out that there is only a call to dotnet build defined in the build task in tasks.json as defined in preLaunchTask of the launch.json and that's it the debugging process starts and stops without showing any error. When running dotnet run, everything works, so I am suspecting the issue comes more from my Visual Studio debug configuration. In terminal tab I have: > Executing task: dotnet build /home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj < Microsoft (R) Build Engine version 15.9.20.63311 for .NET Core Copyright (C) Microsoft Corporation. All rights reserved. Restore completed in 86.18 ms for /home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj. Meow -> /home/perret/Desktop/Playground/CSharpmusement/Meow/bin/Debug/netcoreapp2.2/Meow.dll Meow -> /home/perret/Desktop/Playground/CSharpmusement/Meow/bin/Debug/netcoreapp2.2/Meow.Views.dll Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:04.62 Terminal will be reused by tasks, press any key to close it. The two files below that have been auto generated look fine. launch.json { // Use IntelliSense to find out which attributes exist for C# debugging // Use hover for the description of the existing attributes // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md "version": "0.2.0", "configurations": [ { "name": ".NET Core Launch (web)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", // If you have changed target frameworks, make sure to update the program path. "program": "${workspaceFolder}/bin/Debug/netcoreapp2.2/Meow.dll", "args": [], "cwd": "${workspaceFolder}", "stopAtEntry": false, "internalConsoleOptions": "openOnSessionStart", "launchBrowser": { "enabled": true, "args": "${auto-detect-url}", "windows": { "command": "cmd.exe", "args": "/C start ${auto-detect-url}" }, "osx": { "command": "open" }, "linux": { "command": "xdg-open" } }, "env": { "ASPNETCORE_ENVIRONMENT": "Development" }, "sourceFileMap": { "/Views": "${workspaceFolder}/Views" } }, { "name": ".NET Core Attach", "type": "coreclr", "request": "attach", "processId": "${command:pickProcess}" } ,] } tasks.json: { "version": "2.0.0", "tasks": [ { "label": "build", "command": "dotnet", "type": "process", "args": [ "build", "${workspaceFolder}/Meow.csproj" ], "problemMatcher": "$msCompile" } ] } [Update 1] Tried to uninstall omnisharp and reinstall it (with a VSCode reboot in between): Starting OmniSharp server at 2/3/2019, 11:19:16 AM Target: /home/perret/Desktop/Playground/CSharpmusement/Meow OmniSharp server started with Mono 5.16.0. Path: /home/perret/.vscode-oss/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/OmniSharp.exe PID: 21990 [info]: OmniSharp.Stdio.Host Starting OmniSharp on manjaro 0.0 (x64) [info]: OmniSharp.Services.DotNetCliService DotNetPath set to dotnet [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Located 2 MSBuild instance(s) 1: Mono 15.0 - "/usr/lib/mono/msbuild/15.0/bin" 2: StandAlone 15.0 - "/home/perret/.vscode-oss/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin" [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Registered MSBuild instance: Mono 15.0 - "/usr/lib/mono/msbuild/15.0/bin" CscToolPath = /home/perret/.vscode-oss/extensions/ms-vscode.csharp-1.17.1/.omnisharp/1.32.8/omnisharp/msbuild/15.0/Bin/Roslyn CscToolExe = csc.exe [info]: OmniSharp.Cake.CakeProjectSystem Detecting Cake files in '/home/perret/Desktop/Playground/CSharpmusement/Meow'. [info]: OmniSharp.Cake.CakeProjectSystem Could not find any Cake files [info]: OmniSharp.WorkspaceInitializer Project system 'OmniSharp.DotNet.DotNetProjectSystem' is disabled in the configuration. [info]: OmniSharp.MSBuild.ProjectSystem No solution files found in '/home/perret/Desktop/Playground/CSharpmusement/Meow' [info]: OmniSharp.MSBuild.ProjectManager Queue project update for '/home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj' [info]: OmniSharp.Script.ScriptProjectSystem Detecting CSX files in '/home/perret/Desktop/Playground/CSharpmusement/Meow'. [info]: OmniSharp.Script.ScriptProjectSystem Could not find any CSX files [info]: OmniSharp.WorkspaceInitializer Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpWorkspaceOptionsProvider [info]: OmniSharp.WorkspaceInitializer Configuration finished. [info]: OmniSharp.Stdio.Host Omnisharp server running using Stdio at location '/home/perret/Desktop/Playground/CSharpmusement/Meow' on host 21903. [info]: OmniSharp.MSBuild.ProjectManager Loading project: /home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj [info]: OmniSharp.MSBuild.ProjectManager Successfully loaded project file '/home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj'. [info]: OmniSharp.MSBuild.ProjectManager Adding project '/home/perret/Desktop/Playground/CSharpmusement/Meow/Meow.csproj' [info]: OmniSharp.MSBuild.ProjectManager Update project: Meow [Update 2] The debugger is installed properly (I tried a brand new fresh installed): Installing C# dependencies... Platform: linux, x86_64, name=manjaro, version=unknown Downloading package 'OmniSharp for Linux (x64)' (30903 KB).................... Done! Installing package 'OmniSharp for Linux (x64)' Downloading package '.NET Core Debugger (linux / x64)' (59407 KB).................... Done! Installing package '.NET Core Debugger (linux / x64)' Downloading package 'Razor Language Server (Linux / x64)' (44979 KB).................... Done! Installing package 'Razor Language Server (Linux / x64)' Finished Also filed an issue on Github.
Ehouarn Perret
1

голосов
1

ответ
817

Просмотры

Является ли .NET структура с полем строки (или массивом байт) (тип не-значения) может быть памятью эффективной? [закрыто]

На другой день (на самом деле, скажем, давным-давно) я читал прекрасную CLR через C # книги (4-е издание), которые я настоятельно рекомендую всем, кто делает некоторые C # развития, чтобы лучше понять основные механизмы и объясняет магию позади сцены. Так что чтение я начал становиться чрезмерно беспокоиться о том, должен ли я использовать структуры более классов в моих дизайнерских решениях. У меня ситуация, что бы сделать идеальное использование (структуры быстрой связью временных фрагментов данных (акой структуры)). Тем не менее, я все еще изо всех сил об использовании структур в этом случае, так как я видел так много правил большого пальца. Например, экземпляр должен быть меньше 16 байт или тот факт, что я м готовы нести массив или строку (которая по крайней мере, является неизменным) в качестве одного из полой структуры в то время как строки нужно какая-то образом быть мусор позже, и т.д. Похоже, что использование структур тогда на самом деле больше, чем ограничено , Вот ниже на # 6, например упрощенно C, я предполагаю, что ответ об эффективности памяти здесь: нет, пожалуйста, не используйте структура потому что вы будете в конечном итоге с памятью много впустую, и попутно, что в качестве аргумента будет действительно жадными с точки зрения производительности. общественное перечисление ChunkHeader: USHORT {неизвестен = 0x00, передающиеся = 0x01, 0x02 = Received,} публичная структура Chunk {общественности статической Кусок Empty = новый Chunk (ChunkHeader.Unknown, новый байт [0]); общественный Чанк (заголовок ChunkHeader, Byte [] данные) {заголовок this.Header =; this.Data = ExceptionHelpers.ThrowIfNull (данные,
Ehouarn Perret
1

голосов
1

ответ
368

Просмотры

How to send json data and formdata (files) from Angular to an ASP.NET WebAPI Controller action in one shot?

}} Есть в любом случае я могу отправить / загрузку / запись из углового приложения (очевидно, в службе с HttpClient правильно впрыскивается) модель (которая данные JSon, которые будут извлечены из тела) и данные форм, содержащие файлы .. .)? Проблема заключается в том ... Я не вижу, как: константное FormData = новые FormData (); Const uploadReq = новый HttpRequest ( 'POST', URL, FormData, {reportProgress: правда, заголовки: заголовки}); Это похоже ли ...: добавить данные в формате JSON как часть данных формы и не могу иметь его извлечен из тела, как «такой» в действии контроллера Web API, и я должен держать ключ, используемый в угловом приложении для JSON данные, а затем цикл в течение оставшихся ключей (которые, предположительно, все файлы). Я должен отправить другой «POST» для каждого файла т действительно видеть, как: константное FormData = новые FormData (); Const uploadReq = новый HttpRequest ( 'POST', URL, FormData, {reportProgress: правда, заголовки: заголовки}); Это похоже ли ...: добавить данные в формате JSON как часть данных формы и не могу иметь его извлечен из тела, как «такой» в действии контроллера Web API, и я должен держать ключ, используемый в угловом приложении для JSON данные, а затем цикл в течение оставшихся ключей (которые, предположительно, все файлы). Я должен отправить другой «POST» для каждого файла т действительно видеть, как: константное FormData = новые FormData (); Const uploadReq = новый HttpRequest ( 'POST', URL, FormData, {reportProgress: правда, заголовки: заголовки}); Это похоже ли ...: добавить данные в формате JSON как часть данных формы и не могу иметь его извлечен из тела, как «такой» в действии контроллера Web API, и я должен держать ключ, используемый в угловом приложении для JSON данные, а затем цикл в течение оставшихся ключей (которые, предположительно, все файлы). Я должен отправить другой «POST» для каждого файла и я должен держать ключ, используемый в угловом приложении для данных JSON, а затем цикл над остальными клавишами (которые, предположительно, все файлы). Я должен отправить другой «POST» для каждого файла и я должен держать ключ, используемый в угловом приложении для данных JSON, а затем цикл над остальными клавишами (которые, предположительно, все файлы). Я должен отправить другой «POST» для каждого файла
Ehouarn Perret
1

голосов
1

ответ
47

Просмотры

Поддержка путь_к_файла SVG в HTML: разница между локальным и удаленным?

Локально две строки выше работы и отображения два снимка, но после развертывания удаленно (например, на FTP) только PNG дисплеи (разрешения устанавливаются на наиболее разрешающим для обоих файлов). Любая идея? Кстати, это, кажется, любой вид на SVG не может быть дисплей, я могу получить доступ к ПИК, используя свой путь, но загрузка в HTML не работает. Я уверен, что это реально глупо.
Ehouarn Perret
1

голосов
4

ответ
68

Просмотры

Есть удобный способ, чтобы выяснить, является ли инвентарь Object

Я пытаюсь выяснить, есть ли какие-либо встроенные подпрограммы или классы в рамках .NET, которые могут обеспечить удобный способ проверить, реализует ли коллекция из следующих интерфейсов и, следовательно, подключить к соответствующим событиям, если таковые имеются: IEnumerable IList ICollection IBindingList IEnumerable IList ICollection IRaiseItemChangedEvents INotifyCollectionChanged в основном для целей привязки данных ... Я могу пойти с большим количеством отражений (например, IsAssignableFrom), но так как это, кажется, довольно распространенный сценарий, мне было интересно, если там было что-то уже сделано в этой связи , [EDIT] Кажется, мой вопрос является слишком расплывчатым или плохо сформулирован, моим плохим. Как я уже говорил чуть позже в одном из моих комментариев я еще искал способ, чтобы обеспечить централизованный Databinding способ ведения, может быть заинтересован, чтобы сделать UI-агностик, Кажется, MS обеспечивает внутренне некоторый набор инструментов, таких как: http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/DataGridViewDataConnection.cs,68950bc360ed4e45,references, но ничто не является публичным. Сейчас мой подход, чтобы обернуть все с видом BindingSource эквивалента и проверить, реализует ли объект, переданный в конструктор любого интерфейса я готов соединиться с.
Ehouarn Perret
1

голосов
1

ответ
326

Просмотры

Как применять каскадное удаление на лицах, которые имеют несколько внешних ключей с Entity Framework 6?

У меня есть две сущности ниже: [Таблица ( "TimeZone")] общественный класс TimeZone {[Требуется] [Колонка ( "Name"), Index ( "IX_Name", IsUnique = истина)] [StringLength (50)] публичная строка Имя { получить; задавать; } [Колонка ( "Описание")] [StringLength (100)] публичная строка Описание {получить; задавать; } [Колонок ( "IANAID"), индекс ( "IX_IANAID", IsUnique = истина)] [StringLength (50)] общественная строка IANAId {получить; задавать; } общественного ICollection пользователи {получить; задавать; } Общественного TimeZone () {Пользователи = новый HashSet (); }} [Table ( "Пользователь")] класс ApplicationUser общественности: IdentityUser {// [...] [Колонка ( "TimeZoneID"), ForeignKey ( "TimeZone")] общественная строка TimeZoneId {получить; задавать; } [Колонка ( "RegionID"), ForeignKey (» Я получаю следующее исключение с Entity Framework: The ВЕИТ конфликтный с ссылочным ограничением «FK_dbo.User_dbo.TimeZone_TimeZoneID». Конфликт произошел в базе данных «APPLICATIONDB_753c3d2ad2634cbf8cb62b098cdc6043», таблица «dbo.User», колонка «TimeZoneID». Заявление было прекращено. Это нормально, что даже если есть каскадное удаление по умолчанию включен Ef6 Code First, удаление записи из TimeZone не удаляет все связанные с этими пользователями? Примечание: В моем ApplicationDbContext я перекрытый метод OnModelCreating: защищенные переопределения недействительного OnModelCreating (DbModelBuilder dbModelBuilder) {base.OnModelCreating (dbModelBuilder); dbModelBuilder.Conventions.Add (); dbModelBuilder.Conventions.Add (); dbModelBuilder.Conventions.Remove ();
Ehouarn Perret
1

голосов
2

ответ
53

Просмотры

Можно ли разрешить экземпляр абонента в фабричном методе Ninject через IContext?

Я думаю, что это очень простой сценарий, который я пытаюсь достичь. Я просто интересно ли это или нет можно получать вызывающий экземпляр в фабричном методе Ninject. общественная программа статического класса {государственной статической силы Main (PARAMS строка [] арг) {вар standardKernelCaller = новый StandardKernelCaller (); standardKernelCaller.Call (); Console.ReadKey (); }} Общедоступный интерфейс IA {} общественного класса A: IA {риЪИс INT Параметр {получить; } А (INT параметр) {параметр = параметр общественности; }} Класс модуль общественности: NinjectModule {общественного переопределение аннулируется Load () {Bind () ToMethod (Create);. } Частные статическое Создание (IContext контекст) {вар номер = // разрешить абонент (StandardKernelCaller) Magic Number с помощью контекста ... вернуть новый A (номер); }} Общественного класса StandardKernelCaller {общественного Const INT MagicNumber = 42; общественного недействительными вызовов () {вар standardKernel = новый StandardKernel (новый модуль ()); вар материал = standardKernel.Get (); }} Я не слишком уверен, что это хорошая практика. На данный момент в соответствующем коде производства я использую что-то вроде: общественный абстрактного класса BusinessApiController: ApiController где TBusinessLogic: класс, IBusinessLogic {защищенный TBusinessLogic BusinessLogic {получить; частный набор; } Защищен переопределение недействительными Инициализировать (HttpControllerContext controllerContext) {base.Initialize (controllerContext); BusinessLogic = CreateBusinessLogic (); } Защищенный виртуальный TBusinessLogic CreateBusinessLogic () {вар BusinessLogic = BusinessLogicFactory.Create (this.GetOwinContext ()); вернуться BusinessLogic; } Защищен переопределения недействительным Dispose (BOOL утилизации) {если (утилизации) {если (BusinessLogic! = NULL) {BusinessLogic.Dispose (); BusinessLogic = NULL; }} Base.Dispose (утилизации); }} Общественного абстрактного класса BusinessController: контроллер, где TBusinessLogic: класс, IBusinessLogic {защищенный TBusinessLogic BusinessLogic {получить; частный набор; } Защищен переопределение недействительными Инициализировать (RequestContext RequestContext) {base.Initialize (RequestContext); BusinessLogic = CreateBusinessLogic (); } Защищенный виртуальный TBusinessLogic CreateBusinessLogic () {вар BusinessLogic = BusinessLogicFactory.Create (this.GetOwinContext ()); вернуться BusinessLogic; } Защищен переопределения недействительным Dispose (BOOL утилизации) {если (утилизации) {если (BusinessLogic! = NULL) {BusinessLogic.Dispose (); BusinessLogic = NULL; }} Base.Dispose (утилизации); }} Но я не большой поклонник закодированного «owinContext» имя параметра в поле ниже завода: общественный статический класс BusinessLogicFactory {// Потенциально устаревшие чтения / конфигурации ядра в следующих версиях Ninject частных статических чтения StandardKernel StandardKernel = новый StandardKernel (новый BusinessLogicsNinjectModule ()); общественности статической TBusinessLogic Создать (IOwinContext owinContext) {// Потенциал рефакторинга: получить имя аргумента с помощью выражения связывания или использовать Ninject провайдеров вар BusinessLogic = StandardKernel.Get (новый ConstructorArgument ( "owinContext", owinContext)); вернуться BusinessLogic; .}} А вот пример упрощенной версии модуля Ninject: класс BusinessLogicsNinjectModule общественности: NinjectModule {общественного переопределение аннулируются Load () {Bind () К (); Связываются с(); Связываются с(); }} Кстати, если есть лучший способ сделать для BusinessLogic инъекции или лучший дизайн в целом, я хотел бы знать больше об этом. . NinjectModule {публичного переопределение недействительными нагрузки () {Bind () К (); Связываются с(); Связываются с(); }} Кстати, если есть лучший способ сделать для BusinessLogic инъекции или лучший дизайн в целом, я хотел бы знать больше об этом. . NinjectModule {публичного переопределение недействительными нагрузки () {Bind () К (); Связываются с(); Связываются с(); }} Кстати, если есть лучший способ сделать для BusinessLogic инъекции или лучший дизайн в целом, я хотел бы знать больше об этом.
Ehouarn Perret
1

голосов
3

ответ
287

Просмотры

Как подсчитать количество экземпляров для данного класса в угловом приложении?

Вслед за чтение ссылки ниже о нечистых и чистых трубах в угловых применениях: Что нечистая труба в Угловом? https://blog.angularindepth.com/the-essential-difference-between-pure-and-impure-pipes-and-why-that-matters-999818aa068 https://blog.mgechev.com/2017/11/12 / быстрее угловатые-приложения-чистая-труба-запоминание-чисто-функция-PART-2 / Я хотел бы видеть сам экземпляры, созданные с помощью углового приложения, но я даже не уверен, что это на самом деле возможно. Не обязательно для труб, но для чего-нибудь. Скажем, для компонентов и других. Например, это бы могло помочь мне понять, я хотел бы иметь лучшее понимание того, когда экземпляры создаются в отношении цикла дайджеста. Любое решение отладки / профилирования для этой цели?
Ehouarn Perret
1

голосов
1

ответ
49

Просмотры

Почему строка XML не может быть десериализации из-за префиксы корневых элементов?

У меня есть ниже XML: 0,6 predefinedPeriod месяц Апрель K CAC40 То, что я пытаюсь десериализации в [XmlRoot (ElementName = «фонд»)] Фонд общественного класса {[XmlElement (ElementName = «имя»)] общественность строка Имя {получить; задавать; } [XmlElement (ElementName = "имя_индекс")] общественность строки IndexName {получить; задавать; } [XmlAttribute (Имя_атрибут = "yclass")] общественность строка Yclass {получить; задавать; }} [XmlRoot (ElementName = "экземпляр", пространство имен = "http://www.blahblah.com/engine/42")] общественного класса Instance {[XmlElement (ElementName = "язык")] общественность Язык {получить; задавать; } [XmlElement (ElementName = "порог" )] Строка Threshold общественности {получить; задавать; } [XmlElement (ElementName = "typePeriod")] общественность строка TypePeriod {получить; задавать; } [XmlElement (ElementName = "интервал")] общественность строка Интервал {получить; задавать; } [XmlElement (ElementName = "valuePeriod")] общественность строка ValuePeriod {получить; задавать; } [XmlElement (ElementName = "фонд")] Фонд общественного фонда {получить; задавать; } [XmlAttribute (Имя_атрибут = "yclass")] общественность строка Yclass {получить; задавать; } [XmlAttribute (Имя_атрибут = "жид")] общественность строка жид {получить; задавать; }} [XmlRoot (ELEMENTNAME = "Данные", пространство имен = "http://www.blahblah.com/engine/42")] общественного класса Datas {[XmlElement (ElementName = "экземпляра", пространство имен = "HTTP: // www.blahblah.com/engine/42" )] Общественного Instance Instance {получить; задавать; }} [XmlRoot (ElementName = "вход", пространство имен = "http://www.blahblah.com/engine/42")] Входные общественного класса {[XmlElement (ElementName = "Данные", пространство имен = "HTTP: // www.blahblah.com/engine/42" )] общественный DATAS Datas {получить; задавать; } [XmlAttribute (Имя_атрибут = "у", пространство имена = "http://www.blahblah.com/engine/42", форма = XmlSchemaForm.Qualified)] общественная строка Y {получить; задавать; }} Однако, когда десериализации XML выше: государственная программа статического класса {государственной статической силы Main (PARAMS строка [] арг) {вар сериализатору = новый XmlSerializer (TypeOf (вход)); используя (VAR StringReader = новый StringReader (File.ReadAllText ( "file.xml"))) {использованием (вар XMLReader = XmlReader. Создание (StringReader)) {уаг экземпляра = (вход) serializer.Deserialize (StringReader); }}}} Я получаю сообщение об ошибке из-за приставкой у ... Существует ошибка в документе XML (1, 1). ---> System.Xml.XmlException: Данные на корневом уровне является недействительным. Строка 1, позиция 1. Чтение некоторых сообщений, как эти один: https://stackoverflow.com/a/36163079/4636721 кажется, что там может быть ошибка с XmlSerializer.
Ehouarn Perret
1

голосов
1

ответ
59

Просмотры

Как изменить код статуса HTTP после начала писать в поток HttpContext.Response.Body в ASP.NET Ядра?

Я часто вижу, что писать в поток HttpContext.Response.Body является плохой практикой (или с использованием PushStreamContent или StreamContent как часть HttpMessageResponse) потому что тогда вы не можете изменить код состояния HTTP, если есть что-то не так происходит. Есть ли обходной путь на самом деле выполнить асинхронную запись в выходной поток, будучи в состоянии изменить HTTP код состояния в случае, если операция пойдет не так?
Ehouarn Perret
0

голосов
1

ответ
31

Просмотры

Есть ли ValueTuple плохой выбор, если есть слишком много «полей» из-за его типа значения природы?

Так как я решил разнообразить себя ржавчиной и Go я стал чрезмерно беспокоиться о копировании / задание / двигающемся и т.д. И в последнее время я действительно подумал, ValueTuple также страдает от типичной оговорки структуры, которая является то, что его размер не должен превышать 16 байт в избежать производительности при копировании тип значения здесь и там: https://stackoverflow.com/a/1082341/4636721 Так что, если у нас есть такое значение кортежа (десятичный, десятичный, десятичный, десятичный), что означает, что мы лучше использовать классический класс кортеж пройти вокруг этого кортежа?
Ehouarn Perret
5

голосов
2

ответ
1.7k

Просмотры

Почему .NET асинхронные ждут копирование файлов намного больше потребляющие CPU, чем синхронное File.Copy () вызов?

Почему код ниже результатов: общественной программы статического класса {государственной статической силы Main (PARAMS строка [] арг) {вар sourceFileName = @ "C: \ Users \ ehoua \ Desktop \ Материал \ 800MFile.exe"; вар destinationFileName = sourceFileName + ".bak"; FileCopyAsync (sourceFileName, destinationFileName); // В строке ниже на самом деле быстрее и намного меньше CPU-потребляя // File.Copy (sourceFileName, destinationFileName, правда); Console.ReadKey (); } Общественности статической асинхронной недействительным FileCopyAsync (строка sourceFileName, строка destinationFileName, внутр BufferSize = 0x1000, CancellationToken CancellationToken = по умолчанию (CancellationToken)) {используя (вар Исходный_файл = File.OpenRead (sourceFileName)) {используя (вар destinationFile = Файл. OpenWrite (destinationFileName)) {Console.WriteLine ($ "Копирование {sourceFileName} до {destinationFileName} ..."); ждут sourceFile.CopyToAsync (destinationFile, BufferSize, CancellationToken); Console.WriteLine ( "Готово"); }}}} В то время как File.Copy (): https://msdn.microsoft.com/en-us/library/system.io.file.copy(v=vs.110).aspx намного меньше затрат процессора : Так есть еще реальный интерес с помощью асинхр / ждать для целей копирования файлов? Я думал, сохраняя нить для копирования мощи стоит, но функция File.Copy окна, кажется, чтобы выиграть бой руки вниз через CPU%. Некоторые утверждают, что это из-за реальной поддержкой DMA, но до сих пор, я делаю все, чтобы разрушить выступление? Или есть что-то, что можно сделать, чтобы улучшить использование процессора с моим методом асинхронного?
Ehouarn Perret
2

голосов
1

ответ
232

Просмотры

Список доступных последовательных портов

Я ищу способ получить список доступных последовательных портов (независимо от рубиновой последовательного порта жемчужины). На данный момент, я дал попробовать на Ruby Gems ниже: рубинового SerialPort: https://github.com/hparra/ruby-serialport rubyserial: https://github.com/hybridgroup/rubyserial Я знаю, как сделать это в Python в .NET / моно C #, Java, но я не могу управлять, чтобы получить эту информацию в рубин, любая идея?
Ehouarn Perret
2

голосов
1

ответ
105

Просмотры

Найти максимум & Ь в множестве S = {1, 2, ... N} меньше, чем некоторое значение к

Я играл немного с языком Python, чтобы решить учебник по HackerRank, доступный здесь: https://www.hackerrank.com/challenges/30-bitwise-and Суть задачи состоит в нахождении максимума и б где A, B ∈ s, s это множество определяется как: s = {1, 2, ...}, где п а <Ь. Другим условием является то, что & Ь <к, где 2
Ehouarn Perret
3

голосов
2

ответ
433

Просмотры

C # - тип ограничения и ограничения, любой обходной путь, чтобы сохранить безопасность типов?

У меня есть довольно общий сценарий об ограничениях общего типа Constraint, которые требуются другой Generic быть определенно. Это уже обсуждалось (сам и другие Эрик Липперт), но до сих пор я не видел общее руководство или, скажем, эмпирическое правило, которое может быть применено при натыкаясь на следующий сценарий: общественный класс абстрактного класса: класс, где TProperty: Свойство // К сожалению, линия выше, не может работать, хотя компилятор может фактически вывести // универсального типа, так как определения двух определений классов, как: // Рассматривая & B две других хорошо определенных классов // класса, где TA: а и / / Класс, где ТБ: в не допускается и хорошо понятно {защищенный класс (TProperty свойство) {если (! свойство = NULL) {this._property = собственность; } Еще {певд ArgumentNullException (@ "собственности"); }} Частный только для чтения TProperty _property; общественный TProperty собственность {получить {вернуться this._property; }}} Общественного абстрактного класса недвижимости // То же замечание идет здесь, где TParentClass: Класс {Защищенное свойство (TParentClass родитель) {если (! Родитель = NULL) {this._parent = родитель; } Еще {певд ArgumentNullException (@ "родитель"); }} Частные чтения TParentClass _parent; внутренний TParentClass Parent {получить {вернуться this._parent; }}} Это нормально, мы все еще есть некоторые обходные пути, используя интерфейсы или создание новых базовых классов просто следующим образом: общественного класса класса абстрактную {} общественного класса абстрактного класса: Класс, где TProperty: Свойство {защищенный класс (TProperty свойство) {если ( ! свойство = NULL) {this._property = собственность; } Еще {певд ArgumentNullException (@ "собственности"); }} Частный только для чтения TProperty _property; общественный TProperty собственность {получить {вернуться this._property; }}} Общественного абстрактного класса Свойство {} общественного абстрактного класса недвижимости, где TParentClass: Класс {Защищенное свойство (TParentClass родитель) {если (! Родитель = NULL) {this._parent = родитель; } Еще {певд ArgumentNullException (@ "родитель"); }} Частные чтения TParentClass _parent; внутренний TParentClass Parent {получить {вернуться this._parent; }}} Это хорошо, но то, что произойдет, если я хочу, чтобы добавить новый законный слой наследования? общественный абстрактный класс InheritedClass: Class // Черт! Я хотел, чтобы быть более конкретными, но я не могу иметь (а также, и т.д.) // Не могу сделать это без объявления другого общедоступного интерфейса ... грустная // Или другой не общий базового класса, где TInheritedProperty: Свойство {// Но это замечание не может работать здесь ... Я бы нужен «настоящий» типа не InheritedProperty ... // Да, это он: дизайн должен не так уж сложно ... пересмотреть ваши требования бизнеса и просто использовать в широком масштабе взаимодействия с композицией, наследование не только для сохранения до вас, чтобы написать немного кода, и эти классы должны образовывать своего рода семьи, хорошо они образуют своего рода -семья. Ну, достаточно справедливо, но это не решает ситуацию, я должен признаться, это чрезмерно преувеличен, но бывают случаи, когда это имеет смысл иметь удел с ограничениями и где эти ограничения имеют также ограничение. Да те из них могут свести вас действительно сумасшедшие (например, рекурсивные ограничения) и сделать вас тянет вас волосы ... но все же бывают ситуации, когда это может быть удобно, особенно в отношении безопасности типа. Во всяком случае, в отношении этих ограничений является то, что наиболее подходит, общее руководство, чтобы следовать, чтобы получить обратно на рельсах,
Ehouarn Perret
2

голосов
1

ответ
790

Просмотры

Как нарисовать эффективно стрелки на холсте с помощью JavaFX 8?

Я ищу очень простой и эффективный способ привлечь стрелы в JavaFX 8, что является лучшим способом для достижения этой (С точки зрения производительности, если, скажем, я готов сделать сотни или тысячи из них)? Я слышал, используя холст для рисования на это довольно эффективным. Тем не менее, я не знаю, лучшая реализация, является ли пойти с: Наследование от класса Shape [https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Shape.html] Наследование от классовой линии? [Https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Line.html] себе каждый собака беспокоит сейчас и потом с классом GraphicContext для того, чтобы создать стрелку вручную? Не звучит как хорошая идея. Другая стратегия?
Ehouarn Perret
3

голосов
1

ответ
171

Просмотры

Powershell 5: поддержка документации через комментарии для классов и членов Перечисления

Просто интересно, есть ли какая-либо поддержка комментариев считающихся документации для перечислений и классов членов (методы и поля / свойства) в PowerShell?
Ehouarn Perret
3

голосов
1

ответ
2k

Просмотры

appsettings.json (both dev and prod) ignored by ASP.NET Core 2.0?

I would like to setup HTTPS for my ASP.NET core application as well as defining different ports on which my app can listen to (e.g. a bit like what was shown by Scot Hanselman a while ago: https://channel9.msdn.com/Events/Build/2017/B8048). I have checked the official resources: https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl https://docs.microsoft.com/en-us/aspnet/core/security/https I thought that the default builder was supposed to dig in the appsettings.json (or the appsettings.Development.json when it is relevant). Program.cs content: public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) { var builder = WebHost.CreateDefaultBuilder(args); return builder.UseStartup().Build(); } } appsettings.Development.json content: { "Logging": { "IncludeScopes": false, "Debug": { "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "Console": { "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } }, "Kestrel": { "Endpoints": { "Localhost": { "Address": "127.0.0.1", "Port": "5001" } } }, "LocalhostwithHttps": { "Address": "127.0.0.1", "Port": "44333", "Certificate": { "Source": "Store", "StoreLocation": "LocalMachine", "StoreName": "My", "Subject": "CN=localhost" } } } Alas, when starting debugging against the development environment, my web app is ending up starting like this: Hosting environment: Development Content root path: c:\Users\ehoua\Desktop\There Launching browser (cmd.exe /C start http://localhost:5000) Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down. Do I have to really give up on the default builder and specify either the appsettings on which the the app needs to rely on or to hardcode the port values...? [EDIT] Following @Set answer, I tried the following in Program.cs: public static IWebHost BuildWebHost(string[] args) { var developmentConfiguration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.Development.json", optional: false) .Build(); var productionConfiguration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.json", optional: false) .Build(); return WebHost.CreateDefaultBuilder(args) .UseEnvironment("Development").UseConfiguration(developmentConfiguration) .UseEnvironment("Production").UseConfiguration(productionConfiguration) .UseStartup().Build(); } I purposely set the optional argument to false in order to double check whether the appsettings file was properly added to the configuration. Also checked that the environment in the Startup Configure method was either Development or Production but still ending up with the same old port 5000 which belongs to none of my appsettings files. [Edit] Possible in .NET 2.1 See: https://github.com/aspnet/KestrelHttpServer/issues/1290#issuecomment-353416087
Ehouarn Perret
3

голосов
0

ответ
27

Просмотры

Reveal.js: как создать пользовательский переход (не предопределенный) между двумя вертикальными секциями без FADEOUT эффекта?

Я ищу способ, чтобы переход между двумя вертикальными секциями, которые выглядят как один, представленной в fullpage.js: https://codepen.io/ehouarn-perret/pen/jprrqx?editors=0010 В настоящее время у меня есть что-то почти аналогично, за исключением, что переход слайдов вызывает прямое FadeOut на предыдущем разделе: https://codepen.io/ehouarn-perret/pen/ajVBzY?editors=0110 Мой JavaScript код: функция getRandomColor () {вар букв = «0123456789abcdef»; вар color = '#'; для (вар я = 0; г <6; я ++) {цвет + = буквы [Math.floor (Math.random () * 16)]; } Вернуть цвет; } Функция getSectionColors (длина) {Результаты вар = []; для (вар я = 0; я <длина; я ++) {вар randomColor = getRandomColor (); results.push (randomColor); } Возвращать результаты; } Вар sectionCount = 6; вар sectionColors = getSectionColors (sectionCount); для (вар я = 0; я <sectionCount; я ++) {вар раздел = "" + "" + "" + I + "" + "" + ""; $ ( '#') Секции добавления (раздел). } Reveal.initialize ({ширина: '100%', высота: '100%', прогресс: ложно, переход: 'слайд', backgroundTransition: 'слайд', MouseWheel: правда,}); console.log (Reveal.getScale ()); и связанный с ними Html: Как я могу достичь чего-то подобного, перехода, который прилипает две секции при переходе от одного к другому? инициализации ({ширина: '100%', высота: '100%', прогресс: ложно, переход: 'слайд', backgroundTransition: 'слайд', MouseWheel: правда,}); console.log (Reveal.getScale ()); и связанный с ними Html: Как я могу достичь чего-то подобного, перехода, который прилипает две секции при переходе от одного к другому? инициализации ({ширина: '100%', высота: '100%', прогресс: ложно, переход: 'слайд', backgroundTransition: 'слайд', MouseWheel: правда,}); console.log (Reveal.getScale ()); и связанный с ними Html: Как я могу достичь чего-то подобного, перехода, который прилипает две секции при переходе от одного к другому?
Ehouarn Perret
3

голосов
0

ответ
71

Просмотры

Как вернуть и отправить большой ответ / запрос (размер) на GET ресурса ASP.NET WebAPI?

У меня есть следующий ресурс в проекте ASP.NET WebAPI: [HttpGet] [Маршрут ( "API / v1 / вещи / {идентификатор: Int}")] [ResponseType (TypeOf (Model.Thing))] общественного IHttpActionResult Получить (INT идентификатор ) {вар клиент = новый ThingApiClient (THING_API, Log.Logger, Log.Logger); вар apiResult = client.Get (ID); если (apiResult == NULL) {вернуть NotFound (); } Результат переменная = Mapper.Instance.Map (apiResult); вернуть Ok (результат); } И что-то подобное для POST и PUT. Оказывается, что некоторые части результата просто супер тяжелый из-за какой-то большой строки base64 изображения ... который может быстро достигать размера длины запроса ... Я задаюсь вопросом, какой обходной путь может быть реализован, чтобы преодолеть ограничения для запросов (на POST и PUT), я читал о потоковом, WebSockets, просто увеличивая размер запроса и т.д.
Ehouarn Perret
3

голосов
1

ответ
421

Просмотры

Как я могу получить объект HttpRequest в качестве ApiController без использования HttpContext статического класса?

Я ищу способ, чтобы получить HTTPRequest (не HttpRequestMessage) объекта без использования HttpContext статического класса в моем ApiController:. HttpContext.Current.Request.GetOwinContext () Get () Вместо того, что я могу иметь в обычном контроллере, который обычный экземпляр объекта: HttpContext.GetOwinContext () Получить () есть ли способ иметь что-то прямо из экземпляра ApiController.?
Ehouarn Perret
1

голосов
1

ответ
77

Просмотры

JSLint: Как подавить «ожидаемый„Object.create (NULL)“и вместо этого увидел„новый объект“. предупреждение?

Как избежать JSLint кричать на меня с предупреждением «ожидаемый„Object.create (нуль)“, и вместо этого увидел„новый объект“при использовании этой очень простой строки кода: вар myDummyObject = новый Object (); ?
Ehouarn Perret
2

голосов
2

ответ
451

Просмотры

Составитель лямбда-выражение, используемое в качестве добытчиков собственности и сеттеров: неправильный метод аналогий или неправильного выражение строительства лямбды?

Привет я пытался с помощью (кэшированные) скомпилированные лямбда-выражения для доступа к свойствам, конечно, я получил результат намного лучше (т.е. быстрее), чем при использовании PropertyInfo.GetValue () / SetValue () вызовы методов. Тем не менее, я чувствую, что все еще очень далеко приближается к «родному» свойству скорости. Является ли это метод аналогий, что делает результаты настолько отличается от того, что другие могли бы получить? https://www.codeproject.com/Articles/584720/ExpressionplusbasedplusPropertyplusGettersplusandp http://www.palmmedia.de/Blog/2012/2/4/reflection-vs-compiled-expressions-vs-delegates-performance-comparision Составитель C # Лямбда-выражения Performance Вот ниже результат я получил после того, как работает мой кусок кода ниже: Native: Прошедшее = 00: 00: 00.0995876 (99.5876 мс); Шаг = 1.992E-005 мс Лямбда выражение: Прошедшее = 00: 00: 00,5369273 (536.9273 мс); Шаг = 1. 074E-004 мс Информация о недвижимости: Прошедшее = 00: 00: 01,9187312 (1918.7312 мс); Step = 3.837E-004 MS 1,000 <5,392 <19,267 Честно говоря, я чувствую, что на основе других критериев, скомпилированные выражения лямбда должна быть в два раза медленнее, чем обычные свойства, а не как между 5 - 6 раз медленнее. Любая мысль? Бенчмаркинга метод? Способ скомпилированный лямбда-выражение вычисляется? общественный класс Программа статической {государственной статической силы Main (PARAMS строка [] арг) {вар STEPCOUNT = 5000000UL; вар фиктивные = новые пустышки (); Const строка PropertyName = "пустышки"; Const BOOL PropertyValue = TRUE; вар PropertyInfo = TypeOf (пустышки) .GetProperty (PropertyName); вар nativeBenchmark = Benchmark.Run ( "родной", STEPCOUNT, () => dummy.Soother = PropertyValue); вар lambdaExpressionBenchmark = Benchmark.Run ( "лямбда-выражение", STEPCOUNT, () => dummy.Set (PropertyName, PropertyValue)); вар propertyInfoBenchmark = Benchmark.Run ( "Информация о недвижимости", STEPCOUNT, () => propertyInfo.SetValue (фиктивная, PropertyValue, нуль)); вар benchmarkReports = новый [] {nativeBenchmark, lambdaExpressionBenchmark, propertyInfoBenchmark} .OrderBy (пункт => item.ElapsedMilliseconds); benchmarkReports.Join (Environment.NewLine) .WriteLineToConsole (); вар быстро = benchmarkReports.First () ElapsedMilliseconds. benchmarkReports.Select (отчет => (report.ElapsedMilliseconds / быстрый) .ToString ( "0,000")) Join ( "<") .WriteLineToConsole (). Console.ReadKey (); }} Общественного класса пустышки {общественного BOOL? Соска {получить; задавать; } = TRUE; } Общественного класса BenchMarkReport {#region Поля и свойства общественного строка Name {получить; } Общественного TimeSpan ElapsedTime {получить; } Общественных двойной ElapsedMilliseconds {получить {возвращение ElapsedTime.TotalMilliseconds; }} Общественного ULONG STEPCOUNT {получить; } Общественных двойной StepElapsedMilliseconds {получить {вернуться ElapsedMilliseconds / STEPCOUNT; }} #Endregion #region Конструкторы внутренний BenchMarkReport (имя строки, TimeSpan ElapsedTime, ULONG STEPCOUNT) {Имя = имя; ElapsedTime = ElapsedTime; STEPCOUNT = STEPCOUNT; } Методы #endregion #region общественного переопределение строки ToString () {возвращение $ "{Имя}: Прошедшее = {ElapsedTime} ({} ElapsedMilliseconds мс); } Общественное BenchMarkReport Выполнить (ULONG stepCountOverride) {вар секундомер = Stopwatch.StartNew (); для (ULONG = 0; я <STEPCOUNT; я ++) {_stepAction (); } Stopwatch.Stop (); вар benchmarkReport = новый BenchMarkReport (имя, stopwatch.Elapsed, stepCountOverride); вернуться benchmarkReport; }} #Endregion общественного ObjectExtensions статического класса {государственного статический сила WriteToConsole (данный экземпляр TInstance) {Console.Write (экземпляр); } Государственной статической силы WriteLineToConsole (это TInstance экземпляр) {Console.WriteLine (экземпляр); } // Плюсы: добавить умозаключение имя из лямбда-выражения свойств // например, «экземпляр => instance.PropertyName» перенаправляется с помощью «ИмениСвойства» общественности статической TProperty Получить (этот экземпляр TInstance, строка ИмяСвойства) {вернуться FastPropertyRepository.GetGetter (ИмяСвойства) (экземпляра); } Государственной статической силы Набор (это TInstance экземпляр, строка PropertyName, TProperty PropertyValue) {FastPropertyRepository.GetSetter (PropertyName) (экземпляр, PropertyValue); }} Общественное EnumerableExtensions статического класса {общественность статическая строка Join (это IEnumerable источника, строка разделителя = "") {вернуться string.join (разделитель, источник); }} Внутреннего статический FastPropertyRepository класса {частное статическое только для чтения IDictionary сеттеров; частные статические чтения IDictionary Геттеры; статические FastPropertyRepository () {Геттеры = новый ConcurrentDictionary (); Инкубационные = новый ConcurrentDictionary (); } Общественности статической Func GetGetter (строка PropertyName) {Func газопоглотитель; если (Getters.TryGetValue (ИмяСвойства, из геттер)!) {газопоглотитель = FastPropertyFactory.GeneratePropertyGetter (PropertyName); Геттеры [PropertyName] = газопоглотитель; } Вернуть газопоглотитель; } Общественности статического Действие GetSetter (строка ИмениСвойство) {Действие сеттер; если (Setters.TryGetValue (ИмениСвойства, из сеттеров)) {сеттер = FastPropertyFactory.GeneratePropertySetter (ИмениСвойства); Инкубационные [PropertyName] = сеттер; } Вернуть сеттер; }} Внутренний статический класс FastPropertyFactory {открытые статические Func GeneratePropertyGetter (строка PropertyName) {вар parameterExpression = Expression.Parameter (TypeOf (TInstance), "значение"); вар propertyValueExpression = Expression.Property (parameterExpression, PropertyName); Выражение вар = propertyValueExpression.Type == TypeOf (TProperty)? propertyValueExpression: (Выражение) Expression.Convert (propertyValueExpression, TypeOf (TProperty)); вар propertyGetter = Expression.Lambda (выражение, parameterExpression) .Compile (); вернуться propertyGetter; } Общественности статической Действие GeneratePropertySetter (строка PropertyName) {вар instanceParameterExpression = Expression.Parameter (TypeOf (TInstance)); вар parameterExpression = Expression.Parameter (TypeOf (TProperty), PropertyName); вар propertyValueExpression = Expression.Property (instanceParameterExpression, PropertyName); вар conversionExpression = propertyValueExpression. Тип == TypeOf (TProperty)? parameterExpression: (Выражение) Expression.Convert (parameterExpression, propertyValueExpression.Type); вар propertySetter = Expression.Lambda (Expression.Assign (propertyValueExpression, conversionExpression), instanceParameterExpression, parameterExpression) .Compile (); вернуться propertySetter; }}
Ehouarn Perret
1

голосов
2

ответ
1.3k

Просмотры

How to right align a in Bootstrap 4 card-body?

I am trying to right-align a in a Bootstrap 4 card-body, I tried to leverage the float-right class but it does not seem to work. Is there anything special in regard to images alignment in card-body? {{ pageTitle + ': ' + product?.productName }} Id: {{ product.productId }} Name: {{ product.productName }} Code: {{ product.productCode }} Release Date: {{ product.releaseDate }} Price: {{ product.price }} Description: {{ product.description }} Rating: Back to List Any idea?
Ehouarn Perret
5

голосов
0

ответ
517

Просмотры

NPM зависает при вызове в визуальных prebuild событий студии

Почему при запуске следующих команд в CMD (и текущий каталог является корневым моим визуальной студией проекта), все в порядке: НПЙ установить WebPack --config webpack.config.vendor.js WebPack Но когда прошу бежать, что в моем ASP.NET ядро ​​2.0 с Visual Studio 2017 он висит на первой линии (в то время как он не требует участия пользователя) .Когда я говорю, он висит, он висит около 3-5мин (после выполнения последней строки с помощью вызова), как делать буквально. Мне удалось получить немного дальше, используя вызов по каждому из них (который предлагается в документации MS для вызова .bat скриптов): вызов НОЙ установки вызова WebPack --config webpack.config.vendor.js вызова Webpack По некоторым причинам работы и висит только на последнюю строку. При попытке что-то простое, как эхо там все в порядке, я не» т действительно получить то, что не так с вышеупомянутыми линиями. [EDIT] уже проверил, что из НПМ висит на любую команду, но мой вопрос, кажется, отличается, так как она может работать CMD и PowerShell (но зависает, когда он запускается в закладке ISE PowerShell ...)
Ehouarn Perret
2

голосов
1

ответ
87

Просмотры

Почему мой ColumnAttribute не используется при извлечении данных из представления через SQLQuery с Entity Framework 6.x?

+ @ "И [On Group Call] NOT LIKE 'N / A'" + @ "И [On Group Call] НЕ НРАВИТСЯ" Decommisioned"; общественный IEnumerable Задание => Database.SqlQuery (AssignmentQuery); общественного StagingDbContext (): основание (nameof (StagingDbContext)) {}} [Table ( "Назначение")] общественный класс Задание {[Колонка ( "Регион")] общественная строка область {получить; задавать; } [Колонка ( "SiteID")] общественная строка SiteId {получить; задавать; } [Колонка ( "Техник")] общественный струна техник {получить; задавать; } [Колонка ( "Отправить")] общественная строка Email {получить; задавать; } [Колонка ( "On Group Call")] общественная строка OnCallGroup {получить; задавать; } [Колонка ( "Менеджер Email")] общественная строка ManagerEmail {получить; задавать; }} Моя проблема возникает тогда, когда дело доходит до имен свойств, которые не соответствуют точно те, представленные в запросе, я думал, что ColumnAttribute было принято во внимание, но, видимо, это не совсем так. Мой текущий обходной путь состоит в основном переименовать столбцы в моем SQL запросе ([Имя столбца] AS ColumnName для того, чтобы они соответствовали непосредственно к именам свойств моего объекта (например, удаление пробельных символов), но я нашел, что это немного неудобно переписать . Запрос исключительно для этой конкретной цели есть ли что-нибудь, что можно сделать, чтобы заставить SQLQuery к именам, предоставляемых моим ColumnAttributes вместо свойств [EDIT] Это было более или менее уже отвечал где-то еще: рамки Entity Code First - настроить отображение для SQLQuery Entity Framework с использованием базы данных.
Ehouarn Perret
2

голосов
3

ответ
84

Просмотры

Когда массив подлежит Garbage Collection?

Несколько лет назад я прочитал книгу CLR с помощью C # и другой день я получил спрашивает, может ли массив и еще есть немного озадачен, вопрос в том, чтобы выяснить, когда массив в ниже метод доступен для сбора мусора: открытые статические двойной ThingRatio) {входной вар (= новый [] {1, 1, 2, 3, 5, 8}; кол-переменная = input.Length; // Предположим, что ниже линии последнего использования входного массива вар thingCount = CountThings (вход); вход = NULL; возвращать (двойной) thingCount / счетчик; } Согласно полученному ответу здесь: Когда объект подлежит сборке мусора? в котором говорится: Они оба будут иметь право на коллекцию, как только они больше не нужны. Это означает, что при некоторых обстоятельствах, объекты могут быть собраны еще до конца области, в которой они были определены. С другой стороны, фактический сбор также может произойти гораздо позже. Я бы, как правило, говорят, что, начиная после строки 6 (то есть входной = NULL;) массив становится объектом GC, но я не уверен, что ... (я имею в виду массив не предположительно, конечно, больше не нужен после назначения, но и изо всех сил что это после того, как CountThings называют, но в то же время массив «необходимо» для нулевого назначения).
Ehouarn Perret
2

голосов
1

ответ
103

Просмотры

Как сделать асинхронное / ждать потоковое видео с помощью ASP.NET MVC?

Недавно я прочитал эту статью (https://blogs.ibs.com/2017/01/24/streaming-video-content-to-a-browser-using-web-api) о потоковом видео. Решение, предусмотренное в статье работает красиво, но мне было интересно, есть ли асинхронный / ждать альтернатив, поскольку статья показывает только решение, построенные вокруг HttpResponseMessage и я беспокоюсь о проблемах с производительностью?
Ehouarn Perret
1

голосов
2

ответ
323

Просмотры

Как оживить glyphicon шеврона при переключении панели самозагрузки 3?

У меня есть рабочий раствор для панели, завернутой в самозагрузках 3 аккордеона. Как я могу оживить изменение состояния шеврона из «>», чтобы «^» с поворотом на 90 градусов? .panel-заголовок .accordion-тумблер: после того, как {семейство шрифтов: 'Glyphicons Халфлинги'; Содержание: "\ E114"; плавать: право; Цвет: серый; } .Panel-заголовок .accordion-toggle.collapsed: после того, как {содержания: "\ E080"; } Ввоз Содержание: blahblah [EDIT] Ищу для плавного вращения, я уже как изменить состояние шеврона.
Ehouarn Perret
7

голосов
1

ответ
730

Просмотры

What are the benefits of C# 7 local functions over lambdas? [duplicate]

Этот вопрос уже есть ответ здесь: Локальная функция против Lambda C # 7,0 3 отвечает на дни в одном из моих утилит, ReSharper намекнул мне о куске коды ниже о том, что лямбда определения делегата ThreadStart может быть превращен в локальную функцию: общественный аннулируются Start (threadPriority threadPriority = ThreadPriority.Lowest) {если (Enabled) {_threadCancellationRequested = ложь; ThreadStart ThreadStart = () => NotificationTimer (ссылка _interval, ссылка _ignoreDurationThreshold, ссылка _threadCancellationRequested); Тема = новая тема (ThreadStart) {Priority = ThreadPriority.Lowest}; Thread.start (); }} И, следовательно, превращается в: общественное ничтожной Start (ThreadPriority threadPriority = ThreadPriority.Lowest) {если (! Включено) {_threadCancellationRequested = ложь; аннулированию ThreadStart () => NotificationTimer (ссылка _interval, ссылка _ignoreDurationThreshold реф _threadCancellationRequested); Тема = новая тема (ThreadStart) {Priority = ThreadPriority.Lowest}; Thread.start (); }} Каковы преимущества последнего над первым, это только о производительности? Я уже проверил ресурсы ниже, но в моем примере преимущество не так очевидно: https://asizikov.github.io/2016/04/15/thoughts-on-local-functions/ https: //www.infoworld .com / статьи / 3182416 / разработка приложений / с-7-углубленный-разведка-местный functions.html Тема = новая тема (ThreadStart) {Priority = ThreadPriority.Lowest}; Thread.start (); }} Каковы преимущества последнего над первым, это только о производительности? Я уже проверил ресурсы ниже, но в моем примере преимущество не так очевидно: https://asizikov.github.io/2016/04/15/thoughts-on-local-functions/ https: //www.infoworld .com / статьи / 3182416 / разработка приложений / с-7-углубленный-разведка-местный functions.html Тема = новая тема (ThreadStart) {Priority = ThreadPriority.Lowest}; Thread.start (); }} Каковы преимущества последнего над первым, это только о производительности? Я уже проверил ресурсы ниже, но в моем примере преимущество не так очевидно: https://asizikov.github.io/2016/04/15/thoughts-on-local-functions/ https: //www.infoworld .com / статьи / 3182416 / разработка приложений / с-7-углубленный-разведка-местный functions.html
Ehouarn Perret
2

голосов
1

ответ
62

Просмотры

Как читать содержимое файла в AppSettings подпроектов

Удивление, возможно ли это читать во время выполнения файла JSON / XML, содержащий грузы констант (независимо от того, это работает в области развития / производства) в проекте, который не является основным проектом в решении ASP.NET ядра? Я не принимая во внимание все движется к appsettings.json, и я не хочу конвертировать все в гигантский кусок класса. Obvisouly во время выполнения, если я бегу, что линия: Var configurationContent = File.ReadAllText (ConfigurationFileName); в то время как файл конфигурация находится в неосновном проекте, процесс будет выглядеть для этого файла в главном каталоге проекта. Как я могу исправить это?
Ehouarn Perret
3

голосов
0

ответ
716

Просмотры

Как настроить Azure VPN на стороне клиента для целей доступа в Интернет (Google за GFW)?

Я пытаюсь настроить VPN для целей доступа в Интернет (я в Китае за большой брандмауэр), но я не эксперт сети. Кто-то из Китая, который имеет Azure подписку создал пакет за предоставленную мне возможность подключиться к этой сети VPN с соответствующим сертификатом PFX и до сих пор все, кажется, хорошо, соединение может быть достигнуто с сервером, расположенным в Европе, сервер VPN является 172.16.0.1 Клиент VPN находится в пределах диапазона 172.16.0.X. О создании пакета он следовал: http://blogs.msdn.com/b/kaevans/archive/2015/06/05/configure-a-point-to-site-vpn-connection-to-an-azure-vnet .aspx Однако, когда я подключен к VPN я не имею никакого способа доступа к Google, я изо всех сил, чтобы подтвердить, является ли это конфигурация с моей стороны или только GFW, что Мессинг. Я' м борется о моей конфигурации потому что кажется, что нет никакой реальной связи с этим недавно определенным соединением: Я могу пинговать сервер связанного сервера, когда я подключен к VPN, но нет никакого способа, чтобы получить доступ к google.com, однако DNS разрешения имен поиска, кажется, работает, по крайней мере. Подключаясь к VPN операция поиска дает мне соответствующий результат и в то время как я не подключен к всемогущему VPN: Я все еще могу пинговать сервер VPN при подключении, и наоборот, когда я нет, что вполне нормально: Есть есть ли способ, чтобы проверить и решить, что доступ к интернет проходит через VPN? Я также имею в виду, может ли это быть результатом маршрутизации вопроса, но при проверке маршрута печати я получить следующий список, но я не вижу ничего плохого:
Ehouarn Perret
2

голосов
1

ответ
46

Просмотры

Clean code applied to .NET: avoid type checking with pattern matching involves a performance issue?

I was reading the Github repository about the Clean Code concepts applied to C#, and I was surprised that the pattern matching strategy was recommended for to avoid type checking (in addition https://github.com/thangchung/clean-code-dotnet#avoid-type-checking-part-1 I can understand when you don't really have the control over types defined in a third party, but other than that I think it might be definitely better to define an interface to process some actions. The example used in that repository is: // Bad: btw this example cannot even work, the methods are not defined in Object. Going to fork and PR. public Path TravelToTexas(object vehicle) { if (vehicle.GetType() == typeof(Bicycle)) { vehicle.PeddleTo(new Location("texas")); } else if (vehicle.GetType() == typeof(Car)) { vehicle.DriveTo(new Location("texas")); } } // Good: parent class / interface public Path TravelToTexas(Traveler vehicle) { vehicle.TravelTo(new Location("texas")); } or // Good: pattern matching public Path TravelToTexas(object vehicle) { if (vehicle is Bicycle bicycle) { bicycle.PeddleTo(new Location("texas")); } else if (vehicle is Car car) { car.DriveTo(new Location("texas")); } } Except that pattern matching switch / is translates into something equivalent to if / else if / else using the is operator (translated itself obj as TargetType != null) + some conditions (and the fact that you don't have to declare some variables upfront). My question is there any optimization that I am not aware of when using the pattern matching switch / is cause otherwise I don't really see the point of recommending this strategy...? And the extract take from: https://docs.microsoft.com/en-us/dotnet/csharp/pattern-matching#when-clauses-in-case-expressions To illustrate these new idioms, let's work with structures that represent geometric shapes using pattern matching statements. You are probably familiar with building class hierarchies and creating virtual methods and overridden methods to customize object behavior based on the runtime type of the object. Those techniques aren't possible for data that isn't structured in a class hierarchy. When data and methods are separate, you need other tools. The new pattern matching constructs enable cleaner syntax to examine data and manipulate control flow based on any condition of that data. You already write if statements and switch that test a variable's value. You write is statements that test a variable's type. Pattern matching adds new capabilities to those statements. It's not possible for example to use an Adapter pattern instead and basically wrap the entities of the third party into something on which you can have the control. I mean then except in the deadly case to get an uninformative object I don't really see the point of doing this.
Ehouarn Perret
1

голосов
3

ответ
749

Просмотры

Угловой 6 + Jquery + fullpage.js

Я пытаюсь использовать fullpage.js без NGX-fullapge и я столкнулся некоторые вопросы, связанные с импортом: Во-первых, кажется, что JQuery не работает, даже если пакет установки ... В очень простое определение класса AppComponent у меня есть: импорта {Компонент, OnInit} от '@ углового / сердцевина'; импорт * в $ от 'JQuery'; импорт * в качестве fullpagejs из 'fullpage.js'; @Component ({селектор: 'моя-приложение', templateUrl: './app.component.html', styleUrls: [»./app.component.css']}) экспорт класс AppComponent реализует OnInit {общественные элементы = [ 1, 2, 3]; общественный ngOnInit (): пустота {$ ( '# Вся страница')}} с очень простым шаблоном: Landing документом {{пункт}} Общая информация И angular.json имеет следующие сценарии: "сценарии": [ "./node_modules/jquery/dist/jquery.min.js", "./node_modules/fullpage.js/dist/jquery.fullpage.min.js"] И у меня есть ошибка ниже: ERROR Ошибка: $ не функция Я создал интернет-проект здесь, воспроизводящий вопрос: https://stackblitz.com/edit/angular-nrrujn Как я могу использовать как JQuery и fullpage.js в этом проекте? [EDIT] JQuery работает с импортом $ от 'JQuery'; но метод Всей страницы () из fullpage.js до сих пор не может быть найден. Я обновил stackblitz: https://stackblitz.com/edit/angular-nrrujn ком / редактировать / угловой nrrujn Как можно использовать как JQuery и fullpage.js в этом проекте? [EDIT] JQuery работает с импортом $ от 'JQuery'; но метод Всей страницы () из fullpage.js до сих пор не может быть найден. Я обновил stackblitz: https://stackblitz.com/edit/angular-nrrujn ком / редактировать / угловой nrrujn Как можно использовать как JQuery и fullpage.js в этом проекте? [EDIT] JQuery работает с импортом $ от 'JQuery'; но метод Всей страницы () из fullpage.js до сих пор не может быть найден. Я обновил stackblitz: https://stackblitz.com/edit/angular-nrrujn
Ehouarn Perret
2

голосов
1

ответ
42

Просмотры

Example of the Object Calisthenics First Class Collection rule in C#?

I am playing with the Object Calisthenics rules and I am having some troubles to see when to use the first class collections when using C#. I mean I hardly see when it's supposed to be used, for example it would be hard to apply that rule to an EF DbContext. Let's say, we design a Board class. public class Board { public IList Rows { get; } public IList Columns { get; } public Board() { Rows = new List(); Columns = new List(); } } So according to that rule, we would have to turn the code above into: // Is it really that better than just using List? public class BoardRowCollection : IEnumerable { public void Add(BoardRow row) { /*...*/ } public void Remove(BoardRow row) { /*...*/ } // IEnumerable Impl goes here... } // Is it really that better than just using List? public class BoardColumnCollection : IEnumerable { public void Add(BoardColumn column) { /*...*/ } public void Remove(BoardColumn column) { /*...*/ } // IEnumerable Impl goes here... } public class Board { public BoardRowCollection Rows { get; } public BoardColumnCollection Column { get; } // Rest of the impl, ctor, etc. } I am not really sure to get the point of this rule when you already have base classes that can be leveraged to achieve your goals. Maybe the code above is not the best but I would like to see one example which can shed the light on the purpose of that rule.
Ehouarn Perret
2

голосов
1

ответ
1.3k

Просмотры

Не удается установить .NET Сердечник 2.0 на Linux Mint 18.1.3

Почти так же , как: Не удается установить .NET Сердечник на Linux Mint 18.1 , за исключением , что я хочу , чтобы установить .NET Сердечник 2.0. Не следует шагам там: Установить .NET Сердечник для Ubuntu 14.04, Ubuntu 16.04, Ubuntu 16.10 и Linux Mint 17, Linux Mint 18 (64 бит) (без проблем на Manjaro) Перра @ Перо-ThinkPad-E460 ~ / Desktop / github.io $ свернуться https://packages.microsoft.com/keys/microsoft.asc | GPG --dearmor> microsoft.gpg% Всего% Полученное% Xferd Средняя скорость Время Время Время Ток DLOAD Загрузить Всего Затраченное Left Speed 983 100 100 983 0 0 2961 0 - -: - -: -: - -: -: - 2960 Перра @ Перо-ThinkPad-E460 ~ / Desktop / github.io $ Sudo мв microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg Перра @ Перо-ThinkPad-E460 ~ / Desktop / github.io $ Sudo ш -c «эхо "Деб [арка = amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-artful-prod коварного главный" > /etc/apt/sources.list.d/dotnetdev.list» Перо @ Перо-ThinkPad-E460~ / Desktop / github.io $ Sudo APT-получить обновление IGN: 1 http://mirrors.evowise.com/linuxmint/packages Sylvia InRelease Hit: 2 http://mirror.clibre.uqam.ca/ubuntu InRelease Хит дружественный : 3 http://mirror.clibre.uqam.ca/ubuntu-обновления дружественный InRelease Hit: 4 http://archive.canonical.com/ubuntu InRelease Hit дружественный: 5 http://mirror.clibre.uqam.ca/ убунт-Backports дружественного InRelease Hit: 6 http://mirrors.evowise.com/linuxmint/packages Sylvia Хит выпуска: 7 http://packages.microsoft.com/repos/vscode стабильной InRelease Хит: 8 HTTPS: // репо. skype.com/deb стабильный InRelease Получить: 9 http://security.ubuntu.com/ubuntu-безопасность дружественного InRelease [102 кБ] Получить: 10 https: // пакетов.microsoft.com/repos/microsoft-ubuntu-artful-prod коварный InRelease [2845 B] Получить: 12 https://packages.microsoft.com/repos/microsoft-ubuntu-artful-prod хитрых / amd64 основных пакетов [8946 B] Извлечена 114 кБ в 0s (195 Кбайт / с) Чтение списков пакетов ... Готово Перре @ Пере-ThinkPad-E460 ~ / Desktop / github.io $ Sudo APT-получить установку DotNet-СДК-2.1.3 Чтение списков пакетов ... Готово Построение дерева Чтение информации о состоянии зависимостей ... Готово Некоторые пакеты не могут быть установлены , Это может означать , что вы просите невозможного , или если вы используете нестабильную версию дистрибутива, где запрошенные вами пакеты ещё не созданы или были удалены из Incoming. Следующая информация может помочь разрешить ситуацию: Следующие пакеты имеют неудовлетворенные зависимости: DotNet-СДК-2.1.3: Зависит: DotNet-среда-2.0.4 , но он не будет установлен E: Невозможно исправить ошибки, у вас есть проведены сломанные пакеты. Кстати, то же самое происходит с: Dotnet-СДК-2.1.4 и Dotnet-выполнениями-2.0.5 Так что я пытался выкопать немного больше: Перра @ Перо-ThinkPad-E460~ / Desktop / github.io $ Sudo APT-получить установку DotNet-среда-2.0.4 Чтение списков пакетов ... Готово Построение дерева Чтение информации о состоянии зависимостей ... Готово Некоторые пакеты не могут быть установлены. Это может означать, что вы просите невозможного, или если вы используете нестабильную версию дистрибутива, где запрошенные вами пакеты ещё не созданы или были удалены из Incoming. Следующая информация может помочь разрешить ситуацию: Следующие пакеты имеют неудовлетворенные зависимости: DotNet-времени выполнения-2.0.4: Зависит: libgssapi-krb5-2 (> = 1,14 + DFSG), но 1.13.2 + DFSG-5ubuntu2 должен быть установлен E: Невозможно исправить ошибки, вы провели битые пакеты. Получил libgssapi-krb5-2_1.13.2 + DFSG-5ubuntu2 себя: https://packages.ubuntu.com/xenial-updates/amd64/libgssapi-krb5-2/download Но понял, что версия слишком стара ... 1,13 0,2 (т.е.
Ehouarn Perret