投稿時間:2021-10-11 03:10:56 RSSフィード2021-10-11 03:00 分まとめ(12件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
js JavaScriptタグが付けられた新着投稿 - Qiita 【覚書】JSDoc + ts-check で as any as を実現する https://qiita.com/katai5plate/items/9405cecf11045b79bf64 【覚書】JSDoctscheckでasanyasを実現するtscheckでJSを書いていて、asanyasとかasunknownasとかTasanyhogeとかみたいな書き方がしたくなったので調べた。 2021-10-11 02:10:36
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) Index 1 out of bounds for length 1 というエラーが取り除けません https://teratail.com/questions/363800?rss=all Indexoutofboundsforlengthというエラーが取り除けません前提・実現したいことcount個の整数型データを入力し、降順に並び替えるプログラム。 2021-10-11 02:09:21
Docker dockerタグが付けられた新着投稿 - Qiita 【備忘録】【環境構築】Docker + Ruby on Rails + ReactでSPA化 https://qiita.com/asami___t/items/256f76c3c8a9bd5d0732 【備忘録】【環境構築】DockerRubyonRailsReactでSPA化RailsとReactを使ってSPA化したWebアプリをDocker環境で作ろうとして、結構苦労したため、自分用のメモとして残します。 2021-10-11 02:20:25
Ruby Railsタグが付けられた新着投稿 - Qiita 【備忘録】【環境構築】Docker + Ruby on Rails + ReactでSPA化 https://qiita.com/asami___t/items/256f76c3c8a9bd5d0732 【備忘録】【環境構築】DockerRubyonRailsReactでSPA化RailsとReactを使ってSPA化したWebアプリをDocker環境で作ろうとして、結構苦労したため、自分用のメモとして残します。 2021-10-11 02:20:25
海外TECH DEV Community Is Machine Learning generated music finally useful? [for Indie Game Devs] https://dev.to/inhuofficial/is-machine-learning-generated-music-finally-useful-for-indie-game-devs-1flp Is Machine Learning generated music finally useful for Indie Game Devs A short post about a service I stumbled across called AIVA I have been working on systemising my processes for content creation One thing that I want to do is to create some YouTube shorts minute videos same as TikTok Instagram stories type videos and I was looking for some subtle background music that wouldn t be copyrighted While searching I stumbled across a service to generate AI music As with anything new and interesting I had to have a play First impressionsIt was easy to use even for a dummy like me You just select a few things such as what style of music instrumentation you want duration up to minutes for free tier tempo key and time signature and then select how many tracks you want the AI to produce up to at a time Then you press Create Your Track and wait for a minute or two You can then listen to the AI masterpiece or disaster Consistency resultsFrom about tracks I generated I would say that in tracks are decent enough that you could possibly use them a lot of them end up with too heavy a drum beat or some weird transitions etc Despite that I am impressed with the results Good enough for Indie game developers They aren t perfect but if you have next to no budget for sound tracks they will probably be good enough I found about tracks that I think would work for a low budget Indie game which isn t bad considering I did no editing on the tracks other than removing some weird bits from the end of the first example below With a bit of work and tweaking I imagine you could make them feel like high quality pieces composed just for the game Or at the very least use them as inspiration pieces to make the ideation part of music design a lot shorter and therefore a lot cheaper ExamplesHere are three examples I downloaded of tracks that I think are pretty much good enough for usage I have given them some fun names and the sort of game I think they would work for enjoy AIVAs work Example DrAIgon born Example PAIrates Adventures Example In SpAIce no one can hear you scrAIm So what do you think Do you think Machine Learning has come far enough to generate some useful music sound tracks Could you picture a game with one of these sound tracks in it I personally think some of the Hip Hop Low Fi and Easy Listening stuff it produces would make great background music for streams and videos the main reason I am exploring the service with a very slim chance of a copyright strike I would encourage you to have a play yourself and see what you think Quick PollCover image Unsplash 2021-10-10 17:52:10
海外TECH DEV Community How to Enable SSL for Local Laravel Sail Development Caddy and Docker https://dev.to/adrianmejias/how-to-enable-ssl-for-local-development-using-laravel-sail-and-docker-51ee How to Enable SSL for Local Laravel Sail Development Caddy and DockerLet s talk SSL and local development don t worry I ve been searching too There is an issue with developing locally not just with Laravel where developers who are building saas products aren t able to get a clean setup for SSL in the browser This makes setting things up like PWAs or Google sign in buttons impossible if the certificate isn t valid Given the power of Docker and Caddy the dream is real You can absolutely use this for non Laravel Sail web applications as well The end result of implementing the code below should give you a couple of certificates intermediate crt laravel test crt that you can install to your local system GitHub Gist Directory Structuredocker caddy authorities intermediate crt certificates laravel test laravel test crt CaddyfileDockerfilestart containerdocker compose yml Files docker compose yml laravel test Comment or remove ports ports APP PORT caddy build context docker caddy dockerfile Dockerfile args WWWGROUP WWWGROUP restart unless stopped ports APP PORT APP SSL PORT environment LARAVEL SAIL HOST DOMAIN laravel test volumes docker caddy Caddyfile etc caddy Caddyfile srv cache docker caddy certificates data caddy certificates local docker caddy authorities data caddy pki authorities local sailcaddy data cache sailcaddyconfig config cache networks sail depends on laravel test volumes sailcaddy external true sailcaddyconfig driver local docker caddy DockerfileFROM caddy alpineLABEL maintainer Adrian Mejias ARG WWWGROUPENV DEBIAN FRONTEND noninteractiveENV TZ UTCRUN ln snf usr share zoneinfo TZ etc localtime amp amp echo TZ gt etc timezoneRUN apk add no cache bash amp amp apk add no cache nss tools amp amp rm rf var cache apk RUN addgroup S WWWGROUPRUN adduser G WWWGROUP u S sailCOPY start container usr local bin start containerRUN chmod x usr local bin start containerENTRYPOINT start container docker caddy start container usr bin env shif z WWWUSER then addgroup WWWUSER sailfiif gt then todo find alpine equivilent of below exec gosu WWWUSER else usr bin caddy run config etc caddy Caddyfile adapter caddyfilefi docker caddy Caddyfile admin off debug on demand tls ask local certs reverse proxy laravel test header up Host host header up X Real IP remote header up X Forwarded Host host header up X Forwarded For remote header up X Forwarded Port header up X Forwarded Proto scheme health timeout s tls internal on demand reverse proxy laravel test header up Host host header up X Real IP remote header up X Forwarded Host host header up X Forwarded For remote header up X Forwarded Port header up X Forwarded Proto scheme health timeout s app Http Controllers CaddyController php lt phpnamespace App Http Controllers use Illuminate Http Request class CaddyController extends Controller Display a listing of the resource param Illuminate Http Request request return Illuminate Http Response public function invoke Request request if in array request gt query domain config caddy authorized return response Domain Authorized abort config caddy php lt phpreturn Authorized Domains Domains that are authorized to be viewed through Caddy authorized gt laravel test app laravel test app Http Middleware TrustProxies php lt phpnamespace App Http Middleware use Illuminate Http Middleware TrustProxies as Middleware use Illuminate Http Request class TrustProxies extends Middleware The trusted proxies for this application var array string null protected proxies Add wildcard or specific domain s The headers that should be used to detect proxies var int protected headers Request HEADER X FORWARDED FOR Request HEADER X FORWARDED HOST Request HEADER X FORWARDED PORT Request HEADER X FORWARDED PROTO Request HEADER X FORWARDED AWS ELB routes web php lt phpuse App Http Controllers CaddyController Web Routes Here is where you can register web routes for your application These routes are loaded by the RouteServiceProvider within a group which contains the web middleware group Now create something great Route get caddy CaddyController class gt name caddy 2021-10-10 17:21:02
海外TECH DEV Community Dotnet code generation overview by example https://dev.to/maximtkachenko/dotnet-code-generation-overview-by-example-1m16 Dotnet code generation overview by example IntroductionCode generation is a very interesting topic Instead of just writing code you can write code to write code You can do code generation at compile time new fancy source generators and at runtime expressions emit IL Anyway the idea to create methods and classes at runtime sounds like a magic to me Runtime code generation feature is used quite heavily under the hood of DI frameworks ORMs different types of object mappers etc Now when I have a sufficient understanding of the topic I realized that in the past I had some tasks which could be solved in more efficient and elegant way by using code generation Unfortunately during those times I knew nothing about it Searching the internet gave me results with quite high entry threshold and they didn t give an entire understanding of the feature Most of examples in articles are quite trivial so it s still unclear how to apply it in practice Here as the first step I want to describe a particular problem which could be solved with metaprogramming and then to give an overview of different code generation approaches There will be a lot of code Task descriptionLet s imagine our application receives a data from some source as an array of strings for simplicity only string integer and datetime values are expected in an input array John McClane T I need a generic way to parse this input into the instance of a particular class This is an interface to create a parser delegate i e it accepts an array of strings as the input and returns an instance of T as the output public interface IParserFactory Func lt string T gt GetParser lt T gt where T new I use ParserOutputAttribute to identify classes used as parser s output And I use ArrayIndexAttribute to understand which property corresponds to each of the array elements ParserOutput public class Data ArrayIndex public string Name get set will be John McClane ArrayIndex public int Number get set will be ArrayIndex public DateTime Birthday get set will be T If array element can t be parsed to the target type then it s ignored So as a general idea I don t want to limit implementation by Data class only I want to produce a parser delegate for any type with the proper attributes Plain C First of all I want to write a plain C code without code generation or reflection at all for a known type var data new Data if lt inputArray Length data Name inputArray if lt inputArray Length amp amp DateTime TryParse inputArray out var bd data Birthday bd if lt inputArray Length amp amp int TryParse inputArray out var n data Number n return data Quite simple right But now I want to generate the same code for an arbitrary type at runtime or compile time Let s go ReflectionIn the first approach with reflection I m not going to generate a parser delegate Instead I m going to create an instance of the target type and set its properties using reflection API public class ReflectionParserFactory IParserFactory public Func lt string T gt GetParser lt T gt where T new return ArrayIndexParse lt T gt private static T ArrayIndexParse lt T gt string data where T new create a new instance of target type var instance new T var props typeof T GetProperties BindingFlags Instance BindingFlags Public go through all public and non static properties read and parse corresponding element in array and if success set property value for int i i lt props Length i var attrs props i GetCustomAttributes typeof ArrayIndexAttribute ToArray if attrs Length continue int order ArrayIndexAttribute attrs Order if order lt order gt data Length continue if props i PropertyType typeof string props i SetValue instance data order continue if props i PropertyType typeof int if int TryParse data order out var intResult props i SetValue instance intResult continue if props i PropertyType typeof DateTime if DateTime TryParse data order out var dtResult props i SetValue instance dtResult return instance It works and it s quite readable But it s slow check benchmarks section below too If you want to call this code very often it could be an issue I want to implement something more sophisticated using real code generation Code generation Expression treesFrom the official documentation Expression trees represent code in a tree like data structure where each node is an expression for example a method call or a binary operation such as x lt y You can compile and run code represented by expression trees How to execute expression treesExpression classesExpression trees give primitive building blocks like Expression Call to call a method Expression Loop to add some repeating logic etc Then using these blocks we build a parser delegate as a tree of instructions and finally compile it into the delegate at runtime public class ExpressionTreeParserFactory IParserFactory public Func lt string T gt GetParser lt T gt where T new var props typeof T GetProperties BindingFlags Instance BindingFlags Public declare an input parameter of the delegate ParameterExpression inputArray Expression Parameter typeof string inputArray declare an output parameter of the delegate ParameterExpression instance Expression Variable typeof T instance create a new instance of target type var block new List lt Expression gt Expression Assign instance Expression New typeof T GetConstructors var variables new List lt ParameterExpression gt instance go through all public and non static properties foreach var prop in props var attrs prop GetCustomAttributes typeof ArrayIndexAttribute ToArray if attrs Length continue int order ArrayIndexAttribute attrs Order if order lt continue validate an index from ArrayIndexAttribute var orderConst Expression Constant order var orderCheck Expression LessThan orderConst Expression ArrayLength inputArray if prop PropertyType typeof string set string property var stringPropertySet Expression Assign Expression Property instance prop Expression ArrayIndex inputArray orderConst block Add Expression IfThen orderCheck stringPropertySet continue get parser method from the list of available parsers currently we parse only Int and DateTime if TypeParsers Parsers TryGetValue prop PropertyType out var parser continue var parseResult Expression Variable prop PropertyType parseResult var parserCall Expression Call parser Expression ArrayIndex inputArray orderConst parseResult var propertySet Expression Assign Expression Property instance prop parseResult set property if an element of array is successfully parsed var ifSet Expression IfThen parserCall propertySet block Add Expression IfThen orderCheck ifSet variables Add parseResult block Add instance compile lambda expression into delegate return Expression Lambda lt Func lt string T gt gt Expression Block variables ToArray Expression Block block inputArray Compile Emit ILDotnet compiler transforms your C code into intermediate language CIL or just IL and then dotnet runtime translates IL into machine instructions For instance using sharplab io you can easily check how generated IL will look like System Reflection EmitHow to Define and Execute Dynamic MethodsOpCodes listReSharper IL viewerHere we are going to write emit IL instructions directly and then compile them into the delegate at runtime public class EmitIlParserFactory IParserFactory public Func lt string T gt GetParser lt T gt where T new var props typeof T GetProperties BindingFlags Instance BindingFlags Public var dm new DynamicMethod from typeof string FullName to typeof T FullName typeof T new typeof string typeof EmitIlParserFactory Module var il dm GetILGenerator create a new instance of target type var instance il DeclareLocal typeof T il Emit OpCodes Newobj typeof T GetConstructors il Emit OpCodes Stloc instance go through all public and non static properties foreach var prop in props var attrs prop GetCustomAttributes typeof ArrayIndexAttribute ToArray if attrs Length continue int order ArrayIndexAttribute attrs Order if order lt continue var label il DefineLabel if prop PropertyType typeof string check whether order from ArrayIndexAttribute is a valid index of the input array il Emit OpCodes Ldc I order il Emit OpCodes Ldarg il Emit OpCodes Ldlen il Emit OpCodes Bge S label set string property il Emit OpCodes Ldloc instance il Emit OpCodes Ldarg il Emit OpCodes Ldc I order il Emit OpCodes Ldelem Ref il Emit OpCodes Callvirt prop GetSetMethod il MarkLabel label continue get parser method from the list of available parsers currently we parse only Int and DateTime if TypeParsers Parsers TryGetValue prop PropertyType out var parser continue check whether order from ArrayIndexAttribute is a valid index of the input array il Emit OpCodes Ldc I order il Emit OpCodes Ldarg il Emit OpCodes Ldlen il Emit OpCodes Bge S label var parseResult il DeclareLocal prop PropertyType il Emit OpCodes Ldarg il Emit OpCodes Ldc I order il Emit OpCodes Ldelem Ref il Emit OpCodes Ldloca parseResult il EmitCall OpCodes Call parser null il Emit OpCodes Brfalse S label set property if an element of array is successfully parsed il Emit OpCodes Ldloc instance il Emit OpCodes Ldloc parseResult il Emit OpCodes Callvirt prop GetSetMethod il MarkLabel label il Emit OpCodes Ldloc instance il Emit OpCodes Ret create delegate from il instructions return Func lt string T gt dm CreateDelegate typeof Func lt string T gt SigilA fail fast validating helper for NET CIL generationThis approach is quite similar to the previous one but now we use sigil which gives us a syntax sugar and more understandable error messages public class SigilParserFactory IParserFactory public Func lt string T gt GetParser lt T gt where T new var props typeof T GetProperties BindingFlags Instance BindingFlags Public var il Emit lt Func lt string T gt gt NewDynamicMethod from typeof string FullName to typeof T FullName var instance il DeclareLocal lt T gt il NewObject lt T gt il StoreLocal instance foreach var prop in props var attrs prop GetCustomAttributes typeof ArrayIndexAttribute ToArray if attrs Length continue int order ArrayIndexAttribute attrs Order if order lt continue var label il DefineLabel if prop PropertyType typeof string il LoadConstant order il LoadArgument il LoadLength lt string gt il BranchIfGreaterOrEqual label il LoadLocal instance il LoadArgument il LoadConstant order il LoadElement lt string gt il CallVirtual prop GetSetMethod il MarkLabel label continue if TypeParsers Parsers TryGetValue prop PropertyType out var parser continue il LoadConstant order il LoadArgument il LoadLength lt string gt il BranchIfGreaterOrEqual label var parseResult il DeclareLocal prop PropertyType il LoadArgument il LoadConstant order il LoadElement lt string gt il LoadLocalAddress parseResult il Call parser il BranchIfFalse label il LoadLocal instance il LoadLocal parseResult il CallVirtual prop GetSetMethod il MarkLabel label il LoadLocal instance il Return return il CreateDelegate Cache compiled parsersWe have implemented three approaches to create a parser delegate expression tree emit IL and sigil In all cases we have the same problem IParserFactory GetParser does a hard job builiding an expression tree or emitting IL and then creating delegate every time you call it Solution is quite simple just cache it public class CachedParserFactory IParserFactory private readonly IParserFactory realParserFactory private readonly ConcurrentDictionary lt string Lazy lt object gt gt cache public CachedParserFactory IParserFactory realParserFactory realParserFactory realParserFactory cache new ConcurrentDictionary lt string Lazy lt object gt gt public Func lt string T gt GetParser lt T gt where T new return Func lt string T gt cache GetOrAdd aip realParserFactory GetType FullName typeof T FullName new Lazy lt object gt gt realParserFactory GetParser lt T gt LazyThreadSafetyMode ExecutionAndPublication Value Now we reuse compiled versions of delegates which is more efficient Roslyn based approachesRoslyn is a dotnet compiler platform which doesn t only compile code but gives an ability to do syntax analysis and to generate code Roslyn runtime code generationUsing Roslyn to build object to object mapperRoslyn approach is quite interesting because it gives an ability to write plain C as a string though instead of writing IL instructions or combining expression tree blocks public static class RoslynParserInitializer public static IParserFactory CreateFactory get all types marked with ParserOutputAttribute var targetTypes from a in AppDomain CurrentDomain GetAssemblies from t in a GetTypes let attributes t GetCustomAttributes typeof ParserOutputAttribute true where attributes null amp amp attributes Length gt select t ToArray var typeNames new List lt string TargetTypeName string TargetTypeFullName string TargetTypeParserName gt var builder new StringBuilder builder AppendLine using System using Parsers Common public class RoslynGeneratedParserFactory IParserFactory go through all types foreach var targetType in targetTypes var targetTypeName targetType Name var targetTypeFullName targetType FullName var targetTypeParserName targetTypeName Parser typeNames Add targetTypeName targetTypeFullName targetTypeParserName generate private parser method for each target type builder AppendLine private static T targetTypeParserName lt T gt string input builder Append var targetTypeName Instance new targetTypeFullName var props targetType GetProperties BindingFlags Instance BindingFlags Public go through all properties of the target type foreach var prop in props var attrs prop GetCustomAttributes typeof ArrayIndexAttribute ToArray if attrs Length continue int order ArrayIndexAttribute attrs Order if order lt continue if prop PropertyType typeof string builder Append if order lt input Length targetTypeName Instance prop Name input order if prop PropertyType typeof int builder Append if order lt input Length amp amp int TryParse input order out var parsed prop Name targetTypeName Instance prop Name parsed prop Name if prop PropertyType typeof DateTime builder Append if order lt input Length amp amp DateTime TryParse input order out var parsed prop Name targetTypeName Instance prop Name parsed prop Name builder Append object obj targetTypeName Instance return T obj builder AppendLine public Func lt string T gt GetParser lt T gt where T new foreach var typeName in typeNames builder Append if typeof T typeof typeName TargetTypeFullName return typeName TargetTypeParserName lt T gt builder AppendLine throw new NotSupportedException builder AppendLine var syntaxTree CSharpSyntaxTree ParseText builder ToString reference assemblies string assemblyName Path GetRandomFileName var refPaths new List lt string gt typeof Object GetTypeInfo Assembly Location typeof Enumerable GetTypeInfo Assembly Location Path Combine Path GetDirectoryName typeof GCSettings GetTypeInfo Assembly Location System Runtime dll typeof RoslynParserInitializer GetTypeInfo Assembly Location typeof IParserFactory GetTypeInfo Assembly Location Path Combine Path GetDirectoryName typeof GCSettings GetTypeInfo Assembly Location netstandard dll refPaths AddRange targetTypes Select x gt x Assembly Location var references refPaths Select r gt MetadataReference CreateFromFile r ToArray compile dynamic code var compilation CSharpCompilation Create assemblyName syntaxTrees new syntaxTree references references options new CSharpCompilationOptions OutputKind DynamicallyLinkedLibrary compile assembly using var ms new MemoryStream var result compilation Emit ms to get a proper errors if result Success throw new Exception string Join result Diagnostics Where diagnostic gt diagnostic IsWarningAsError diagnostic Severity DiagnosticSeverity Error Select x gt x GetMessage ms Seek SeekOrigin Begin load assembly from memory var assembly AssemblyLoadContext Default LoadFromStream ms var factoryType assembly GetType RoslynGeneratedParserFactory if factoryType null throw new NullReferenceException Roslyn generated parser type not found create an instance of freshly generated parser factory return IParserFactory Activator CreateInstance factoryType Source generatorOverview of source generators from the official documentationSource generator gives a very interesting ability of building parser s delegate during the compilation step i e in advance So in that case we don t have any runtime overhead to build a parser delegate at the first time which is amazing Generator public class ParserSourceGenerator ISourceGenerator public void Initialize GeneratorInitializationContext context uncomment to debug System Diagnostics Debugger Launch public void Execute GeneratorExecutionContext context var compilation context Compilation var parserOutputTypeSymbol compilation GetTypeByMetadataName Parsers Common ParserOutputAttribute var attributeIndexTypeSymbol compilation GetTypeByMetadataName Parsers Common ArrayIndexAttribute var typesToParse new List lt ITypeSymbol gt foreach var syntaxTree in compilation SyntaxTrees var semanticModel compilation GetSemanticModel syntaxTree get all types marked with ParserOutputAttribute typesToParse AddRange syntaxTree GetRoot DescendantNodesAndSelf OfType lt ClassDeclarationSyntax gt Select x gt semanticModel GetDeclaredSymbol x OfType lt ITypeSymbol gt Where x gt x GetAttributes Select a gt a AttributeClass Any b gt b parserOutputTypeSymbol var typeNames new List lt string TargetTypeName string TargetTypeFullName string TargetTypeParserName gt var builder new StringBuilder builder AppendLine using System using Parsers Common namespace BySourceGenerator public class Parser IParserFactory go through all types foreach var typeSymbol in typesToParse var targetTypeName typeSymbol Name var targetTypeFullName GetFullName typeSymbol var targetTypeParserName targetTypeName Parser typeNames Add targetTypeName targetTypeFullName targetTypeParserName builder AppendLine private static T targetTypeParserName lt T gt string input builder Append var targetTypeName Instance new targetTypeFullName var props typeSymbol GetMembers OfType lt IPropertySymbol gt go through all properties of the target type foreach var prop in props var attr prop GetAttributes FirstOrDefault x gt x AttributeClass attributeIndexTypeSymbol if attr null attr ConstructorArguments Value is int continue int order int attr ConstructorArguments Value if order lt continue if GetFullName prop Type System String builder Append if order lt input Length targetTypeName Instance prop Name input order if GetFullName prop Type System Int builder Append if order lt input Length amp amp int TryParse input order out var parsed prop Name targetTypeName Instance prop Name parsed prop Name if GetFullName prop Type System DateTime builder Append if order lt input Length amp amp DateTime TryParse input order out var parsed prop Name targetTypeName Instance prop Name parsed prop Name builder Append object obj targetTypeName Instance return T obj builder AppendLine public Func lt string T gt GetParser lt T gt where T new foreach var typeName in typeNames builder Append if typeof T typeof typeName TargetTypeFullName return typeName TargetTypeParserName lt T gt builder AppendLine throw new NotSupportedException builder AppendLine var src builder ToString context AddSource ParserGeneratedBySourceGenerator cs SourceText From src Encoding UTF private static string GetFullName ITypeSymbol typeSymbol gt typeSymbol ContainingNamespace typeSymbol Name BenchmarksThe post wouldn t be comprehensive without benchmarks I would like to compare two things warm up step i e generation of parser invocation of already generated parser Benchmarks are measured using BenchmarkDotNet μs microsecond ns nanosecond μs ns BenchmarkDotNet v OS Windows H MayUpdate Intel Core i U CPU GHz Kaby Lake R CPU logical and physical cores NET SDK Host NET X RyuJIT DefaultJob NET X RyuJIT Generation of parser Method Mean ErrorStdDevGen Gen Gen AllocatedEmitIl μs μs μs KBExpressionTree μs μs μs KBSigil μs μs μs KBRoslyn μs μs μs KB Invocation of parser Method MeanErrorStdDevRatioRatioSDGen AllocatedEmitIl ns ns ns BExpressionTree ns ns ns BReflection ns ns ns BSigil ns ns ns BRoslyn ns ns ns BSourceGenerator ns ns ns BManuallyWritten ns ns ns BAll approaches besides direct usage of reflection give results almost identical to manually written C parser Source codeHere is github repository with parser factories unit tests and benchmarks 2021-10-10 17:06:55
Apple AppleInsider - Frontpage News FaceTime suddenly starts working in UAE after years of blocks https://appleinsider.com/articles/21/10/10/facetime-suddenly-starts-working-in-uae-after-years-of-blocks?utm_medium=rss FaceTime suddenly starts working in UAE after years of blocksFaceTime is apparently fully functional in the United Arab Emirates a territory that has persisted in banning Apple s video chat service over the last decade Since the launch of FaceTime usage of the service in the U A E has been minimal with the country s Telecommunications and Digital Government Regulatory Authority preventing internet calling apps such as Skype and WhatsApp from working within its borders However on Sunday journalists from the Associated Press found that typical blocks that stopped FaceTime voice and video calls were apparently lifted with good quality video and audio for calls made both within the country and to foreign contacts Read more 2021-10-10 17:01:46
海外TECH Engadget Blue Origin delays William Shatner's spaceflight to October 13th https://www.engadget.com/blue-origin-shatner-flight-delay-171339388.html?src=rss Blue Origin delays William Shatner x s spaceflight to October thYou ll have to wait ever so slightly longer to see Star Trek actor William Shatner head to space Blue Origin has delayed Shatner s launch aboard NS by a day to October th at AM Eastern following predictions of strong winds in West Texas The rough weather was the quot only gating factor quot Blue Origin said in a statement noting that the passengers began their training today October th Shatner s flight is a publicity grab on multiple levels It s no secret that Jeff Bezos outfit is eager to have Captain Kirk reach space but Shatner will also be the oldest person to make such a journey at years old The previous record setter aviation legend Wally Funk traveled aboard a Blue Origin flight at years old Other passengers include Blue Origin mission VP Audrey Powers and two corporate executives Planet Labs Chris Boshuizen and Medidata s Glen de Vries The timing isn t great beyond the weather The liftoff will come just weeks after an essay described a quot toxic environment quot at Blue Origin including an alleged reluctance to deal with sexual harassment as well as poor attitudes toward safety the environment and basic internal criticism Shatner s flight might create positive buzz but it might also paper over issues within Blue Origin s ranks Due to forecasted winds in West Texas we are pushing NS launch target to Wednesday October Liftoff is targeted for am CDT UTC Live broadcast begins at T mins on Stay tuned for more details ーBlue Origin blueorigin October 2021-10-10 17:13:39
ビジネス ダイヤモンド・オンライン - 新着記事 競合他社製品と比較して高額のiPhoneが、なぜ、いまだに高いシェアを誇っているのか? - アーキテクト思考 https://diamond.jp/articles/-/284214 混迷の時代を生きるために必要な新しいビジネスの思考力とは何か。 2021-10-11 02:50:00
ビジネス ダイヤモンド・オンライン - 新着記事 風水で完ぺきを目指すと 必ず失敗する理由 - どんな運も、思いのまま! 李家幽竹の風水大全 https://diamond.jp/articles/-/283396 風水で完ぺきを目指すと必ず失敗する理由どんな運も、思いのまま李家幽竹の風水大全「どんな人でも運がよくなれる」、それが風水の持つ力です。 2021-10-11 02:45:00
ビジネス ダイヤモンド・オンライン - 新着記事 直接会わなくても「売れる営業マン」が大事にしている2つのこと - [新版]「3つの言葉」だけで売上が伸びる質問型営業 https://diamond.jp/articles/-/284346 そして、オンライン営業のスキルを加えてパワーアップしたのが、『新版「つの言葉」だけで売上が伸びる質問型営業』。 2021-10-11 02:40:00

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)