این پست رو لینکدین گذاشتم.
درمورد مقدس نبودن clean code و design patterns ها نکاتی گفتم.
شاید بدردتون بخوره
https://www.linkedin.com/posts/imanhpr_clean-code-horrible-performance-activity-7155431493845069824-TSsf?utm_source=share&utm_medium=member_android
درمورد مقدس نبودن clean code و design patterns ها نکاتی گفتم.
شاید بدردتون بخوره
https://www.linkedin.com/posts/imanhpr_clean-code-horrible-performance-activity-7155431493845069824-TSsf?utm_source=share&utm_medium=member_android
Linkedin
Iman Hosseini Pour on LinkedIn: "Clean" Code, Horrible Performance
این پست دوستمون من رو یاد یک جمله قشنگ که داخل The zen of #python هست انداخت که میگه.
"Although practicality beats purity"
اگر به این جمله دقت کنیم میتونیم این…
"Although practicality beats purity"
اگر به این جمله دقت کنیم میتونیم این…
👍9
دوستان جدیدتر راستی برای چنل یک گروه داریم درمورد مفاهیم برنامه نویسی و پرسش پاسخ هست دوست داشتید خوشحال میشیم جوین بشید.
@nodemastergp
@nodemastergp
Node Master
امروز درمورد Duck Typing صحبت میکنیم. این موضوع مربوط به رفتار زبان های dynamic type میباشد. البته این تکنیک در زبان هایی static type هم در حالت های خاصی استفاده میشود. برای درک این موضوع با مثال در #Python شروع میکنیم. class Duck: def fly(self): …
قبلا درمورد Type Predict ها در #TypeScript صحبت کردیم از این لینک یک مطالعه کنید
https://news.1rj.ru/str/NodeMaster/90
و این که یک قسمت گفتیم که دو دیدگاه برای فیکس کردن همچین crash هایی در Runtime وجود دارد.
- Easier to ask for forgiveness than permission (EAFP)
- Look before you leap (LBYL)
قبل از این که درمورد این دو دیدگاه صحبت کنیم باید بگم که هرکدوم از این ها در یک زبان هایی مرسوم هست. به عنوان مثال در #Python نماد کد تمیز استفاده از EAFP و در #Javanoscript باید از LBYL استفاده کرد.
خودتون یکم برید راجع به این دوتا مطالعه کنید و بنظرتون بگید که Type Predict ها در #TypeScript از کدوم از این استایل ها استفاده میکنن؟
https://news.1rj.ru/str/NodeMaster/90
و این که یک قسمت گفتیم که دو دیدگاه برای فیکس کردن همچین crash هایی در Runtime وجود دارد.
- Easier to ask for forgiveness than permission (EAFP)
- Look before you leap (LBYL)
قبل از این که درمورد این دو دیدگاه صحبت کنیم باید بگم که هرکدوم از این ها در یک زبان هایی مرسوم هست. به عنوان مثال در #Python نماد کد تمیز استفاده از EAFP و در #Javanoscript باید از LBYL استفاده کرد.
خودتون یکم برید راجع به این دوتا مطالعه کنید و بنظرتون بگید که Type Predict ها در #TypeScript از کدوم از این استایل ها استفاده میکنن؟
Telegram
Node Master
یکی از قابلیت های خیلی خوب #typenoscript که خیلی کم استفاده میشه "type predicate" هست. به این شکل هست که شما در runtime میتونید یک interface رو valid کنید. همونطور که میدونید interface ها در typenoscript کلا در کد transpile نمیشوند و معمولا اکثرا با استفاده از…
👍1
Node Master
قبلا درمورد Type Predict ها در #TypeScript صحبت کردیم از این لینک یک مطالعه کنید https://news.1rj.ru/str/NodeMaster/90 و این که یک قسمت گفتیم که دو دیدگاه برای فیکس کردن همچین crash هایی در Runtime وجود دارد. - Easier to ask for forgiveness than permission (EAFP)…
اینجا هم یک نمونه از Duck Typing قبلا در یکی از پست ها گفته بودم که به عنوان سوال بود.
https://news.1rj.ru/str/NodeMaster/118
https://news.1rj.ru/str/NodeMaster/118
Telegram
Node Master
خب هنوز یک قدم میخوایم پا رو فراتر بزاریم و class رو در runtime بسازیم. اول این که در #Javanoscript کلاس ها در حقیقت همون فانکشن ها هستن و صرفا کلمه class یک syntactic sugar روی نسخه ES5 هست. کلمه class در آپدیت معروف ES6 به #Javanoscript اضافه شد.
یعنی این دوتا…
یعنی این دوتا…
👍3
یک ابزار جدید از سمت مایکروسافت برای #TypeScript معرفی شده به اسم TypeSpec.
کارای زیادی میتونه کنه.
خودم چیز زیادی ازش نمیدونم ولی یک نگاهی شما هم دوست داشتید بندازید.
https://typespec.io/
#Weekly
کارای زیادی میتونه کنه.
خودم چیز زیادی ازش نمیدونم ولی یک نگاهی شما هم دوست داشتید بندازید.
https://typespec.io/
#Weekly
👍8
#Work
https://www.linkedin.com/posts/amir-honarmand-zade_aepaebaesaewaexaepaet-nodejs-aetaecaevaex-activity-7153837711496261632-gH3G?utm_source=share&utm_medium=member_android
تشکر از بچه های گروه که این کار رو معرفی کردن.
دوستان اگر دوست داشتید به گروه اینجا جوین بشید.
@nodemasterGp
https://www.linkedin.com/posts/amir-honarmand-zade_aepaebaesaewaexaepaet-nodejs-aetaecaevaex-activity-7153837711496261632-gH3G?utm_source=share&utm_medium=member_android
تشکر از بچه های گروه که این کار رو معرفی کردن.
دوستان اگر دوست داشتید به گروه اینجا جوین بشید.
@nodemasterGp
Linkedin
#استخدام #nodejs #مشهد | amir honarmand
🔶 استخدام برنامه نویس تازه کار Node.js در مشهد
🔸مواردی که بهتر است تا حدودی بلد باشید:
🔹javaScript
🔹node.js
🔹nest.js
🔹express.js
دوستانی که تمایل به همکاری دارند لطفاً پیام بدن.
ممنون میشم پست رو لایک کنید.
#استخدام
#nodejs
#مشهد
🔸مواردی که بهتر است تا حدودی بلد باشید:
🔹javaScript
🔹node.js
🔹nest.js
🔹express.js
دوستانی که تمایل به همکاری دارند لطفاً پیام بدن.
ممنون میشم پست رو لایک کنید.
#استخدام
#nodejs
#مشهد
Node Master
امروز درمورد Duck Typing صحبت میکنیم. این موضوع مربوط به رفتار زبان های dynamic type میباشد. البته این تکنیک در زبان هایی static type هم در حالت های خاصی استفاده میشود. برای درک این موضوع با مثال در #Python شروع میکنیم. class Duck: def fly(self): …
برای درک مفهوم Duck Test و کلا Duck Typing میتونیم با این مثال درمورد Promise ها نکاتی یاد بگیریم. فرض کنید فانکشنی داریم که یک Promise رو میگیره و حالا یک کاری انجام میده.
مثال خیلی ساده هست. به این نکته توجه کنید که ما اینجا هیچ نوع type check نداریم. و برنامه میتونه در runtime به مشکل بخوره اگر workPromise یک instance از Promise نباشد. توجه کنید ما همین الان هم داریم از Duck Typing استفاده میکنیم چون در doWork هیچ خبری نداریم و فقط then رو call میکنیم با فرض این که Promise یا Duck باشد.
حالا کد رو یکم بهتر میکنیم.
در "node:util" یک namespace داریم به اسم type که در اینجا یک سری فانکشن کمکی برای چک کردن تایپ ها ( Type predict function ) داریم که به ما کمک میکنن که کد safe تر باشه. الان این کد رو اگر اجرا کنید همه چیز اوکی هست و کار میکنه. ولی یک edge case اینجا وجود داره که خیلی کمتر به چشم میاد. با مثال بعد متوجه میشید ولی بزارید اول با یک سوال مطرح کنم موضوع رو.
اگر Promise Object ما از Native Promise خود #Javanoscript نباشد چه اتفاقی پیش میاد؟ قطعا این کد به مشکل میخوره چون isPromise فقط Native Promise ها رو چک میکنه و نه 3rd party ها که ممکنه در خیلی از code base ها باشه.
به عنوان مثال اگر از پکیج زیر استفاده شده باشه.
https://www.npmjs.com/package/promise
حالا اگر فقط این پکیج import شده باشه این کد به مشکل میخوره
حالا شما میگی ایمان خب با شرط رو با instaceof چک میکنیم که اگر این پکیج بود درست اجرا بشه. و شرط رو به این شکل عوض میکنید.
دوباره اینجا یک مشکل پیش میاد چون فقط همین یک پکیج نیست. به عنوان مثال اگر bluebird استفاده کرده باشن کد مشکل میخوره. خب منظورم رو تا الان متوجه شدین بریم سراغ Duck Test. اون جمله معروف که در پست اول گفتیم رو به یاد بیارید اول و حالا دقت کنید.
درسته این پکیج ها متفاوت هستند ولی همشون interface های یکسانی دارند. اینجا دوست دارم یک رفرنس بزنم به یک جمله معروف که اگر عمیق درکش کنید چند level یک شبه در برنامه نویسی پیشرفت میکنید.
"program to interfaces, not implementations"
اینجا دقیقا این lib ها از این مفهوم استفاده کردند برای Promise به ما implementation های زیادی داریم ولی نقطه مشترک همشون داشتن interface یکسان هست که به عنوان مثال همشون متد .then دارند. اصن وقتی در مثال بالا ما بدون تغییر کد فقط با import کردن کل ساختار رو عوض کردیم که کد به مشکل خورد مثال همین موضوع هست.
حالا کافیه با استناد به این جمله کلیدی و زیبا و Duck Test و فرض گرفتن که همه این lib ها متد .then رو دارند شرط رو عوض کنیم.
حالا شما اگر شرط بالا رو به این صورت بنویسید (دقیقا مثل type predict ها در #TypeScript) میبینید که کد با هر library کار میکنه. چون شما وابستگی خودتون رو از implementation شکوندین و به interface وابسته شدین. مهم نیست که object ورودی یک instance از Promise خاصی باشد. مهم این هست که شبیه به Promise ها رفتار کند ( به عنوان مثال متد .then داشته باشد).
این بود مفهوم Duck Test به صورت کاربردی. توجه کنید که کد بالا به صورت production ready نیست و صرفا فقط برای توضیح مفاهیم بود.
امیدوارم خوشتون اومده باشه.
#Tip
#NodeJS
function doWork(promise) {
promise.then(() => {
console.log("Work Is Done");
});
}
const newPromise = Promise.resolve("Hello Promise");
doWork(newPromise);مثال خیلی ساده هست. به این نکته توجه کنید که ما اینجا هیچ نوع type check نداریم. و برنامه میتونه در runtime به مشکل بخوره اگر workPromise یک instance از Promise نباشد. توجه کنید ما همین الان هم داریم از Duck Typing استفاده میکنیم چون در doWork هیچ خبری نداریم و فقط then رو call میکنیم با فرض این که Promise یا Duck باشد.
حالا کد رو یکم بهتر میکنیم.
import { types } from "node:util";
function doWork(promise) {
if (types.isPromise(promise)) {
promise.then(() => {
console.log("Work Is Done");
});
}
}در "node:util" یک namespace داریم به اسم type که در اینجا یک سری فانکشن کمکی برای چک کردن تایپ ها ( Type predict function ) داریم که به ما کمک میکنن که کد safe تر باشه. الان این کد رو اگر اجرا کنید همه چیز اوکی هست و کار میکنه. ولی یک edge case اینجا وجود داره که خیلی کمتر به چشم میاد. با مثال بعد متوجه میشید ولی بزارید اول با یک سوال مطرح کنم موضوع رو.
اگر Promise Object ما از Native Promise خود #Javanoscript نباشد چه اتفاقی پیش میاد؟ قطعا این کد به مشکل میخوره چون isPromise فقط Native Promise ها رو چک میکنه و نه 3rd party ها که ممکنه در خیلی از code base ها باشه.
به عنوان مثال اگر از پکیج زیر استفاده شده باشه.
https://www.npmjs.com/package/promise
حالا اگر فقط این پکیج import شده باشه این کد به مشکل میخوره
import Promise from "promise";
حالا شما میگی ایمان خب با شرط رو با instaceof چک میکنیم که اگر این پکیج بود درست اجرا بشه. و شرط رو به این شکل عوض میکنید.
import Promise from "promise";
import { types } from "node:util";
function doWork(promise) {
if (types.isPromise(promise) || promise instanceof Promise) {
promise.then(() => {
console.log("Work Is Done");
});
}
}
دوباره اینجا یک مشکل پیش میاد چون فقط همین یک پکیج نیست. به عنوان مثال اگر bluebird استفاده کرده باشن کد مشکل میخوره. خب منظورم رو تا الان متوجه شدین بریم سراغ Duck Test. اون جمله معروف که در پست اول گفتیم رو به یاد بیارید اول و حالا دقت کنید.
درسته این پکیج ها متفاوت هستند ولی همشون interface های یکسانی دارند. اینجا دوست دارم یک رفرنس بزنم به یک جمله معروف که اگر عمیق درکش کنید چند level یک شبه در برنامه نویسی پیشرفت میکنید.
"program to interfaces, not implementations"
اینجا دقیقا این lib ها از این مفهوم استفاده کردند برای Promise به ما implementation های زیادی داریم ولی نقطه مشترک همشون داشتن interface یکسان هست که به عنوان مثال همشون متد .then دارند. اصن وقتی در مثال بالا ما بدون تغییر کد فقط با import کردن کل ساختار رو عوض کردیم که کد به مشکل خورد مثال همین موضوع هست.
حالا کافیه با استناد به این جمله کلیدی و زیبا و Duck Test و فرض گرفتن که همه این lib ها متد .then رو دارند شرط رو عوض کنیم.
function doWork(promise) {
if (promise && promise.then && typeof promise.then === "function") {
promise.then(() => {
console.log("Work Is Done");
});
}
}حالا شما اگر شرط بالا رو به این صورت بنویسید (دقیقا مثل type predict ها در #TypeScript) میبینید که کد با هر library کار میکنه. چون شما وابستگی خودتون رو از implementation شکوندین و به interface وابسته شدین. مهم نیست که object ورودی یک instance از Promise خاصی باشد. مهم این هست که شبیه به Promise ها رفتار کند ( به عنوان مثال متد .then داشته باشد).
این بود مفهوم Duck Test به صورت کاربردی. توجه کنید که کد بالا به صورت production ready نیست و صرفا فقط برای توضیح مفاهیم بود.
امیدوارم خوشتون اومده باشه.
#Tip
#NodeJS
👍11
Node Master
برای درک مفهوم Duck Test و کلا Duck Typing میتونیم با این مثال درمورد Promise ها نکاتی یاد بگیریم. فرض کنید فانکشنی داریم که یک Promise رو میگیره و حالا یک کاری انجام میده. function doWork(promise) { promise.then(() => { console.log("Work Is Done");…
اگر تمام این مفاهیم که تا الان باهم یاد گرفتیم رو بخواهیم بندازیم دور و فقط و فقط یکیش رو یاد بگیریم. همین جمله معروف
"program to interfaces, not implementations"
میتونید درموردش داخل این stack overflow بیشتر یاد بگیرید.
https://stackoverflow.com/questions/2697783/what-does-program-to-interfaces-not-implementations-mean
تجربه شخصی : زندگی من بعد از درک این جمله قشنگ دو تیکه شد. قبل از یاد گرفتن این و بعد از یاد گرفتنش. یادمه از شدت خوشحالی که چقدر این موضوع قوی و باحاله اشک تو چشام جمع شده بود. و آرزو میکردم ای کاش خیلی قبل تر یکی این موضوع رو بهم میگفت.
"program to interfaces, not implementations"
میتونید درموردش داخل این stack overflow بیشتر یاد بگیرید.
https://stackoverflow.com/questions/2697783/what-does-program-to-interfaces-not-implementations-mean
تجربه شخصی : زندگی من بعد از درک این جمله قشنگ دو تیکه شد. قبل از یاد گرفتن این و بعد از یاد گرفتنش. یادمه از شدت خوشحالی که چقدر این موضوع قوی و باحاله اشک تو چشام جمع شده بود. و آرزو میکردم ای کاش خیلی قبل تر یکی این موضوع رو بهم میگفت.
Stack Overflow
What does "program to interfaces, not implementations" mean?
One stumbles upon this phrase when reading about design patterns.
But I don't understand it, could someone explain this for me?
But I don't understand it, could someone explain this for me?
👍8
من یک تشکر از دوستان کنم.
گروه چنل 100 نفره شد🎉.
از همه ممنونم امیدوارم گروه و چنل براتون مفید باشه❤️
گروه چنل 100 نفره شد🎉.
از همه ممنونم امیدوارم گروه و چنل براتون مفید باشه❤️
👍13
یکی از مشکلاتی که در #NodeJS وجود داره Manage کردن ورژن های مختلف Package manager ها هست. همونطور که میدونید پکیج منیجر های مختلفی برای #NodeJS وجود داره که در پایین میبینید.
npm - bun - yarn - pnpm
حالا باتوجه به سلیقه شخصی هرشخصی در پروژه های خودشون از این پکیج منیجر ها استفاده میکنند. جدا از این ممکنه یک پروژه ای از یک ویژگی مربوط به یکی از اینها استفاده کنه که وابستگی زیادی بین پروژه و پکیج منیجر ایجاد میکنه.
فرض کنید یک پروژه رو میخواید به سیستم دوستتون انتقال بدید که از pnpm استفاده میکنه دوستتون yarn داره اینجا دوتا چالش به وجود میاد.
- چالش نصب pnpm به صورت دستی
- نصب ورژن مورد نیاز پروژه
حالا در همچین سناریو هایی #NodeJS در ورژن های v16.9.0, v14.19.0 ابزاری به اسم corepack اضافه کرده که بهتون کمک میکنه اعضای تیم خودتون رو سریعتر به مرحله productive بودن روی پروژه های جدید برسونید. وقتی nodejs رو نصب میکنید corepack به صورت پیش فرض نصب هست ولی به دلیل experimental بودن غیرفعال هست. برای فعال کردنش میتونید از command زیر استفاده کنید
بعد حالا اگر میخواید مثلا مشخص کنید که پروژه شما از pnpm نسخه 8 استفاده میکنه که در هنگام انقال همه چی فیکس باشه میتونید از این command استفاده کنید.
بعد از این کامند به package.json شما یک attr اضافه میشه شبیه به زیر که ورژن دقیق package manager شما رو مشخص میکنه.
حالا اگر روی یک سیستم دیگ شما برای نصب package manager برای این پروژه از command زیر استفاده کنید تمام مشکلات بالا حل میشه و دقیقا package manager مناسب پروژه خواهید داشت
این ابزار میتونه برای تیم هایی که با #NodeJS کار میکنند کمک خوبی باشه که دست خط های خودشون رو یکی کنند.
نظر شخصی : به تازگی روی یکی از پروژه ها محل کارم از این موضوع استفاده کردیم و در نگاه اول بازخورد خوبی داشتیم.
#Tip
npm - bun - yarn - pnpm
حالا باتوجه به سلیقه شخصی هرشخصی در پروژه های خودشون از این پکیج منیجر ها استفاده میکنند. جدا از این ممکنه یک پروژه ای از یک ویژگی مربوط به یکی از اینها استفاده کنه که وابستگی زیادی بین پروژه و پکیج منیجر ایجاد میکنه.
فرض کنید یک پروژه رو میخواید به سیستم دوستتون انتقال بدید که از pnpm استفاده میکنه دوستتون yarn داره اینجا دوتا چالش به وجود میاد.
- چالش نصب pnpm به صورت دستی
- نصب ورژن مورد نیاز پروژه
حالا در همچین سناریو هایی #NodeJS در ورژن های v16.9.0, v14.19.0 ابزاری به اسم corepack اضافه کرده که بهتون کمک میکنه اعضای تیم خودتون رو سریعتر به مرحله productive بودن روی پروژه های جدید برسونید. وقتی nodejs رو نصب میکنید corepack به صورت پیش فرض نصب هست ولی به دلیل experimental بودن غیرفعال هست. برای فعال کردنش میتونید از command زیر استفاده کنید
corepack enable
بعد حالا اگر میخواید مثلا مشخص کنید که پروژه شما از pnpm نسخه 8 استفاده میکنه که در هنگام انقال همه چی فیکس باشه میتونید از این command استفاده کنید.
corepack use pnpm@8.x
بعد از این کامند به package.json شما یک attr اضافه میشه شبیه به زیر که ورژن دقیق package manager شما رو مشخص میکنه.
{
"packageManager": "pnpm@8.15.1+sha256.245fe901f8e7fa8782d7f17d32b6a83995e2ae03984cb5b62b8949bfdc27c7b5"
}حالا اگر روی یک سیستم دیگ شما برای نصب package manager برای این پروژه از command زیر استفاده کنید تمام مشکلات بالا حل میشه و دقیقا package manager مناسب پروژه خواهید داشت
corepack install
این ابزار میتونه برای تیم هایی که با #NodeJS کار میکنند کمک خوبی باشه که دست خط های خودشون رو یکی کنند.
نظر شخصی : به تازگی روی یکی از پروژه ها محل کارم از این موضوع استفاده کردیم و در نگاه اول بازخورد خوبی داشتیم.
#Tip
👍18
مدتی هست در خبرنامه های #NodeWeekly خبر خاصی به چشمم نمیاد واقعا.
این هفته خبر اومدن نسخه 5.4 Typenoscript به صورت Beta رو دیدم.
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-4-beta/
و نسخه 6 برای فریم ورک AdonisJS که حرکت بزرگی زدن و به صورت پیش فرض اومدن روی ESM
https://adonisjs.com/blog/adonisjs-v6-announcement
این هفته خبر اومدن نسخه 5.4 Typenoscript به صورت Beta رو دیدم.
https://devblogs.microsoft.com/typenoscript/announcing-typenoscript-5-4-beta/
و نسخه 6 برای فریم ورک AdonisJS که حرکت بزرگی زدن و به صورت پیش فرض اومدن روی ESM
https://adonisjs.com/blog/adonisjs-v6-announcement
Microsoft News
Announcing TypeScript 5.4 Beta
Today we are excited to announce the availability of TypeScript 5.4 Beta. To get started using the beta, you can get it through NuGet, or through npm with the following command: npm install -D typenoscript@beta Here’s a quick list of what’s new in TypeScript…
👍5
سلام دوستان ارادت. همونطور که اطلاع دارید یک گروه داریم به اسم @NodeMasterGP که دور هم جمع شدیم تا بتونیم باهم پیشرفت کنیم.
اعضای گروه چند شب پیش داشتن درمورد موضوعی صحبت میکردن که در نهایت یکی از دوستان تصمیم گرفت یک وبینار رایگان برگزار کنه برامون.
مدرس این وبینار آقای رستم دخت سابقه خیلی زیادی در زمینه BackEnd دارن.
تاریخ برگزاری وبینار از ساعت 19:30 تا 22:30 روز چهار شنبه 18 بهمن ماه هست که میتونید شرکت کنید.
از این لینک میتونید ثبت نام کنید.
https://formafzar.com/form/f21m6
اعضای گروه چند شب پیش داشتن درمورد موضوعی صحبت میکردن که در نهایت یکی از دوستان تصمیم گرفت یک وبینار رایگان برگزار کنه برامون.
مدرس این وبینار آقای رستم دخت سابقه خیلی زیادی در زمینه BackEnd دارن.
تاریخ برگزاری وبینار از ساعت 19:30 تا 22:30 روز چهار شنبه 18 بهمن ماه هست که میتونید شرکت کنید.
از این لینک میتونید ثبت نام کنید.
https://formafzar.com/form/f21m6
👍6
خب دوستان صبح اول هفته خودمون رو با یک خبر امنیتی از #npmjs شروع میکنیم. همونطور که میدونید بار ها درمورد امنیت صحبت کردیم. همه شنیدیم که از یوتیوب و تلگرام و دیسکورد به عنوان storage رایگان استفاده میکنن خیلیا. اینبار حدود 748 پکیج پیدا کردند که شامل فیلم میباشند. البته اگر یکم در #npmjs عمیق تر بشید میتونید کتاب و ... همه پیدا کنید.
فیلم هم ظاهرا شبیهه به جومونگ هست که عکساش رو میتونید داخل پست اصلی ببینید.
منبع :
https://blog.sonatype.com/npm-flooded-with-748-packages-that-store-movies
#Security
فیلم هم ظاهرا شبیهه به جومونگ هست که عکساش رو میتونید داخل پست اصلی ببینید.
منبع :
https://blog.sonatype.com/npm-flooded-with-748-packages-that-store-movies
#Security
Sonatype
npm Registry Flooded with 748 Movie-Storing Packages
The Sonatype Security Research team came across 748 packages flooding the npm software registry.
همیشه دنبال یک معادل مناسب برای #Python Beautiful Soup در اکوسیستم #NodeJS بودم که نخوام با headless browser ها scrap انجام بدم. امروز این پکیج رو پیدا کردم شما هم اگر دوست داشتید یک چک کنید.
https://www.npmjs.com/package/cheerio
https://www.npmjs.com/package/cheerio
بچه های #FrontEnd و #BackEnd هفته پیش Deno نسخه 1.40 منتشر شد توجه کنید. حالا سوال پیش براتون میاد که چه ربطی به ما داره. دو proposal مربوط به #EcmaScript در این آپدیت نکاتی وجود داره.
همونطور که میدونید Date در #Javanoscript همیشه مشکلات داشته و اکثرا از lib هایی مثل moment و ... استفاده میشد. استاندارد TC39 Temporal وارد Stage 3 شده و Deno ظاهرا اولین Runtime میباشد که این استاندارد رو پیاده سازی کرده و الان میتونید با فلگ unstable ازش استفاده کنید. قطعا به زودی شاهد پیاده سازی ها روی سایر Runtime ها مثل #NodeJS و مرورگر ها برای فرانت خواهیم بود.
لینک مربوطه : https://tc39.es/proposal-temporal/docs/index.html
دقت کنید بهش میبینید ساپورت تقویم فارسی هم داره :)
حالا این رو اینطور ران کنید.
موضوع بعدی مربوط به استاندارد TC39 Decorators هست. باتوجه به محبوب بودن Decorator ها در transpiler ها بعد از سالها بلاخره این هم وارد Stage 3 شد. یعنی به زودی شاهد Decorator ها در #JavaScript به صورت Native خواهیم بود. این ویژگی الان سمت Deno در آپدیت 1.40 اضافه شاده و به زودی شاهد اومدنش در مرورگر ها هم خواهیم بود. البته فایل ها #JavaScript محدودیت داره بخاطر پیاده سازی سمت انجین V8
لینک مربوطه : https://github.com/tc39/proposal-decorators
چند وقت پیش درمورد اضافه شدن impoer.meta.dirname و import.meta.filename در #NodeJS صحبت کردیم. در آپدیت 1.40 این ويژگی به Deno هم اضافه شد تا سازگاری با استانداردها و Runtime های دیگه حفظ بشه.
لینک پست : https://news.1rj.ru/str/NodeMaster/123
بلاگ پست مربوطه به این آپدیت دینو : https://deno.com/blog/v1.40
همونطور که میدونید Date در #Javanoscript همیشه مشکلات داشته و اکثرا از lib هایی مثل moment و ... استفاده میشد. استاندارد TC39 Temporal وارد Stage 3 شده و Deno ظاهرا اولین Runtime میباشد که این استاندارد رو پیاده سازی کرده و الان میتونید با فلگ unstable ازش استفاده کنید. قطعا به زودی شاهد پیاده سازی ها روی سایر Runtime ها مثل #NodeJS و مرورگر ها برای فرانت خواهیم بود.
لینک مربوطه : https://tc39.es/proposal-temporal/docs/index.html
دقت کنید بهش میبینید ساپورت تقویم فارسی هم داره :)
const now = Temporal.Now.plainDateISO(); // Output => 2024-02-03
const twoDay = Temporal.Duration.from("P2D"); // Output => 2024-02-05
const twoDayLater = now.add(twoDay);
twoDayLater.toLocaleString("fa-Fa"); // Output => ۱۱۴۰۲/۱۱/۱۶
// Support for persian calender
twoDayLater.withCalendar("persian")
حالا این رو اینطور ران کنید.
deno run --unstable-temporal main.ts
موضوع بعدی مربوط به استاندارد TC39 Decorators هست. باتوجه به محبوب بودن Decorator ها در transpiler ها بعد از سالها بلاخره این هم وارد Stage 3 شد. یعنی به زودی شاهد Decorator ها در #JavaScript به صورت Native خواهیم بود. این ویژگی الان سمت Deno در آپدیت 1.40 اضافه شاده و به زودی شاهد اومدنش در مرورگر ها هم خواهیم بود. البته فایل ها #JavaScript محدودیت داره بخاطر پیاده سازی سمت انجین V8
لینک مربوطه : https://github.com/tc39/proposal-decorators
چند وقت پیش درمورد اضافه شدن impoer.meta.dirname و import.meta.filename در #NodeJS صحبت کردیم. در آپدیت 1.40 این ويژگی به Deno هم اضافه شد تا سازگاری با استانداردها و Runtime های دیگه حفظ بشه.
لینک پست : https://news.1rj.ru/str/NodeMaster/123
بلاگ پست مربوطه به این آپدیت دینو : https://deno.com/blog/v1.40
👍11
یکی از Flag هایی که به #NodeJS مدتی هست اضافه شده یعنی ورژن v20.6.0 که خیلی هم کاربردی هست مربوط به .env ها هست.
شما با فلگ زیر میتونید بدون استفاده از پکیج هایی مثل dotenv فایل های .env رو به راحتی لود کنید داخل پروژه خودتون.
این ویژگی یکی از ویژگی های خوب Deno هست که به صورت builtin قرار داشت و تیم #NodeJS هم با تصمیم خوبی گرفتند که این رو اضاف کردند.
#Tip
شما با فلگ زیر میتونید بدون استفاده از پکیج هایی مثل dotenv فایل های .env رو به راحتی لود کنید داخل پروژه خودتون.
node --env-file=.env --env-file=.development.env index.js
این ویژگی یکی از ویژگی های خوب Deno هست که به صورت builtin قرار داشت و تیم #NodeJS هم با تصمیم خوبی گرفتند که این رو اضاف کردند.
#Tip
👍19
سلام و خسته نباشید.
یک تیم ایرانی در حال توسعه یک فریم ورک با #Deno هستند و من با سازنده این فریمورک صحبتی داشتم.
لینک گیتهاب :https://github.com/MiaadTeam/lesan#many-thanks-to-those-who-supported-us
نقل از سازنده :
یک وبسرور بعلاوه ODM بر روی MongoDB، که با الهام از GraphQL مدیریت دریافت دادهها رو به سمت Client سپرده ولی خیلی از مشکلات اون رو نداره.
و از همه مهمتر یه تعریف جدید از رابطهی بین دادهها ارائه میده، که باعث میشه دریافت دادهها بسیار سریعتر انجام بشه و مدیریت اونها قابل فهمتر باشه. این فریمورک تمام رابطهها رو بدون دردسر امبد میکنه و سرعت خواندن اطلاعات توش وحشتناک بالاست.
(بنچمارک رو ببینید https://miaadteam.github.io/lesan/#benchmarks).
نوع نگاه لسان به رابطهها باعث شده دادهها و کوئریها برای دریافت اونها ساده سازی بشند، به همین خاطر کل فرآیند از کدنویسی تا لایه کش حتی دیتا ماین هم ساده میشه.
من خودم فرصت نکردم دقیق چک کنم ولی اگر دوست داشتید یک سر بزنید بهش نظراتتون رو بگید.
داکیومنت :
https://miaadteam.github.io/lesan/
ارتباط با تیم : @syd_amir
یک تیم ایرانی در حال توسعه یک فریم ورک با #Deno هستند و من با سازنده این فریمورک صحبتی داشتم.
لینک گیتهاب :https://github.com/MiaadTeam/lesan#many-thanks-to-those-who-supported-us
نقل از سازنده :
یک وبسرور بعلاوه ODM بر روی MongoDB، که با الهام از GraphQL مدیریت دریافت دادهها رو به سمت Client سپرده ولی خیلی از مشکلات اون رو نداره.
و از همه مهمتر یه تعریف جدید از رابطهی بین دادهها ارائه میده، که باعث میشه دریافت دادهها بسیار سریعتر انجام بشه و مدیریت اونها قابل فهمتر باشه. این فریمورک تمام رابطهها رو بدون دردسر امبد میکنه و سرعت خواندن اطلاعات توش وحشتناک بالاست.
(بنچمارک رو ببینید https://miaadteam.github.io/lesan/#benchmarks).
نوع نگاه لسان به رابطهها باعث شده دادهها و کوئریها برای دریافت اونها ساده سازی بشند، به همین خاطر کل فرآیند از کدنویسی تا لایه کش حتی دیتا ماین هم ساده میشه.
من خودم فرصت نکردم دقیق چک کنم ولی اگر دوست داشتید یک سر بزنید بهش نظراتتون رو بگید.
داکیومنت :
https://miaadteam.github.io/lesan/
ارتباط با تیم : @syd_amir
GitHub
GitHub - MiaadTeam/lesan: New way to create web server and NoSQL data model
New way to create web server and NoSQL data model. Contribute to MiaadTeam/lesan development by creating an account on GitHub.
👍8
مدتی هست در گروره کانال @NodeMasterGP بچها خیلی درمورد ماهیت Async بودن و Single Thread بودن #NodeJS صحبت میکنند. یکی از env های استاندارد UV_THREADPOOL_SIZE هست. همونطور که میدونید پشت انجین #NodeJs یک کتاب خانه Native برای هندل کردن کار ها به صورت async میباشد. این native lib وظیفه دارد تا یک interface یکسان برای تمامی سیستم عامل ها به وجود آورد. بعضی از api ها به صورت کلی به صورت Sync هستن ولی معادل Async اون رو ما داخل NodeJS میبینیم. به عنوان مثال "node:crypto" برای ما cps async api داره ولی ذات اونها sync هست. حالا سوال پیش میاد که چطور چیزی که sync هست رو async کنیم.
در اینجا libuv یک راه حل هوشمندانه داره. با استفاده از Thread Pool pattern در MultiThreading و ایجاد صف از کار هایی که باید همزمان انجام بشوند api های sync رو تبدیل به async میکنه. هرکدوم از این ترد ها یک کار رو برمیداره انجام میده و دوباره میره سراغ کار بعدی. حالا شما میتونید تعداد thread هایی که در این استخر وجود داره رو کنترل کنید.( خیلی شبیه به معماری master slave هست )
تعداد thread های در pool به صورت پیش فرض ۴ هست. معمولا طبق best practise هایی که من مطالعه داشتم به صورت کلی میگن به تعداد هسته های CPU خوبه. اما اگر بخوایم دقیق تر به این موضوع نگاه کنیم فاکتور های خیلی زیادتری داریم که من خودم هنوز دقیق نتونستم مطالعه کنم درموردشون. سخت ترین کار پیدا کردن همین بالانس هست که یک اصول داره.
با استفاده از این env میتونیم رفتار #NodeJS رو خیلی دقیق تر نگاه کنیم در سناریو های مختلف.
این موضوع رو در آینده حتما در یک ویدیو دقیق تر نگاه میکنیم تا رفتار های جالب #NodeJS رو در سناریو های مختلف ببینیم.
در اینجا libuv یک راه حل هوشمندانه داره. با استفاده از Thread Pool pattern در MultiThreading و ایجاد صف از کار هایی که باید همزمان انجام بشوند api های sync رو تبدیل به async میکنه. هرکدوم از این ترد ها یک کار رو برمیداره انجام میده و دوباره میره سراغ کار بعدی. حالا شما میتونید تعداد thread هایی که در این استخر وجود داره رو کنترل کنید.( خیلی شبیه به معماری master slave هست )
export UV_THREADPOOL_SIZE=8
node main.js
تعداد thread های در pool به صورت پیش فرض ۴ هست. معمولا طبق best practise هایی که من مطالعه داشتم به صورت کلی میگن به تعداد هسته های CPU خوبه. اما اگر بخوایم دقیق تر به این موضوع نگاه کنیم فاکتور های خیلی زیادتری داریم که من خودم هنوز دقیق نتونستم مطالعه کنم درموردشون. سخت ترین کار پیدا کردن همین بالانس هست که یک اصول داره.
با استفاده از این env میتونیم رفتار #NodeJS رو خیلی دقیق تر نگاه کنیم در سناریو های مختلف.
این موضوع رو در آینده حتما در یک ویدیو دقیق تر نگاه میکنیم تا رفتار های جالب #NodeJS رو در سناریو های مختلف ببینیم.
👍17
دوستان honeypot.io که در زمینه کاریابی فعالیت میکنه یک مستند درمورد #NodeJS داره میسازه که میتونید تریلر این مستند رو اینجا ببینید.
https://youtu.be/SfWPqr04srM?si=siu0S0JNd4QZnSxD
https://youtu.be/SfWPqr04srM?si=siu0S0JNd4QZnSxD
YouTube
Node.js: The Documentary [OFFICIAL TRAILER]
Back in the 2000s, websites looked quite different. They were less dynamic, didn’t permit much interaction, and JavaScript was only used on a small scale. But that didn’t prevent some people from seeing its true potential.
Cue developer Ryan Dahl having…
Cue developer Ryan Dahl having…
👍11
هر روز یک چیزی هست که ما رو سوپرایز کنه. یک Full Stack Framework برای #NodeJS دیدم که خیلی جالب هست.
https://wasp-lang.dev/
ظاهرا شبیهه به Prisma ORM که زبان خودش رو داره شما کل app با کد های Custom خودتون رو در یک فایل .wasp مینویسید و اون app شما رو میسازه.
https://wasp-lang.dev/
ظاهرا شبیهه به Prisma ORM که زبان خودش رو داره شما کل app با کد های Custom خودتون رو در یک فایل .wasp مینویسید و اون app شما رو میسازه.
👍9
مرسی از همتون رفقا واقعا دمتون گرم 600 نفر شدیم.❤️ 🎉
خیلی خیلی خوشحالم که تونستیم باهم یک کامینیوتی کوچیک تشکیل بدیم و رشد کنیم امیدوارم موفق باشید همگی❤️👍
خیلی خیلی خوشحالم که تونستیم باهم یک کامینیوتی کوچیک تشکیل بدیم و رشد کنیم امیدوارم موفق باشید همگی❤️👍
👍18