Giter VIP home page Giter VIP logo

<title>Vee-validate V4 - lazy validation not working - rule is being called on each keystroke about vee-validate HOT 5 CLOSED

davidkjackson54 avatar davidkjackson54 commented on May 25, 2024
Vee-validate V4 - lazy validation not working - rule is being called on each keystroke<p>from vee-validate.</p></section> </section> </article> <article> <h2 class="h2">Comments (5)</h2> <section class="issue-comment"> <section id="2081585315" class="issue-head"> <img class="issue-avatar" src="https://avatars.githubusercontent.com/u/6261322?s=30&u=b3994de4d3a7adb7e9f5d303c5689fc2079d00ae&v=4" alt="logaretm avatar" /> <a class="issue-username" href="/logaretm">logaretm</a> <span class="issue-time"> commented on May 25, 2024 </span> </section> <section class="markdown markdown-js p-5"><p dir="auto">This was reported a lot of times and is intended.</p> <p dir="auto">Validation being lazy means the errors are generated lazily, but the validation still occurs. This is because the <code class="notranslate">meta.valid</code> flag must be correct, there is no way around it in terms of whate vee-validate can do. Either we make the <code class="notranslate">valid</code> flag incorrect till a validation is executed or we run rules implicitly like we do now.</p> <p dir="auto">This behavior existed in v2, v3 where the <code class="notranslate">valid</code> flag could've a value of <code class="notranslate">null</code> to indicate that it never ran any validations yet, but people confused it with <code class="notranslate">false</code> and rightfully so, it is a falsy value. And it caused a lot of issues to be reported. So it's either I satisfy this camp or that camp. No in between.</p> <p dir="auto">This means there is no solution for it, but there might be workarounds you can employ:</p> <ul dir="auto"> <li>Caching the input value within the validator so if the user types it again for the same input, it won't execute the expensive request.</li> <li>Empty values usually are falsy for this kind of validation, right? you can skip running it all together if the value is empty within the validator logic.</li> <li>You can debounce the network requests ensure only one validation is run every 300 ms or so, you can further chain the validation results promises to return the value of the last validation run. Many techniques exist for async debouncing.</li> </ul> <p dir="auto">Unfortunately its all user-land, any changes here means a breaking change and that's reserved for v5.</p><p>from vee-validate.</p></section> </section> <section class="issue-comment"> <section id="2081601737" class="issue-head"> <img class="issue-avatar" src="https://avatars.githubusercontent.com/u/46171060?s=30&u=69b8830a926233d190882a585c8c16c6372aa15c&v=4" alt="davidkjackson54 avatar" /> <a class="issue-username" href="/davidkjackson54">davidkjackson54</a> <span class="issue-time"> commented on May 25, 2024 </span> </section> <section class="markdown markdown-js p-5"><div class="email-fragment">Ok thanks. At least I know now that it is working without any means to stop it from within vee-validate itself and me driving myself mad trying to see what was wrong. My problem is that if the user types in ABCD123456 , my rules routine is going to get called with A and I would issue the rest call passing A , then the user adds the B and I do it all again and pass AB So I will have to try to come up with a hack. Thanks David</div> <span class="email-hidden-toggle"><a href="#">…</a></span><div class="email-hidden-reply"> <div class="email-quoted-reply">On Sun, Apr 28, 2024 at 11:18 AM Abdelrahman Awad ***@***.***> wrote: This was reported a lot of times and is intended. Validation being lazy means the errors are generated lazily, but the validation still occurs. This is because the meta.valid flag must be correct, there is no way around it in terms of whate vee-validate can do. Either we make the valid flag incorrect till a validation is executed or we run rules implicitly like we do now. This behavior existed in v2, v3 where the valid flag could've a value of null to indicate that it never ran any validations yet, but people confused it with false and rightfully so, it is a falsy value. And it caused a lot of issues to be reported. So it's either I satisfy this camp or that camp. No in between. This means there is no solution for it, but there might be workarounds you can employ: - Caching the input value within the validator so if the user types it again for the same input, it won't execute the expensive request. - Empty values usually are falsy for this kind of validation, right? you can skip running it all together if the value is empty within the validator logic. - You can debounce the network requests ensure only one validation is run every 300 ms or so, you can further chain the validation results promises to return the value of the last validation run. Many techniques exist for async debouncing. Unfortunately its all user-land, any changes here means a breaking change and that's reserved for v5. — Reply to this email directly, view it on GitHub <<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2267039294" data-permission-text="Title is private" data-url="https://github.com/logaretm/vee-validate/issues/4737" href="https://github.com/logaretm/vee-validate/issues/4737#issuecomment-2081585315">#4737 (comment)</a>>, or unsubscribe <<a href="https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU">https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU</a>> . You are receiving this because you authored the thread.Message ID: ***@***.***> </div> <div class="email-fragment"></div> </div><p>from vee-validate.</p></section> </section> <section class="issue-comment"> <section id="2081611647" class="issue-head"> <img class="issue-avatar" src="https://avatars.githubusercontent.com/u/46171060?s=30&u=69b8830a926233d190882a585c8c16c6372aa15c&v=4" alt="davidkjackson54 avatar" /> <a class="issue-username" href="/davidkjackson54">davidkjackson54</a> <span class="issue-time"> commented on May 25, 2024 </span> </section> <section class="markdown markdown-js p-5"><div class="email-fragment">Just a thought- it might be worth emphasizing in the doc that “lazy” validation does not explicitly stop the rule from being called but simply suppresses the error from being displayed. I know you say it has been reported before but maybe it needs to be specifically called out and made more clear. Anything that can be done in the future release to address this such that the rule is only called on the field losing focus would be greatly beneficial.. Thanks David</div> <span class="email-hidden-toggle"><a href="#">…</a></span><div class="email-hidden-reply"> <div class="email-quoted-reply">On Sun, Apr 28, 2024 at 11:18 AM Abdelrahman Awad ***@***.***> wrote: This was reported a lot of times and is intended. Validation being lazy means the errors are generated lazily, but the validation still occurs. This is because the meta.valid flag must be correct, there is no way around it in terms of whate vee-validate can do. Either we make the valid flag incorrect till a validation is executed or we run rules implicitly like we do now. This behavior existed in v2, v3 where the valid flag could've a value of null to indicate that it never ran any validations yet, but people confused it with false and rightfully so, it is a falsy value. And it caused a lot of issues to be reported. So it's either I satisfy this camp or that camp. No in between. This means there is no solution for it, but there might be workarounds you can employ: - Caching the input value within the validator so if the user types it again for the same input, it won't execute the expensive request. - Empty values usually are falsy for this kind of validation, right? you can skip running it all together if the value is empty within the validator logic. - You can debounce the network requests ensure only one validation is run every 300 ms or so, you can further chain the validation results promises to return the value of the last validation run. Many techniques exist for async debouncing. Unfortunately its all user-land, any changes here means a breaking change and that's reserved for v5. — Reply to this email directly, view it on GitHub <<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2267039294" data-permission-text="Title is private" data-url="https://github.com/logaretm/vee-validate/issues/4737" href="https://github.com/logaretm/vee-validate/issues/4737#issuecomment-2081585315">#4737 (comment)</a>>, or unsubscribe <<a href="https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU">https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU</a>> . You are receiving this because you authored the thread.Message ID: ***@***.***> </div> <div class="email-fragment"></div> </div><p>from vee-validate.</p></section> </section> <section class="issue-comment"> <section id="2081679640" class="issue-head"> <img class="issue-avatar" src="https://avatars.githubusercontent.com/u/46171060?s=30&u=69b8830a926233d190882a585c8c16c6372aa15c&v=4" alt="davidkjackson54 avatar" /> <a class="issue-username" href="/davidkjackson54">davidkjackson54</a> <span class="issue-time"> commented on May 25, 2024 </span> </section> <section class="markdown markdown-js p-5"><div class="email-fragment">Hi, I think I have a workaround to help me limit the possibility of making a REST api call when it isn't required. I hope to try that out tomorrow. I now have a TypeScript problem in trying to make use of your sample minMax defineRule example; Global Validators (logaretm.com) <<a href="https://vee-validate.logaretm.com/v4/guide/global-validators">https://vee-validate.logaretm.com/v4/guide/global-validators</a>> In your code you specify this: defineRule('minMax', (value, [min, max]) => { and that is perfectly fine for JS I am trying to make this work for TS and not having much success: I have tried this but the min and max values are not being passed. defineRule("minMax", (value: string, { min, max }: { min: number; max: number }): boolean | string => { Oddly, I cannot find a single example on the web of how to specify defineRule in TS. Can you possibly see what is wrong with that line? If I put {...] around min, max it errors Thanks David</div> <span class="email-hidden-toggle"><a href="#">…</a></span><div class="email-hidden-reply"> <div class="email-quoted-reply">On Sun, Apr 28, 2024 at 11:18 AM Abdelrahman Awad ***@***.***> wrote: This was reported a lot of times and is intended. Validation being lazy means the errors are generated lazily, but the validation still occurs. This is because the meta.valid flag must be correct, there is no way around it in terms of whate vee-validate can do. Either we make the valid flag incorrect till a validation is executed or we run rules implicitly like we do now. This behavior existed in v2, v3 where the valid flag could've a value of null to indicate that it never ran any validations yet, but people confused it with false and rightfully so, it is a falsy value. And it caused a lot of issues to be reported. So it's either I satisfy this camp or that camp. No in between. This means there is no solution for it, but there might be workarounds you can employ: - Caching the input value within the validator so if the user types it again for the same input, it won't execute the expensive request. - Empty values usually are falsy for this kind of validation, right? you can skip running it all together if the value is empty within the validator logic. - You can debounce the network requests ensure only one validation is run every 300 ms or so, you can further chain the validation results promises to return the value of the last validation run. Many techniques exist for async debouncing. Unfortunately its all user-land, any changes here means a breaking change and that's reserved for v5. — Reply to this email directly, view it on GitHub <<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2267039294" data-permission-text="Title is private" data-url="https://github.com/logaretm/vee-validate/issues/4737" href="https://github.com/logaretm/vee-validate/issues/4737#issuecomment-2081585315">#4737 (comment)</a>>, or unsubscribe <<a href="https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU">https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU</a>> . You are receiving this because you authored the thread.Message ID: ***@***.***> </div> <div class="email-fragment"></div> </div><p>from vee-validate.</p></section> </section> <section class="issue-comment"> <section id="2118495994" class="issue-head"> <img class="issue-avatar" src="https://avatars.githubusercontent.com/u/46171060?s=30&u=69b8830a926233d190882a585c8c16c6372aa15c&v=4" alt="davidkjackson54 avatar" /> <a class="issue-username" href="/davidkjackson54">davidkjackson54</a> <span class="issue-time"> commented on May 25, 2024 </span> </section> <section class="markdown markdown-js p-5"><div class="email-fragment">Hi I have been reviewing you suggestions below and I have another situation where I have a drop down. List and I select one of the items, and I have 2 rules defined required|releaseArea I am finding that releaseArea is actually being called 3 times. Based on what you say below - is this expected? I am only clicking on the list once to cause it to expand and the second time to make the selection. It causes me a problem in that in that rule , I am performing a Rest api call to complete the validation and so it is being called 3 times in rapid succession. If this is working as expected does Vee validate V4 provide a debounce capability and if not - how would I do that myself - would it be inside the rule itself or some other method?? I can find no examples of how to accomplish this with Vue and vee-validate. Or is there some means whereby I can call my test function only after all validating rules have completed? Again, I can’t see how to accomplish that ! Thanks David</div> <span class="email-hidden-toggle"><a href="#">…</a></span><div class="email-hidden-reply"> <div class="email-quoted-reply">On Sun, Apr 28, 2024 at 11:18 AM Abdelrahman Awad ***@***.***> wrote: This was reported a lot of times and is intended. Validation being lazy means the errors are generated lazily, but the validation still occurs. This is because the meta.valid flag must be correct, there is no way around it in terms of whate vee-validate can do. Either we make the valid flag incorrect till a validation is executed or we run rules implicitly like we do now. This behavior existed in v2, v3 where the valid flag could've a value of null to indicate that it never ran any validations yet, but people confused it with false and rightfully so, it is a falsy value. And it caused a lot of issues to be reported. So it's either I satisfy this camp or that camp. No in between. This means there is no solution for it, but there might be workarounds you can employ: - Caching the input value within the validator so if the user types it again for the same input, it won't execute the expensive request. - Empty values usually are falsy for this kind of validation, right? you can skip running it all together if the value is empty within the validator logic. - You can debounce the network requests ensure only one validation is run every 300 ms or so, you can further chain the validation results promises to return the value of the last validation run. Many techniques exist for async debouncing. Unfortunately its all user-land, any changes here means a breaking change and that's reserved for v5. — Reply to this email directly, view it on GitHub <<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="2267039294" data-permission-text="Title is private" data-url="https://github.com/logaretm/vee-validate/issues/4737" href="https://github.com/logaretm/vee-validate/issues/4737#issuecomment-2081585315">#4737 (comment)</a>>, or unsubscribe <<a href="https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU">https://github.com/notifications/unsubscribe-auth/ALAIHNEH2QBCKE2GFGMIY5DY7U4OBAVCNFSM6AAAAABG4EOC22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOBRGU4DKMZRGU</a>> . You are receiving this because you authored the thread.Message ID: ***@***.***> </div> <div class="email-fragment"></div> </div><p>from vee-validate.</p></section> </section> </article> <section> <h2 class="h2">Related Issues (20)</h2> <div class="issue"> <ul> <li> <a href="/logaretm/vee-validate/issues/4725">Custom component does not trigger change event on form</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4726">Ability to customize interpolation prefix/suffix</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4729">Force resetting a form should also force reset initial values instead of merging</a> </li> <li> <a href="/logaretm/vee-validate/issues/4730">Components. Yup. It is not possible to set the default value via `.default()`. I can't delete fields using `.strip()`</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 2</span> </li> <li> <a href="/logaretm/vee-validate/issues/4731">Unable to display a label when using vscode-dropdown with vee-validate Field</a> </li> <li> <a href="/logaretm/vee-validate/issues/4733">I am using vee-validation but my initial values not geeting update</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4734">There is no way to tell vee-validate our class instance is whole and no need for PartialDeepObject</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 3</span> </li> <li> <a href="/logaretm/vee-validate/issues/4735">useField object structure</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4736">vee-validate V4 - how to create a custom error message in a function and get it displayed?</a> </li> <li> <a href="/logaretm/vee-validate/issues/4738">`meta.required` not detected when validation schema is passed after `useForm()` is called</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4739">All checkboxes of a checkbox group mandatory</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 7</span> </li> <li> <a href="/logaretm/vee-validate/issues/4740">d</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4742">useFieldParam</a> </li> <li> <a href="/logaretm/vee-validate/issues/4743">[docs]: Codepen on the Validation page does not work</a> </li> <li> <a href="/logaretm/vee-validate/issues/4744">4.12.7 broke zod validation</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 2</span> </li> <li> <a href="/logaretm/vee-validate/issues/4745">Not assignable to parameter of type 'ZodType<any, ZodTypeDef, any>' error on toTypedSchema</a> <span class="text-red-600 text-xs font-normal py-0.5 px-1 border border-red-600 rounded-md">HOT 1</span> </li> <li> <a href="/logaretm/vee-validate/issues/4749">Dynamic custom checkbox and dynamic input value update issue - Composition API</a> </li> <li> <a href="/logaretm/vee-validate/issues/4751">Trying to set a custom error message using setFieldError against a Field</a> </li> <li> <a href="/logaretm/vee-validate/issues/4753">Custom input not working with yup.ref() </a> </li> </ul> </div> </section> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7917632214101949" data-ad-slot="8319954821" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </main> <section id="more" class="flex-none w-full md:w-60 text-gray-600 bg-gray-50 px-5 md:px-3 rounded-md dark-color"> <div class="w-full md:w-60 h-0.5"></div> <section> <!-- recommend projects --> <h2 class="h2 py-3.5">Recommend Projects</h2> <ul> <li class="mb-4"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7917632214101949" data-ad-slot="8319954821" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/facebook/react"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://raw.githubusercontent.com/facebook/create-react-app/master/packages/cra-template/template/public/logo192.png" alt="React photo" /> React </a> </h3> <p class="article-more pt-1">A declarative, efficient, and flexible JavaScript library for building user interfaces.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/vuejs/vue"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://camo.githubusercontent.com/c8f91d18976e27123643a926a2588b8d931a0292fd0b6532c3155379e8591629/68747470733a2f2f7675656a732e6f72672f696d616765732f6c6f676f2e706e67" alt="Vue.js photo" /> Vue.js </a> </h3> <p class="article-more pt-1">🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/microsoft/TypeScript"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://www.typescriptlang.org/favicon-32x32.png" alt="Typescript photo" /> Typescript </a> </h3> <p class="article-more pt-1">TypeScript is a superset of JavaScript that compiles to clean JavaScript output.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/tensorflow/tensorflow"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://camo.githubusercontent.com/c04e16c05de80dadbdc990884672fc941fdcbbfbb02b31dd48c248d010861426/68747470733a2f2f7777772e74656e736f72666c6f772e6f72672f696d616765732f74665f6c6f676f5f736f6369616c2e706e67" alt="TensorFlow photo" /> TensorFlow </a> </h3> <p class="article-more pt-1">An Open Source Machine Learning Framework for Everyone</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/django/django"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars2.githubusercontent.com/u/27804?s=200&v=4" alt="Django photo" /> Django </a> </h3> <p class="article-more pt-1">The Web framework for perfectionists with deadlines.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/laravel/laravel"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://laravel.com/img/logomark.min.svg" alt="Laravel photo" /> Laravel </a> </h3> <p class="article-more pt-1">A PHP framework for web artisans</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/d3/d3"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://camo.githubusercontent.com/586ccf0aad9684edc821658cee04146cf36d1f1d5ec904bbefd72728909ccb2e/68747470733a2f2f64336a732e6f72672f6c6f676f2e737667" alt="D3 photo" /> D3 </a> </h3> <p class="article-more pt-1">Bring data to life with SVG, Canvas and HTML. 📊📈🎉</p> </article> </li> <li> <div> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7917632214101949" data-ad-slot="8319954821" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </li> </ul> </section> <section> <!-- recommend topics --> <h2 class="h2 py-3.5">Recommend Topics</h2> <ul> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/topic/javascript"> javascript </a> </h3> <p class="article-more pt-1">JavaScript (JS) is a lightweight interpreted programming language with first-class functions.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/topic/web"> web </a> </h3> <p class="article-more pt-1">Some thing interesting about web. New door for the world.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/topic/server"> server </a> </h3> <p class="article-more pt-1">A server is a program made to process requests and deliver data to clients.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/topic/machine-learning"> Machine learning </a> </h3> <p class="article-more pt-1">Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/topic/visualization"> Visualization </a> </h3> <p class="article-more pt-1">Some thing interesting about visualization, use data art</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/topic/game"> Game </a> </h3> <p class="article-more pt-1">Some thing interesting about game, make everyone happy.</p> </article> </li> <li> </li> </ul> </section> <section> <!-- recommend users --> <h2 class="h2 py-3.5">Recommend Org</h2> <ul> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/facebook"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars.githubusercontent.com/u/69631?v=4" alt="Facebook photo" /> Facebook </a> </h3> <p class="article-more pt-1">We are working to build community through open source technology. NB: members must have two-factor auth.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/microsoft"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars.githubusercontent.com/u/6154722?v=4" alt="Microsoft photo" /> Microsoft </a> </h3> <p class="article-more pt-1">Open source projects and samples from Microsoft.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/google"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars.githubusercontent.com/u/1342004?v=4" alt="Google photo" /> Google </a> </h3> <p class="article-more pt-1">Google ❤️ Open Source for everyone.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/alibaba"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars.githubusercontent.com/u/1961952?v=4" alt="Alibaba photo" /> Alibaba </a> </h3> <p class="article-more pt-1">Alibaba Open Source for everyone</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/d3"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars.githubusercontent.com/u/1562726?v=4" alt="D3 photo" /> D3 </a> </h3> <p class="article-more pt-1">Data-Driven Documents codes.</p> </article> </li> <li> <article class="small-box"> <h3 class="article-title"> <a class="block break-all" href="/tencent"> <img loading="lazy" class="inline-block w-6 h-6 rounded-md border border-white" width="24" height="24" src="https://avatars.githubusercontent.com/u/18461506?v=4" alt="Tencent photo" /> Tencent </a> </h3> <p class="article-more pt-1">China tencent open source team.</p> </article> </li> <li> </li> </ul> </section> </section> </div> </div> <!-- footer --> <footer class="sizeing text-xs text-center p-5"> <div>Friends: <a class="hover:underline" target="_blank" href="https://www.chanpinqingbaoju.com">ProductDiscover</a> </div> Copyright © 2024 Giter VIP <!-- & <span class="block md:inline">Data Power by github.com</span> --> ❤️ <a class="hover:underline block md:inline" href="mailto:cs.victor.edison@gmail.com">Mail to me</a> </footer> </body> </html>