Forwarded from Dev Dastan (Hossein Mousavi)
➖➖➖➖➖➖
➖➖➖➖➖➖
#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
Medium
45 JavaScript Super Hacks Every Developer Should Know
JavaScript is a versatile and powerful language that is essential for modern web development. Here are super hacks that will make you a…
Forwarded from Dev Dastan (Hossein Mousavi)
➖➖➖➖➖➖
➖➖➖➖➖➖
#JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Laravel News
Lightweight Spreadsheets for Laravel https://laravel-news.com/lightweight-spreadsheets-for-laravel-with-linen
Laravel News
Lightweight Spreadsheets for Laravel - Laravel News
If you're looking for a lightweight package that can read and write spreadsheets, Chris Morrell's Linen project is a lightweight spreadsheet package for Laravel.
Forwarded from کداکسپلور | CodeExplore (Koorosh)
اکستنشن Prettier در VSCode ⌨️
👀 میدونین که برنامه نویسی به شکل مرتب، یکسری اصول خاص داره، که شاید بعضی وقتا ناخواسته رعایتش نکنید. این اکستنشن براتون کدتون رو مرتب میکنه، میتونید هم بهش بگید چه زبانهایی رو براتون مرتب نکنه و ...
✔️ از اینها هم پشتیبانی میکنه:
🔗 لینک دانلود
#vscode #extension
☕️ @CodeExplore
JavaScript · TypeScript · Flow · JSX · JSON · CSS · SCSS · Less · HTML · Vue · Angular HANDLEBARS · Ember · Glimmer · GraphQL · Markdown · YAML
#vscode #extension
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Code Module | کد ماژول (𔓙)
5 اکستنشن کاربردی که احتمالا از اونها بی خبری😄
به کمک این اکستنشن میتونید کامنت های رنگی بر اساس شرایط کدتون بنویسید.
با استفاده از این اکستنشن میتونید کلاس های استایلی خودتون رو با یک سرچ ساده پیدا، و به محل نوشته شده اون استایل برید.
زمانی که پکیج یا هر چیز دیگه ای رو ایمپورت کنید، این اکستنشن حجم فایل ایمپورت شده رو به صورت بایت به شما نمایش میده.
با استفاده از این اکستنشن، خطاهای تایپ اسکریپت رو میتونید به صورت خوانا تری مشاهده و ببینید.
این اکستنشن به ما کمک میکنه لورم اپیسوم های فارسی بنویسیم. فقط کافیه عبارت plorem رو در ادیتور تایپ کنیم.
#extentions
@CodeModule
1⃣ Better Comments
به کمک این اکستنشن میتونید کامنت های رنگی بر اساس شرایط کدتون بنویسید.
2⃣ CSS Peak
با استفاده از این اکستنشن میتونید کلاس های استایلی خودتون رو با یک سرچ ساده پیدا، و به محل نوشته شده اون استایل برید.
3⃣ Import Cost
زمانی که پکیج یا هر چیز دیگه ای رو ایمپورت کنید، این اکستنشن حجم فایل ایمپورت شده رو به صورت بایت به شما نمایش میده.
4⃣ Pretty TypeScript Error
با استفاده از این اکستنشن، خطاهای تایپ اسکریپت رو میتونید به صورت خوانا تری مشاهده و ببینید.
5⃣ Persian Lorem
این اکستنشن به ما کمک میکنه لورم اپیسوم های فارسی بنویسیم. فقط کافیه عبارت plorem رو در ادیتور تایپ کنیم.
#extentions
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
⭐️توزیع predator-os نسخه 3.3 به همراه ویژگی های جدید منتشر شد:
توزیع Predator-OS نسخه اول در سال 2021 منتشر شد. هم اکنون نسخه ۳.۳ بر پایه دبیان 12.6 در زمینه تست نفوذ،هک اخلاقی توسعه داده شده که البته دارای ویژگیها و تنظیمات از قبل تعیین شده :
Hardened, anonymous, privacy,tune performance
را دارا میباشد.
توزیع Predator-OS با بیش از 1200 ابزار در 40 دسته و 9 مد امنیتی دسته بندی شده است.تا نیاز کامل حوزه امنیت را پوشش بدهد.
نسخه۳.۳ دارای میزکارهای ترکیبی در قالب فایل ایزو قرار داده شده است.
🔹Security Edition ISO:
Plasma + LXQT desktop
Mate + LXDE desktop
NoDesktop
-----------------------
🔹Home Edition ISO:
Plasma + LXQT desktop
Mate + LXDE desktop
NoDesktop
------------------------
🔹Black Edition: soon
Predator-OS + mammoth 🦣 panel
------------------------
🔹Alien Edition:soon
Plasma + LXQT
Mate+LXDE
لینک دسترسی
https://predator-os.ir/
🔹سورس فایلهای به همراه دو کتاب راهنمای کامل توزیع در سایت ارائه شده است.
توزیع Predator-OS نسخه اول در سال 2021 منتشر شد. هم اکنون نسخه ۳.۳ بر پایه دبیان 12.6 در زمینه تست نفوذ،هک اخلاقی توسعه داده شده که البته دارای ویژگیها و تنظیمات از قبل تعیین شده :
Hardened, anonymous, privacy,tune performance
را دارا میباشد.
توزیع Predator-OS با بیش از 1200 ابزار در 40 دسته و 9 مد امنیتی دسته بندی شده است.تا نیاز کامل حوزه امنیت را پوشش بدهد.
نسخه۳.۳ دارای میزکارهای ترکیبی در قالب فایل ایزو قرار داده شده است.
🔹Security Edition ISO:
Plasma + LXQT desktop
Mate + LXDE desktop
NoDesktop
-----------------------
🔹Home Edition ISO:
Plasma + LXQT desktop
Mate + LXDE desktop
NoDesktop
------------------------
🔹Black Edition: soon
Predator-OS + mammoth 🦣 panel
------------------------
🔹Alien Edition:soon
Plasma + LXQT
Mate+LXDE
لینک دسترسی
https://predator-os.ir/
🔹سورس فایلهای به همراه دو کتاب راهنمای کامل توزیع در سایت ارائه شده است.
Forwarded from محتوای آزاد سهراب
Forwarded from محتوای آزاد سهراب
کیدیای کالیگرا هم نسخه جدید داد، با طراحی جدید.
کالیگرا بسته نرمافزار های اداری کیدیای هستن که جایگزین مینیمالتری برای لیبرهآفیس محسوب میشن.
البته فعلاً با متن دوسویه مشکل داره، که گفتن حلش میکنن.
@SohrabContents
کالیگرا بسته نرمافزار های اداری کیدیای هستن که جایگزین مینیمالتری برای لیبرهآفیس محسوب میشن.
البته فعلاً با متن دوسویه مشکل داره، که گفتن حلش میکنن.
@SohrabContents
Forwarded from Go Casts 🚀
مقاله جالبیه در مورد reproducibility، اینکه چیکار کنی که buildهات identical بشن که هم security بهتری داشته باشه هم نرم افزارت خروجی پیش بینی پذیرتری داشته باشه
اینم لینک مقاله 👇
What is Reproducibility and why does it matter?
https://blog.kubesimplify.com/what-is-reproducibility-and-why-does-it-matter
توضیحات «دوره + تیمسازی بکند Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://news.1rj.ru/str/gocasts/491
@gocasts
#devops #kubernetes
اینم لینک مقاله 👇
What is Reproducibility and why does it matter?
https://blog.kubesimplify.com/what-is-reproducibility-and-why-does-it-matter
توضیحات «دوره + تیمسازی بکند Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://news.1rj.ru/str/gocasts/491
@gocasts
#devops #kubernetes
Forwarded from جادی | Jadi
این سوالی است که خیلی تو مصاحبهها پرسیده می شه و منم باهاش دو تا کار بامزه کردم. اولی اینکه با زبونی حل میکنم که چندان بلد نیستم و دومی اینکه اول به شیوه خیلی بدی حلش می کنم تا بهانه ای بشه برای بحث «چطوری بهینه بودن یه الگوریتم رو محاسبه می کنیم» یا همون Big O خودمون (: البته معلومه که برای استخدام شدن احتمالی؛ بعدش با روش درست هم حلش می کنم (:
https://youtu.be/xZP2wKxU4bc
#ویدئو #الگوریتم #برنامه_نویسی
https://youtu.be/xZP2wKxU4bc
#ویدئو #الگوریتم #برنامه_نویسی
YouTube
سوال های الگوریتمی مصاحبهای: بهترین زمان خرید و فروش سهام
فرض کنین به شما یه لیست دادن از قیمت یک سهام در هر روز مشخص. حالا قراره شما فقط یک روز بتونین سهام بخرین و یک روز بفروشین و هدف هم که متاسفانه مشخصه: حداکثر کردن سود.
برای حل این سوال محبوب شرکتها، اول سراغ یه راه بد میرم. هدف هم نشون دادن اینه که چرا…
برای حل این سوال محبوب شرکتها، اول سراغ یه راه بد میرم. هدف هم نشون دادن اینه که چرا…
Forwarded from Syntax | سینتکس (Daimon)
چند نکته درباره وب سوکت و توضیح ساده برای درک بهتر
فرآیند ارتباط وبسوکت
1. شروع با HTTP/HTTPS:
- کلاینت ابتدا یک درخواست HTTP به سرور میفرستد. این درخواست شامل هدرهای خاصی است که نشاندهنده تمایل به ارتقاء ارتباط به وبسوکت است. این هدرها شامل موارد زیر هستند:
-
-
2. ارتقاء به وبسوکت:
- سرور درخواست را دریافت کرده و بررسی میکند. اگر شرایط درست باشد، با یک پاسخ خاص به کلاینت، ارتباط را به وبسوکت ارتقاء میدهد. این پاسخ شامل وضعیت 101 Switching Protocols است.
3. استفاده از ws:// و wss://:
- پس از ارتقاء، ارتباط بهصورت دائمی و دوطرفه برقرار میشود.
-
نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTP است.
-
نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTPS است (که رمزنگاری شده است).
چرا ws:// استفاده میشود؟
-
- این URL نشان میدهد که ارتباط نهایی بهصورت وبسوکت انجام میشود.
نکته:
در HTTP/2، مکانیزم آپگرید به وبسوکت از طریق هدرهای HTTP/1.1 استفاده نمیشود. HTTP/2 به صورت ذاتی از این روش پشتیبانی نمیکند. برای ارتباط وبسوکت در HTTP/2، معمولاً از HTTP/1.1 برای ایجاد و ارتقاء ارتباط استفاده میشود یا از روشهای دیگری برای مدیریت ارتباطات بلادرنگ بهره میگیرند.
روشهای دیگه برای مدیریت ارتباطات بلادرنگ:
1. Server-Sent Events (SSE):
- یک ارتباط یکطرفه است که سرور میتواند بهطور پیوسته دادهها را به کلاینت ارسال کند.
- مناسب برای برنامههایی که نیاز به ارسال دادههای بلادرنگ از سرور به کلاینت دارند.
2. Long Polling:
- کلاینت یک درخواست HTTP ارسال میکند و سرور تا زمانی که دادهای برای ارسال وجود ندارد، پاسخ را معلق نگه میدارد(یک تایم اوت مشخص هم دارد مثلا 20 ثانیه)
- پس از ارسال داده، کلاینت بلافاصله یک درخواست جدید ارسال میکند.
3. HTTP/2 Streams:
- استفاده از قابلیت چندپخشی و استریمهای همزمان در HTTP/2 برای ارسال و دریافت دادههای بلادرنگ.
4. gRPC:
- یک فریمورک RPC بر پایه HTTP/2 که از ارتباطات بلادرنگ و استریمینگ پشتیبانی میکند.
چرا نیاز به درخواست HTTP اولیه است؟
وبسوکتها بهعنوان یک پروتکل ارتقاء بر روی HTTP طراحی شدهاند تا با زیرساختهای موجود وب سازگار باشند. این امر به کلاینتها و سرورها اجازه میدهد تا از همان پورتها و مکانیزمهای امنیتی استفاده کنند.
مثال در گولنگ:
#websocket
@Syntax_fa
فرآیند ارتباط وبسوکت
1. شروع با HTTP/HTTPS:
- کلاینت ابتدا یک درخواست HTTP به سرور میفرستد. این درخواست شامل هدرهای خاصی است که نشاندهنده تمایل به ارتقاء ارتباط به وبسوکت است. این هدرها شامل موارد زیر هستند:
-
Upgrade: websocket-
Connection: Upgrade2. ارتقاء به وبسوکت:
- سرور درخواست را دریافت کرده و بررسی میکند. اگر شرایط درست باشد، با یک پاسخ خاص به کلاینت، ارتباط را به وبسوکت ارتقاء میدهد. این پاسخ شامل وضعیت 101 Switching Protocols است.
3. استفاده از ws:// و wss://:
- پس از ارتقاء، ارتباط بهصورت دائمی و دوطرفه برقرار میشود.
-
ws://نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTP است.
-
wss://نشاندهنده استفاده از پروتکل وبسوکت بر روی HTTPS است (که رمزنگاری شده است).
چرا ws:// استفاده میشود؟
-
ws://localhost:8080- این URL نشان میدهد که ارتباط نهایی بهصورت وبسوکت انجام میشود.
نکته:
در HTTP/2، مکانیزم آپگرید به وبسوکت از طریق هدرهای HTTP/1.1 استفاده نمیشود. HTTP/2 به صورت ذاتی از این روش پشتیبانی نمیکند. برای ارتباط وبسوکت در HTTP/2، معمولاً از HTTP/1.1 برای ایجاد و ارتقاء ارتباط استفاده میشود یا از روشهای دیگری برای مدیریت ارتباطات بلادرنگ بهره میگیرند.
روشهای دیگه برای مدیریت ارتباطات بلادرنگ:
1. Server-Sent Events (SSE):
- یک ارتباط یکطرفه است که سرور میتواند بهطور پیوسته دادهها را به کلاینت ارسال کند.
- مناسب برای برنامههایی که نیاز به ارسال دادههای بلادرنگ از سرور به کلاینت دارند.
2. Long Polling:
- کلاینت یک درخواست HTTP ارسال میکند و سرور تا زمانی که دادهای برای ارسال وجود ندارد، پاسخ را معلق نگه میدارد(یک تایم اوت مشخص هم دارد مثلا 20 ثانیه)
- پس از ارسال داده، کلاینت بلافاصله یک درخواست جدید ارسال میکند.
3. HTTP/2 Streams:
- استفاده از قابلیت چندپخشی و استریمهای همزمان در HTTP/2 برای ارسال و دریافت دادههای بلادرنگ.
4. gRPC:
- یک فریمورک RPC بر پایه HTTP/2 که از ارتباطات بلادرنگ و استریمینگ پشتیبانی میکند.
چرا نیاز به درخواست HTTP اولیه است؟
وبسوکتها بهعنوان یک پروتکل ارتقاء بر روی HTTP طراحی شدهاند تا با زیرساختهای موجود وب سازگار باشند. این امر به کلاینتها و سرورها اجازه میدهد تا از همان پورتها و مکانیزمهای امنیتی استفاده کنند.
مثال در گولنگ:
package main
import (
"fmt"
"net/http"
"github.com/gorilla/websocket"
)
var upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
// checking conditions
return true
},
}
func handleConnections(w http.ResponseWriter, r *http.Request) {
// upgrade http request to websocket
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
fmt.Println(err)
return
}
defer ws.Close()
// messages
for {
messageType, msg, err := ws.ReadMessage()
if err != nil {
fmt.Println(err)
break
}
fmt.Printf("Received: %s\n", msg)
err = ws.WriteMessage(messageType, msg)
if err != nil {
fmt.Println(err)
break
}
}
}
func main() {
http.HandleFunc("/", handleConnections)
fmt.Println("Server started on :8080")
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("Error starting server:", err)
}
}
#websocket
@Syntax_fa
👍1
Forwarded from Laravel News
Laracon US 2024 Live from Dallas https://laravel-news.com/laracon-us-2024-livestream
Laravel News
Laracon US 2024 Live from Dallas - Laravel News
Laracon US 2024 kicks off today at 9:30 central time! If you aren't at the live venue, Laravel is live-streaming the conference.
Forwarded from Rust for Python developers
خب خب خب؛
جذاب شد، از امروز روزی ۲-۳ ساعت روی بکند و Rust خواهم بود با
دلایل انتخاب
من خیلی از این سالها روی Django, FastApi کد میزنم (با وجود اینکه با node, Express بکند رو یاد گرفتم)
برای همین Axum رو انتخاب کردم، چون شباهت زیادی به syntax پایتون داره تا Actix و شاید همین رو بتونم پیشنهاد بدم به بچههایی که از سمت node دارن میان Actix برای اونها ممکنه راحت تر و آشناتر باشه.
جذاب شد، از امروز روزی ۲-۳ ساعت روی بکند و Rust خواهم بود با
Axum البته.دلایل انتخاب
Axum رو توی گروه گفتم، موردی که باید اضافه کنم؛من خیلی از این سالها روی Django, FastApi کد میزنم (با وجود اینکه با node, Express بکند رو یاد گرفتم)
برای همین Axum رو انتخاب کردم، چون شباهت زیادی به syntax پایتون داره تا Actix و شاید همین رو بتونم پیشنهاد بدم به بچههایی که از سمت node دارن میان Actix برای اونها ممکنه راحت تر و آشناتر باشه.
Forwarded from LearnPOV | لرن پی او وی (Mohammad hossein)
#javanoscript #js_trick
●● اطلاعات کامل باتری با جاوااسکریپت🔋●●
با استفاده از Battery Status Api میتونید سطح باتری، وضعیت شارژ شدن و دیگر اطلاعات مرتبط با باتری رو به دست بیارید و ازشون استفاده کنید.
نمونه کد 🚀
navigator.getBattery().then(battery => {
console.log(`Battery level: ${battery.level * 100}%`);
console.log(`Is charging: ${battery.charging ? 'Yes' : 'No'}`);
});🌐 استفاده واقعی در وبسایت
🆔 Channel | Group | YouTube
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
#کوته_نیوز
تلگرام تو اپاستور فرانسه تو صدر جدول و توی آمریکا در رتبهی دوم محبوبترین اپلیکیشنها قرار گرفت.
@DevTwitter
تلگرام تو اپاستور فرانسه تو صدر جدول و توی آمریکا در رتبهی دوم محبوبترین اپلیکیشنها قرار گرفت.
@DevTwitter
Forwarded from Sudoer (Morteza Bashsiz)
درود
من مشکلاتی که NipoVPN دارد رو به عنوان ایشو نوشتم توی بخش ایشو مربوط به ریپوزیتوری
ممنون میشم همراهی کنید تا بتونیم توسعش بدیم و به نتیجه برسه
سپاس از همراهی شما
https://github.com/MortezaBashsiz/nipovpn/issues
من مشکلاتی که NipoVPN دارد رو به عنوان ایشو نوشتم توی بخش ایشو مربوط به ریپوزیتوری
ممنون میشم همراهی کنید تا بتونیم توسعش بدیم و به نتیجه برسه
سپاس از همراهی شما
https://github.com/MortezaBashsiz/nipovpn/issues
GitHub
MortezaBashsiz/nipovpn
Powerfull http proxy. Contribute to MortezaBashsiz/nipovpn development by creating an account on GitHub.
Forwarded from PGTWEET | توییت برنامه نویسی
طومار درخواست آزادی دورف که از منابع رسمی همچون بلوم در حال انتشار است. تا این لحظه حدود ۴۰ هزار نفر این طومار را امضا کرده اند. (با یک کلیک ساده امضا کنید و انتشار دهید.)
https://news.1rj.ru/str/tgresistancebot/letter
#FreePavel
#Freedurov
https://news.1rj.ru/str/tgresistancebot/letter
#FreePavel
#Freedurov
Telegram
Digital Resistance
We strongly condemn the arrest of Mr. Pavel Durov by the French authorities, a blatant attack on the freedom of expression and the right to private life.
Forwarded from کداکسپلور | CodeExplore (D@n!)
قبلش یه اعترافی بکنم
منم اون اوایل فک میکردم برنامه نویسی یاد بگیرم ، فردا میشم میلیاردر و جای بیل گیتسو میگیرم (اون زمان پولدار ترین ادم بیل گیتس بودو یه مردکی به نام کارلوس اسلیم که حالا باهاش کاری ندارم
ولی چرا دروغ بگم ؟ تا 14 15 سالگی پولدار نشدم
قرار نیست با نوشتن کد پولدار بشیم! کدو هوش مصنوعیم الان برامون میزنه، پس باید یه فرقی داشته باشیم
برنامه نویسی هم مثل خیلی چیزا ، یه مهارته! یاد میگیری ، تلاش میکنی ، به خاطر میسپری و همین لوپ تا بینهایت ادامه داره
و برای همین پولی که به تنهایی ازش بدست میاد اونقدری نیست که اگه کار دیگه ایی داشته باشی بگی چقد این تفاوت فاحشه!
بیاید بریم تو واقعیت مثال بزنیم:
شاید برای بعضیها آره، ولی اگه رویای بزرگتری تو سرتونه، باید فراتر از این فکر کنید و فقط با 4 خط کد هیچی نمیشه :(
حالا چیکار کنیم؟ حالاست که وارد یه بخش دیگه میشید ...
پس بعد از برنامه نویسی باید یه فکر قشنگ داشته باشید و بدونید محصولتون دقیقا چیه!
زیاد حرف زدم مث همیشه
ولی اگه فقط یه زندگی ساده و روتین میخواید ، برنامه نویسی یاد بگیرید و برید یه جا مشغول به کار شید (یه جایی مثل
ولی اگه واقعا دنبال یه چیز بزرگ هستید ، یادتون نره: فقط یاد بگیرید!
نه فقط برنامه نویسی ، درباره اصول کسب و کار، استراتژی های بازاریابی، مهارت های ارتباطی و توی این مسیر یادگیری ارتباطات کلیدی بسازید (ارتباط و سرمایه شما رو همیشه جلو میندازه)
و از الان بگم هر تلاش و هدف بزرگی توش شکستم داره! افتادید ، پاشید و دوباره ادامه بدید ، هیچ اتفاق بزرگی یه شبه به وجود نمیاد (به جز شب ایجاد ادمای مهم
حرف آخر اینه: برنامه نویسی به مهارت عالی و سخته ، ولی فقط یه قطعه از پازلمونه! از مهارتونن استفاده کنید برای خلق یه ارزش جدید
یادت نره ، تو فقط یه برنامه نویس نیستی، یه خالقی، یه کارآفرین بالقوه ایی و کسی که میتونه با مهارتش دنیا رو تکون بده
تازه دوست منم هستی
پس بیا بریم دنیا رو تکون بدیم
#programming
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 🎄 DevTwitter | توییت برنامه نویسی
Forwarded from Code Module | کد ماژول (genix)
علتش چیه؟ 😠
چند وقت پیش داشتم الگوریتم مرتب سازی insertion رو پیاده سازی میکردم و برام سوال شد، چجوری میتونم سرعت مرتب سازی رو بیشتر کنم (در حد کنجکاوی). در هنگام پیادهسازی الگوریتم مرتبسازی Insertion Sort در جاوااسکریپت، معمولاً این الگوریتم به صورت زیر نوشته میشه:
در اینجا، زمان اجرای الگوریتم با استفاده از console.time() و console.timeEnd() اندازهگیری میشه. معمولاً زمان اجرای این کد بین ۱۰ تا ۱۵ میلیثانیه متغیر هست. به این صورت:
حالا اگر خروجی آرایه رو به یک رشته تبدیل کنیم و سپس اون رو برگردونیم:
خروجی:
با انجام این تغییر، زمان اجرای الگوریتم به صورت چشمگیری کاهش پیدا میکنه و بین ۸ تا ۱۰ میلیثانیه متغیر میشه.
سوال اصلی اما اینجاست:
چرا تبدیل آرایه به رشته باعث کاهش زمان اجرای الگوریتم مرتبسازی Insertion میشه؟ آیا این تغییرات قابل توجه هستن و باید در برنامه هایی که میسازیم نگران چنین تفاوتهای جزئی ای باشیم؟
#nodejs #array
@CodeModule
چند وقت پیش داشتم الگوریتم مرتب سازی insertion رو پیاده سازی میکردم و برام سوال شد، چجوری میتونم سرعت مرتب سازی رو بیشتر کنم (در حد کنجکاوی). در هنگام پیادهسازی الگوریتم مرتبسازی Insertion Sort در جاوااسکریپت، معمولاً این الگوریتم به صورت زیر نوشته میشه:
function insertionSort(arr) {
for (let i = 1; i < arr.length; i = i + 1) {
let cE = arr[i];
let j = i;
while (j > 0 && arr[j - 1] > cE) {
arr[j] = arr[j - 1];
j = j - 1;
}
arr[j] = cE;
}
return arr;
}
console.time();
const uArray = [20, 10, 4, 51, 0, 0xd3, 0x42, 0.4, 0.00002, 0x2];
const sArray = insertionSort(uArray);
console.log("Sorted array:", sArray);
console.timeEnd();در اینجا، زمان اجرای الگوریتم با استفاده از console.time() و console.timeEnd() اندازهگیری میشه. معمولاً زمان اجرای این کد بین ۱۰ تا ۱۵ میلیثانیه متغیر هست. به این صورت:
Sorted array: [ 0, 0.00002, 0.4, 2, 4, 10, 20, 51, 66, 211 ]
default: 10.793ms
حالا اگر خروجی آرایه رو به یک رشته تبدیل کنیم و سپس اون رو برگردونیم:
return String(arr);
خروجی:
Sorted array: 0,0.00002,0.4,2,4,10,20,51,66,211
default: 8.899ms
با انجام این تغییر، زمان اجرای الگوریتم به صورت چشمگیری کاهش پیدا میکنه و بین ۸ تا ۱۰ میلیثانیه متغیر میشه.
سوال اصلی اما اینجاست:
چرا تبدیل آرایه به رشته باعث کاهش زمان اجرای الگوریتم مرتبسازی Insertion میشه؟ آیا این تغییرات قابل توجه هستن و باید در برنامه هایی که میسازیم نگران چنین تفاوتهای جزئی ای باشیم؟
#nodejs #array
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM