teleren/devto huggingface dataset:
بهترین آموزش .NET MAUI فارسی
Tags: netmaui, xamarinforms, xamarin, android
Published: 2023-07-09 07:56:46

## .NET MAUI چیست؟
[NET MAUI(.NET Multi-platform App UI)](https://codecell.ir/course/d85e?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing) یک چارچوب مدرن و منبع باز است که توسط مایکروسافت توسعه یافته است. این برنامه برای ساده سازی فرآیند ساخت اپلیکیشن های موبایل و دسکتاپ چند پلتفرمی با استفاده از اکوسیستم دات نت طراحی شده است. NET MAUI تکامل یافته Xamarin.Forms که یک چارچوب محبوب برای ساخت برنامه های موبایل با C# و .NET بود می باشد.

## .NET MAUI یا Xamarin؟
Xamarin با بیش از یک دهه تجربه در توسعه اپلیکیشن، بخشی جدایی ناپذیر از این صنعت بوده است و نقش مهمی در شیوه‌ های توسعه اپلیکیشن چند پلتفرمی ایفا کرده است. این موضوع در مورد توسعه‌دهندگان بی‌شماری دیگر نیز در طول سال‌ها وجود داشته است که برنامه‌های نوآورانه، مخرب و قوی ارائه کرده‌اند. Xamarin.iOS و Xamarin.Android بخشی از .NET برای iOS و Android هستند. این پیوندها پیش‌ بینی‌ هایی از SDK‌ های ارسال شده از اپل و Google هستند و هیچ تغییری در آن ایجاد نمی‌شود، با این حال، build tooling و نام گذاری target framewor، و runtime framework به‌ روزرسانی می‌شوند تا با سایر ورک لود های .NET 6 و .NET 7 مطابقت داشته باشند. خب، به نظر می رسد که Xamarin رو به پایان است و MAUI جای آن را می گیرد. پشتیبانی Xamarin در 1 مه 2024 برای همه Xamarin SDK پایان خواهد یافت. Android 13 و Xcode 14 SDK (iOS و iPadOS 16، macOS 13) نسخه های نهایی Xamarin خواهند بود.

 بنابراین به توسعه دهندگان دات نت که از Xamarin استفاده می کنند توصیه می شود به .NET MAUI مهاجرت کنند. همچنین برای توسعه دهندگانی که در ابتدای راه توسعه اپلیکیشن هستند یادگیری .NET MAUI نسبت به Xamarin قطعا می تواند انتخاب هوشمندانه تری باشد.

## نتیجه گیری:
.NET MAUI یک راه قدرتمند و کارآمد برای توسعه دهندگان دات نت برای ساخت برنامه های کاربردی چند پلتفرمی ارائه می دهد. با یادگیری و استفاده از NET MAUI، توسعه دهندگان می توانند بهره وری خود را افزایش دهند، به مخاطبان بیشتری دست یابند و از نقاط قوت اکوسیستم دات نت برای توسعه اپلیکیشن های موبایل و دسکتاپ استفاده کنند. ما در این دوره، .NET MAUI را به صورت deep-dive و بر اساس آخرین مستندات رسمی مایکروسافت تدریس خواهیم کرد. دوره .NET MAUI کدسل یک دوره جامع,کاربردی و کامل ترین دوره فارسی .NET MAUI است.
برای تهیه این آموزش روی لینک زیر کلیلک کنید:
[آموزش .NET MAUI کدسل](https://codecell.ir/course/d85e?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing)
Functional JSON Viewer | Chrome Extension
Tags: showdev, json, extensions, webdev
Published: 2023-07-09 07:52:00

[Available in the Chrome Web Store](https://chrome.google.com/webstore/detail/functional-json-viewer/cokkmplppnaigoodkkjopoblfaelibab)

[Github](https://github.com/diogenesofweb/fjv)

Explore formatted JSON data with ease.
معرفی وب سایت برنامه نویسی کدسل
Tags: aspnet, dotnetcore, xamarinforms, donetmaui
Published: 2023-07-09 07:51:18

وب سایت برنامه نویسی کدسل یک پلتفرم آموزشی در حوزه برنامه نویسی و به خصوص .net core است.
آموزش ها و مقالات این وب سایت بروز بوده و همیشه از آخرین تکنولوژی ها و تغییرات دنیای .net core استفاده می شود.

## محبوب ترین دوره های آموزشی وب سایت کدسل

- [آموزش جامع .NET MAUI  ](https://codecell.ir/course/d85e?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing)
- [آموزش معماری میکروسرویس در Asp.net Core](https://codecell.ir/course/71fd?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing)
- [آموزش Web API در Asp.net Core](https://codecell.ir/course/efdc?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing)
- [آموزش gRPC در Asp.net Core](https://codecell.ir/course/788d?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing)
- [آموزش ایجاد دسترسی داینامیک و احراز هویت Jwt در Asp.net Core](https://codecell.ir/course/3545?utm_source=dev.to&utm_medium=post&utm_campaign=postMarketing)
Get Currency Exchange rate for FREE
Tags: currencyexchange, webdev, javascript, tutorial
Published: 2023-07-09 07:49:10

how to convert you currency from dollar to 10+ currencies for FREE

sometimes we need data in Dollar because most of enterprise product accepts payments in all countries and its difficult to predict at the end of the month how much revenue is generated so this API will be helpful

https://currencydatahub.tech/


```

 /**
 * Get currency exchange rates within a specific date range.
 * @param {string} start - The start date in "YYYY-MM-DD" format.
 * @param {string} end - The end date in "YYYY-MM-DD" format.
 */
function getCurrencyExchangeRates(start, end) {
  try {
    fetch(`https://currencyexchange.host20.uk/api/?start=${start}&end=${end}`)
    .then(res => res.json())
    .then(data => console.log(data))
  } catch (error) {
    console.error('Error fetching currency exchange rates:', error);
    throw error;
  }
}   

getCurrencyExchangeRates("2020-01-02", "2020-01-03");


```
Differences Between EBS, EFS, and Ephemeral Storage
Tags: aws, devops, career, cloud
Published: 2023-07-09 07:27:39

1. Key differences between EBS, EFS, and ephemeral storage include:

1.Persistence: Ephemeral storage is not persistent, while both EBS and EFS offer persistent storage that survives instance termination.

2.Shared access: EFS allows multiple instances to access the same file system simultaneously, while EBS volumes are limited to attachment to a single instance.

3.Performance: Ephemeral storage provides high-performance, low-latency storage directly attached to the instance, while the performance of EBS and EFS depends on the specific volume type and settings chosen.

4.The data stored on ephemeral storage is volatile and does not persist when the EC2 instance is stopped, terminated, or experiences a hardware failure.
Voice User Interface (VUI) Design
Tags: vui, frontend, webdev, uidesign
Published: 2023-07-09 07:27:34

🗣️ Voice User Interface (VUI) Design: The Future of Interactive Experiences 🌟

Are you ready to embark on a journey where spoken words bring technology to life? 🎙️✨ Voice User Interface (VUI) Design is revolutionizing the way we interact with digital devices, and as a UI designer, I'm thrilled to share the immense potential it holds for the future.

Imagine a world where we can effortlessly communicate with technology using our voices. VUI Design is paving the way for this future, enabling seamless and intuitive interactions that transcend traditional input methods. From smart speakers to virtual assistants, voice is becoming an integral part of our everyday lives.

So, why is VUI Design the future of interactive experiences? Let's dive in:

1. Natural and Intuitive: Voice commands allow users to interact with technology in a way that feels natural and effortless. With voice, we can engage with devices using our most instinctive form of communication.

2. Accessibility and Inclusivity: VUI Design breaks barriers by providing access to technology for individuals with disabilities or those who struggle with traditional input methods. It fosters inclusivity and empowers everyone to participate in the digital realm.

3. Efficiency and Multitasking: Voice commands enable users to perform tasks quickly and efficiently, freeing up their hands and allowing them to multitask. Whether it's setting reminders, checking the weather, or controlling smart home devices, voice makes it seamless.

4. Personalization and Contextual Understanding: VUI Design leverages artificial intelligence and machine learning to understand user preferences, adapt to their needs, and provide personalized experiences. This creates a sense of connection and tailored interactions.

As UI designers, embracing VUI Design opens up a world of possibilities. We need to consider factors like conversational flow, tone, and context to create delightful and engaging voice experiences. It challenges us to think beyond visual interfaces and craft interactions that resonate with users on an emotional level.

The future of interactive experiences is within our grasp, and VUI Design is leading the way. Let's embrace this exciting field, collaborate with developers, linguists, and data scientists, and design voice-driven experiences that shape the way we interact with technology.

Are you ready to be part of the voice revolution? Let's shape the future of interactive experiences together, one word at a time. 🌟🌐
Analisis Data Tagihan Kesehatan - Project Probability Pacmann.
Published: 2023-07-09 07:21:20

Pada project akhir kelas probability Pacmann, saya melakukan analisis terhahadap beberapa variabel. Project ini bertujuan untuk mengetahui hubungan kesehatan dengan biaya kesehatan. 

Pertama dataset yang digunakan memiliki field yang berisi seperti dibawah ini:
- age: Usia
- bmi: Indeks masa tubuh
- children: Anak yang ditanggung oleh asuransi kesehatan
- smoker: Merokok atau tidaknya
- region: Area tempat tinggal
- charges: Biaya yang yang ditagih oleh asuransi kesehatan

Beberapa outline yang saya kerjakan diantaranya adalah menampilkan statistik deskriptif pada dataset, pmf, pdf, korelasi antar dua variabel, dan hypotesis testing.

Pada statistik deskriptif saya menampilkan beberapa rata-rata dari beberapa kolom, seperti dibawah ini:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p73txg1ncs49t02m99fz.png)

Selanjunya adalah analisa peluang pada variable diskrit. Beberapa peluang yang saya telah analisis adalah:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zag3aac0v1xkhrp34vey.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g9cy0usb826lsrds1a7u.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onv8f4b9w22z6o6zxejv.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bzkgdpgdi7ba9f132o7.png)

Selanjutnya saya lanjutkan dengan menganalisa variabel continue, yang mana untuk mengethui peluang "Seseorang dengan BMI di atas 25 mendapatkan tagihan kesehatan di atas 16.7k, atau Seseorang dengan BMI di bawah 25 mendapatkan tagihan kesehatan di atas 16.7k"

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6s9mgg9a2ztwo4bgo8zh.png)

Selanjutnya, saya menganalisa korelasi variabel sex, smoker, dan region. Langkahnya adalah dengan menampilakn visualisasi korelasi menggunakan heatmap dan dilanjutkan dengan membandingkan nilai korelasi antara variabel age dengan charges, bmi dengan charges, dan children dengan charges.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pqstlvqjblict2yv9qnd.png)

Terakhir yang saya bahas pada project akhir probability saya adalah mengenai hypotesis testing, atau cara untuk menguji kevalidan suatu hypotesis. Beberapa yang saya uji adalah:

1. Tagihan kesehatan perokok lebih tinggi daripada tagihan kesehatan non perokok
2. Tagihan kesehatan laki-laki lebih besar dari perempuan
3. Proporsi perokok laki laki lebih besar dari perempuan

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5cfporjnkttr1up03efi.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/utlhppt8rrnklt0nsi28.png)

[github](https://github.com/RamaReksotinoyo/HealthAnalytics)

references:
1. Materi kelas pacmann
Have You Explored Coding Roles in New Industries?
Tags: discuss, career
Published: 2023-07-09 07:00:00

Have you ever considered blending your coding skills with your passion for a new industry? If so, what job opportunities or roles have you found that combine your coding expertise with your interests? 

Let's share and discuss some potential roles that caught your attention and why they intrigued you. Who knows, we might discover some exciting new paths to explore!

Follow the DEVteam for more discussions and online camaraderie!

{% embed [https://dev.to/devteam](https://dev.to/devteam) %}
Coding Problem Interview Series: How to Implement Bubble Sort?
Tags: codenewbie, beginners, discuss, career
Published: 2023-07-09 07:00:00

📣 Calling experienced devs and recent interviewees! Join the "Coding Problem Interview Series" to help code newbies tackle interview questions assessing problem-solving skills, algorithmic knowledge, and implementation of sorting, string manipulation, and data structure algorithms.

Share your expertise and insights! Pleas share multiple perspectives and tips for standout answers!


Today's question is:

> Can you explain how the bubble sort algorithm is implemented?


Follow the [CodeNewbie Org](https://dev.to/codenewbieteam) and [#codenewbie](https://dev.to/t/codenewbie) for more discussions and online camaraderie!

*{% embed* https://dev.to/codenewbieteam *%}*
Heap(堆)
Tags: algorithms, leetcode, heap
Published: 2023-07-09 06:43:00

堆的特性（按最大堆说明）
1. 二叉树
2. 完全二叉树，还不是满二叉树
3. 节点的data值不小于子节点
4. 各子树仍然是最大堆
5. 树的节点存放在数组中

因为树的高度为log2(n)，所以：
插入时间复杂度：O(log2(n))
删除时间复杂度：O(log2(n))
堆的创建时间复杂度：
自顶向下建堆：O(nlog2(n))相当于对n个节点进行插入操作
自底向上建堆：O(n)，直接对堆进行调整

需要关注的指标：
树在数组中的处理方式，i为节点的下标值(0 ≤ i ≤ n-1)，n为节点个数
1. 父节点为(i-1)/2 (i ≠ 0)，i=0则为根节点
2. 左子节点为2i+1 (2i+1 ≤ n-1)，若不满足则无左子节点
3. 右子节点为2i+2 (2i+2 ≤ n-1)，若不满足则无右子节点


注意事项：
最大堆无法判断第几大的元素，只能获得第一大的元素

创建堆时：
1. 将节点按层序方式写入二叉树中
2. 找到最后的叶子节点
3. 根据叶子节点找到父节点 
4. 父节点和两个子节点进行比较，看是否需要和某个子节点交换
5. 交换后仍需递归和下层子节点比较，直到没有节点需要交换(叶子节点或满足最大堆要求)
```
节点数为n，那么父节点i从(n/2)-1开始整理堆
func Heapify() {
	for i := n/2 - 1; i >= 0; i-- {
		h.Down(i, n)
	}
}
func (h *HeapInt) Down(i, n int) {
	//这是初始化
	for {
		left := 2*i + 1
		if left >= n || left < 0 {
			break
		}
		j := left
		if right := left + 1; right < n && h.Less(left, right) {
			j = right
		}
		if !h.Less(i, j) {
			break
		}
		h.Swap(i, j)
		i = j
	}
	return
}
```


插入时：
1. 将节点放到最后
2. 重新排列堆

我们需要进行siftUp操作：
- 将当前节点值与其父节点比较：
  - 如果节点已经为根节点，siftUp完成
  - 如果父节点大于当前节点，siftUp完成；
  - 如果父节点小于当前节点，交换两个节点。
- 更新当前节点。重复siftUp。

删除时（一般堆的作用就是用来删除最大值的，不会随便选择节点删除）：
1. 删除根节点
2. 将最后一个节点换到根节点
3. 重新排列堆

开始进行siftDown操作：

- 将当前节点（首次为根节点）与左右孩子中较大的节点进行比较；
  - 如果当前节点为叶子节点，siftDown完成；
  - 如果大于较大值，则已经符合最大堆的性质，siftDown完成；
  - 如果小于较大值，则与较大值进行交换
- 更新当前节点，再次进行siftDown操作。
TIL: FEN Chess Notation and Battlesnake
Tags: todayilearned, chess
Published: 2023-08-01 21:47:44

---
title: TIL: FEN Chess Notation and Battlesnake
published: true
date: 2023-07-09 00:00:00 UTC
tags: til, chess
canonical_url: https://coreyja.com/til/chess-fen
---

TIL about FEN Chess notation, a text representation of the state of a chess board.[Wikipedia](https://en.wikipedia.org/wiki/Forsyth%E2%80%93Edwards_Notation)

Here is the starting position of a chess board in FEN

```
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
```

The first of the six sections separated by spaces is the board. The letters represent the pieces: uppercase is white, and lowercase is black. The numbers represent empty squares in a row. Each `/` is the end of a row of the board.

The sections after the board state say which colors turn it is. And then rules for castling, en passant and other rules that I need help understanding as a non-chess player.

* * *

As a [Battlesnake](https://play.battlesnake.com/) developer, we get a lot of chess cross-over, which is where FEN was introduced to me. In the Battlesnake Discord, someone asked if there was a FEN-like representation of a Battlesnake board. The consensus was there isn't today. But I don't like that answer! Fen seems cool, and it would be great if Battlesnake had a more concise way to express board states than the full JSON payloads.

I'm going to start thinking about what this format would look like! If you have thoughts on how it should work, let me know! It will be more difficult for battlesnake, but it will be a fun problem to noodle on.

This post was inspired by EnderInvader's battlesnake viewer Obsidian plugin: [https://github.com/EnderInvader/battlesnake-viewer](https://github.com/EnderInvader/battlesnake-viewer)It's a fork of a chess viewer that visualizes FEN notation. EnderInvader's version takes the game JSON and renders a version of the Battlesnake Board! It's cool, and if you use Obsidian, you should check it out.
How to Resolve Error 413 Request Entity Too Large in Nginx and Amazon EC2 Instance
Tags: nginx, aws, webdev, beginners
Published: 2023-07-09 06:30:13

while running on Amazon server instance with Nginx, at some point you might come across an HTTP 413 error that says 

`request too large`

This means that the upload max size has been exceeded. To solve this error follow the steps below

## How To solve NGNIX 413 Request Too Large Error

1. Login to your server via ssh

2. open the Nginx config file via nano or your favorite text editor. we will use nano for this tutorial

3. `sudo /etc/nginx/nginx.conf`

4. Add this code to the HTTP block 
`client_max_body_size 20M;`
Increase the size as you want

5. save the file and close the editor
Run this command to restart Nginx

`sudo systemctl restart nginx`



Now go back and retry the upload again,  and it will work
 
What we have done is increase the maximum allowed file upload size to **20 megabytes**. This way any file less than or equal to **20M** will be uploaded

So feel free to adjust the value to your need
Mastering JavaScript: A Comprehensive Guide
Published: 2023-07-09 06:20:23


1: Introduction to JavaScript

- Brief history and overview of JavaScript
- Setting up the development environment
- Basic syntax and data types
- Variables, operators, and control flow

2: JavaScript Functions

- Defining and invoking functions
- Function parameters and return values
- Function expressions and arrow functions
- Closures and scope

3: JavaScript Objects and Prototypes

- Objects and properties
- Prototypal inheritance
- Object-oriented programming concepts
- Working with object prototypes

4: Asynchronous JavaScript

- Callback functions and event-driven programming
- Introduction to Promises and async/await
- Working with AJAX and Fetch API
- Error handling in asynchronous code

5: JavaScript Arrays and Iteration

- Array manipulation methods
- Iteration methods (forEach, map, filter, reduce, etc.)
- Multidimensional arrays and nested iteration
- Common array patterns and use cases

6: JavaScript DOM Manipulation

- Introduction to the Document Object Model (DOM)
- Selecting and manipulating DOM elements
- Event handling and delegation
- Dynamic content updates and animations

7: JavaScript Modules and Tooling

- Working with modules (CommonJS, ES modules)
- Build tools and bundlers (Webpack, Rollup)
- Package management with npm and yarn
- Debugging and browser developer tools

8: JavaScript Testing and Debugging

- Unit testing with frameworks like Jest or Mocha
- Debugging techniques and tools
- Performance optimization and profiling
- Error handling and debugging best practices

9: JavaScript Design Patterns

- Introduction to design patterns
- Creational, structural, and behavioral patterns
- Singleton, Observer, Factory, and other common patterns
- Applying design patterns in JavaScript


10: Advanced JavaScript Concepts

- Functional programming in JavaScript
- Prototypal inheritance vs. classical inheritance
- Memory management and garbage collection
- Performance optimization techniques

We will discuss all the topic one by our next article.

Thanks for reading 😊
Versions Are For Humans
Tags: deployment, versioning, version, engineer
Published: 2023-07-07 05:21:05

---
title: Versions Are For Humans
published: true
tags: [deployment, versioning, version, engineer]
---

What does it mean to version a piece of software? I believe that it applies a _meaningful_ label to indicate the capabilities of the software at that point in time. As software engineers, the most common method of doing this is [semantic versioning](https://semver.org/). Each number in a semantic version conveys a meaning for a human to understand and use as a basis their decisions. 

If these version numbers are meant for humans to derive meaning from, the incrementation of any part of the version should _not_ be automated. Automatically incrementing a version strips the version of it's meaning. Let's say that we increment the patch version of a softare package each time we merge to the `main` branch. The issue is anyone consuming this software package has _no clue_ whether there are breaking changes, new features, or just bug fixes in the new version. 

Version numbers are meant for humans, and they should be set by humans. The engineers making changes to a software package should set the new version number as a part of their change. They are the ones that understand the change best and are the most suited to translate the effects of the change into a semantic version.

Original Post: https://codejanitor.dev/blog/2023/07/06/Versions-Are-For-Humans
Day 1: Cloud Path designed
Tags: cloudcomputing
Published: 2023-07-09 06:15:35

As I read the beginning part of the book ( The Cloud Resume Challenge Cookbook), I know I need to first grab a Fundamental cert:   Google Cloud Digital Leader Certificate. Roughly that will take me 2 weeks, or graciously enough, 1 full month and sit the exam!   Then I will be back with the Cookbook and see what to do next. 

Path: 
**

> Cloud Resume Challenge Cookbook
**: as both a blueprint and practice book (not only show me where to go and but also offer limited clue on how to guide there), surely the distance should be totally covered by myself! 

- 1 month ( From July to August, 2023) To sit the **Google Cloud Digital Leader Certificate** August in Nanjing. Have checked the details about the exam, just be prepared for that, dude. 

-  Then move on with the CRC course; 



2 hours / day is the standard time input for this project.
Solve: can’t perform a react state update on an unmounted component
Tags: react, webdev, javascript, beginners
Published: 2023-07-09 06:11:39

In React, components are responsible for rendering different parts of your user interface. They can have their own state, which is a JavaScript object that holds data specific to that component. The state allows components to manage and update their data, resulting in dynamic and interactive user interfaces.

However, there are situations where a component may be removed or unmounted from the DOM. This can happen for various reasons, such as when a component is hidden, removed from the screen, or when the parent component is updated and causes the child component to be unmounted.

Now, let’s consider a scenario where you have a component that performs an asynchronous operation, like fetching data from an API. This asynchronous operation may take some time to complete. While the operation is in progress, the component is still mounted and part of the DOM.

However, if the component gets unmounted before the asynchronous operation finishes, it means that the component is no longer present in the DOM. At this point, if you try to update the state of that unmounted component, React will throw the error message “Can’t Perform a React State Update on an Unmounted Component.”

The reason for this error is that React is trying to prevent you from updating the state of a component that no longer exists in the DOM. Since the component is unmounted, there is no associated user interface element to update, and modifying the state would be meaningless.
Read More with Example [Here](https://reactjsguru.com/cant-perform-a-react-state-update-on-an-unmounted-component/)