Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
بالاخره فایل ISO ویندوز 11 جدید 24H2 در سایت مایکروسافت منتشر شد 😁
Forwarded from Geek Alerts
آمازون برای کارکنانش یه چت‌بات داخلی به اسم Cedric ساخته که میتونن باهاش کارهایی مشابه ChatGPT انجام بدن.
یعنی در کنار اینکه آزاد هستن از چت‌بات برای کارهاشون استفاده کنن اینجوری اطلاعات و دیتاهای آمازون از این شرکت خارج نمیشه.
این البته از پروژه‌های خود آمازون هم هست که میخواد به مرور بیشتر فرایند‌هارو به کمک AI خودکار کنه.
greyjournal
@geekalerts
Forwarded from Geek Alerts
Pavel Durov
🥳 The holiday season (which includes my birthday 😏) is just around the corner, and today we are launching Gifts!

🎁 Gifts are a great way to congratulate your loved ones on important events. Gift recipients can choose to display them on their profiles or sell them for Stars
«پااُل دورُو» میگه به کریسمس نزدیک هستیم و به خاطر همین ویژگی هدیه دادن‌رو توی تلگرام اضافه کردیم، یعنی میتونید استار تلگرام بخرید و به دیگران هدیه بدید. (به صورت گیفت)
گیفت‌هایی که از دیگران میگیرید میتونید داخل پروفایل نمایش بدید یا اینکه به استار تبدیل کنید.
این استارها کاربردهای زیادی توی تلگرام دارن، مثلا هرچقدر استار جمع کند میتونید شما هم به دیگران هدیه بدید یا اینکه باهاش پرداخت‌های داخل تلگرام انجام بدید .
بعضی از این گیفت‌ها محدود هستن مثلا کل موجودی گیفت آبنبات 🍭 تعداد ۵۰۰ هزار عدد هست یا شکوفه گیلاس 🌸 ۱۰۰ هزار عدد که توی چند ساعت تموم شدن.
@geekalerts
Forwarded from a pessimistic researcher (Kc)
سلام دوستان عزیز روزتون بخیر
من مدتیه یه کانال دارم که شبیه انباری بیشتر میمونه :) از اونجایی که این روزا بیشتر دغدغه‌ام تو حوزه‌ی سافتور وریفیکیشن هستش، هر چیز بدرد بخوری که باید حتما بررسیش کنم رو اونجا میذارم تا گمش نکنم. برای اینکه دسترسی به مطالب هم راحت تر بشه از هشتگ استفاده میکنم. چیزایی که توش قرار میدم اعم از پیپر، ریپو و ابزار، پروفایل ریسرچرها و ریسرچ گروه ها، ددلاین کنفرانس‌ها و غیره است. از اونجایی که حس کردم شاید براتون این مطالب جالب باشه دوست دارم با شما به اشتراکش بذارم. منتهی برای عضو شدن داخلش لطف کنید بهم پیام بدید که ادتون کنم. از اونجایی که با لینک گذاشتن همینطور یلخی میان داخلش شلوغ میشه فقط الکی. فقط بی‌زحمت در کنار پیام سرشار از مهر و محبتتون :) اگر من نمی‌شناسمتون، یکمم از خودتون بهم بگید مثل اینکه چی و کجا می‌خونید، با اینجا چطور آشنا شدید و چی شد که به این فیلد علاقه‌مند شدید و یا آیا اینکه تو این فیلد کار میکنید یا صرفا کنجکاوید. ممنون :)
لاراول بلدی ولی لایووایر نه؟ میخوای شروع کنی ولی نمیدونی کدوم دوره خوبه؟
جرمی مک پیک (Jeremy McPeak) دوست داشتنی یه کورس آموزش لایووایر گذاشته که اگه نبینی، بعدا خعلی پشیمون میشی!


Today, we're launching a complete refresh of our introductory Livewire course.

"Livewire 3 From Scratch"

- 4 Hours of Content
- 29 Episodes
- 100% Free to All
- Ready to watch right now!

https://laracasts.com/series/livewire-3-from-scratch

@DevTwitter | <Ali Salehi/>
Forwarded from Geek Alerts
سیستم ضد سرقت گوگل به نظر میرسه توی بعضی از گوشی‌های اندرویدی فعال شده، ویژگیش اینجوری که از AI استفاده میکنه برای تشخیص اینکه کسی گوشی شما رو از دستتون می‌کشه و سعی می‌کنه فرار کنه، توی این شرایط گوشی قفل میشه.
البته در کنار اون به کمک Find My Device هم میشه گوشی رو از راه دور قفل کرد.
بعضی از کاربران گوشی‌های پیکسل و شیائومی گزارش دادن که این ویژگی رو دریافت کردن.
MishaalRahman
@geekalerts
Forwarded from Geek Alerts
حالا که انقد ری‌اکشن پریمیوم دوست دارید چنلو بوس کنید که فعال شه 🙂😂

اینم لینک حمایتمون، اگر محتوای کانالو دوست دارید با بوست کردن میتونین ازمون حمایت کنید 🔥❤️

https://t.iss.one/boost/coolycode
سه نفر حمایت کنن میتونیم استوریم بزاریم🔥😁

البته قابلیت های بیشتری فعال میشه، خلاصه که جینگولای بیشتری به پست ها اضافه میشه 😂
🌐 دومین بوت‌کمپ استخدامی برنامه‌نویسی Asp.Net دانشکار
⭐️ با محتوای جدید و به‌روزشده

💻 اگر به برنامه‌نویسی وب‌اپ‌ها، اینترنت اشیاء، اپلیکیشن‌های موبایل و ویندورز و کار در شرکت‌های بزرگ علاقه داری، این بوت‌کمپ مناسبته!

🟣 سرفصل‌های این دوره شامل:
🔸 Object-oriented programming
🔸 Design patterns
🔸 Algorithm
🔸 Linq
🔸 EFCore
🔸 و ۱۹ سرفصل دیگر!

🔽 مزایای این بوت‌کمپ:
+۱۰۰ ساعت آموزش و پروژه
اساتید حرفه‌ای از شرکت‌های خوب کشور
پروژه‌های مشابه بازار کار
منتور حرفه‌ای اختصاصی
مدرک معتبر و کمک به استخدام بعد از اتمام دوره

✴️ امکان پرداخت به صورت قسطی!

🔽 برای ثبت‌نام اولیه و مشاوره رایگان روی لینک زیر کلیک کن:
👇🏻
🔗 https://dnkr.ir/kr8qX
📩 و یا به آیدی زیر پیام بده:
@daneshkar_support
خودمون رو به چالش کشیدیم و گفتیم وقتشه که CI/CD رو به بهترین شکل ممکن پیاده کنیم! نتیجه‌اش یک راهکار جامع و ساده برای راه‌اندازی Jenkins و GitLab شد که فرآیندهای استقرار رو کاملاً خودکار میکنه. از Docker و Rsync گرفته تا SSH، همه مراحل رو مستند کردیم تا هرکسی بتونه با کمترین دردسر، همین سیستم رو اجرا کنه.
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راه‌حل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!

https://github.com/aligharaei/jenkins_cicd

@DevTwitter | <ali gharaei/>
💎 معرفی adminer 💎

امروز می‌خوایم درباره یه ابزار جذاب برای مدیریت دیتابیس‌ها به اسم Adminer صحبت کنیم و در آخر، یاد بگیریم چطوری با استفاده از Docker سریع و راحت یه سرویس Adminer بیاریم بالا. 🚀

حالا Adminer چیه؟ 🤔

خب Adminer یه ابزار تحت وب برای مدیریت دیتابیس‌هاست که کار باهاش خیلی ساده و رونه. اگه تا حالا با ابزارهایی مثل DBeaver یا HeidiSQL کار کردین و دنبال یه گزینه سبک‌تر و ساده‌تر هستین، Adminer بهترین انتخابه این ابزار از دیتابیس‌های مختلف مثل MySQL، PostgreSQL، SQLite، و حتی MongoDB پشتیبانی می‌کنه.

چرا Adminer؟ 🤷‍♂️

1⃣ سبک و سریع:
دیگه لازم نیست ابزارهای سنگین نصب کنی. Adminer خیلی سبک و کم‌حجمه.

2⃣ پشتیبانی از دیتابیس‌های مختلف: دیتابیس‌های معروف رو به راحتی مدیریت می‌کنه.

3⃣ رابط کاربری ساده:
با یه محیط ساده و بدون شلوغی، سریع به دیتابیس‌هات دسترسی داری.


4⃣ نصب و راه‌اندازی راحت:
با چندتا کامند ساده توی Docker می‌تونی به‌سرعت راهش بندازی

چطور با Docker سرویس Adminer رو بالا بیاریم؟ 🐳

حالا بریم سر اصل مطلب به‌جای نصب دستی، از Docker استفاده می‌کنیم تا Adminer رو در عرض چند دقیقه راه بندازیم. 😎

قدم‌های راه‌اندازی Adminer با Docker:

1⃣ نصب Docker:
اگه Docker رو نصب نداری، اول از همه باید Docker رو نصب کنی. برای این کار می‌تونی به سایت Docker بری و طبق راهنمای اون برای سیستم‌عامل خودت نصبش کنی.

2⃣ اجرای Adminer با Docker:

بعد از اینکه Docker نصب شد، کافیه دستور زیر رو توی ترمینال اجرا کنی:

docker run -d --name adminer -p 8080:8080 adminer



توضیحات:
docker run -d --name adminer

این دستور یه کانتینر در حالت جدا شده (detached) اجرا می‌کنه.

اسم کانتینرت رو "adminer" می‌ذاره.

-p 8080:8080:
پورت 8080 روی سیستم‌ت رو به پورت 8080 داخل کانتینر متصل می‌کنه تا بتونی از مرورگر بهش دسترسی داشته باشی.

adminer:
این قسمت می‌گه که از ایمیج Adminer استفاده کنه.


3⃣ اتصال به Adminer:

حالا Adminer رو توی مرورگر اجرا کن. آدرس زیر رو وارد کن:

https://localhost:8080

پنجره‌ای برات باز می‌شه که می‌تونی اطلاعات دیتابیس رو وارد کنی و به راحتی با دیتابیس‌هات کار کنی.

4⃣ اتصال به دیتابیس:

حالا باید دیتابیس خودت رو به Adminer وصل کنی. اطلاعات مثل نوع دیتابیس، سرور (مثل db برای Docker یا localhost برای لوکال)، نام کاربری و رمز عبور رو وارد کن و تمام 🚀

5⃣ اجرای هم‌زمان دیتابیس و Adminer:

اگر دیتابیس رو هم با Docker اجرا می‌کنی، مثلاً MySQL، می‌تونی با کامپوز Docker (docker-compose) هر دو سرویس رو هم‌زمان بیاری بالا. یه فایل docker-compose.yml شبیه به این درست کن:

version: '3'
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
    ports:
      - "3306:3306"

  adminer:
    image: adminer
    ports:
      - "8080:8080"


حالا با دستور زیر، هر دو سرویس رو اجرا کن:

docker-compose up -d


با این دستور، MySQL و Adminer به‌صورت هم‌زمان اجرا می‌شن و به راحتی می‌تونی به دیتابیس وصل شی.

جمع بندی 🎯

فهمیدیم اگه دنبال یه ابزار سریع و ساده برای مدیریت دیتابیس‌هات هستی و می‌خوای بدون دردسر از طریق Docker یه سرویس بالا بیاری، Adminer بهترین گزینه‌ست.

امید وارم مفید بوده باشه :)

#db #adminer #docker


@ninja_learn_ir
Forwarded from CleverDevs (Mammad)
progit.pdf
18 MB
عنوان کتاب: Pro Git

نویسندگان : Scott Chacon, Ben Straub

زبان: انگلیسی

تعداد صحفه : 501

معرفی:

کتاب Pro Git یه منبع غنی برای یادگیری درست گیت هست . گیت که معروفترین سیستم کنترل ورژن بین برنامه نویس ها هست امکانات زیادی برای مدیریت پروژه و ورژن بندی همچنین کار تیمی و ... فراهم میکنه اما در مواردی توی پروژه های بزرگتر ممکنه استفاده از گیت براتون سخت باشه با خوندن این کتاب میتونید انواع تریک ها و دستورات گیت مسلط بشید و تو پروژه های پیچیده تر هم ازش استفاده کنید

#book #git
@CleverDevs - @CleverDevsGp
Forwarded from Geek Alerts
Forwarded from Geek Alerts
Forwarded from code2 - تکنولوژی و فناوری (Mahdi Taleghani)
مرورگر Arc که یه مرورگر قوی و پر استقبال برای mac و ویندوز هست یه آسیب پذیری بسیار فاحش داشته که اخیرا برطرف شده می‌تونید از لینک زیر جزییاتش رو ببینید.

https://www.youtube.com/watch?v=QINoB1_OXUk


البته من چون لینوکسم توفیق نداشتم هنوز تستش کنم ☺️

@code2_ir
Forwarded from Geek Alerts
This media is not supported in your browser
VIEW IN TELEGRAM
پست جدید «پااُل دورُو»
۲۷ آگوست سومین روزی بود که من تو اداره پلیس بازداشت بودم، بدون هیچ دستگاه یا دسترسی به اینترنت، حس میکردم یه جور سم‌زدایی دیجیتالی هم هست.
اون روز طبق معمول یه بازجویی طولانی با پلیس داشتم و بین سوال‌ها و جواب‌ها از وکیلم پرسیدم که جولیا هم واسه بازجویی میاد؟ گفت انتظار داشتیم بیاد ولی نتونست.
من اصرار کردم دلیلش رو بگه و پرسیدم ترسیده؟ از پاریس رفته؟ وکیل یه مکثی کرد و بلاخره گفت «جولیا باردار هست».
جوابی نبود که انتظارشو داشتم، غافلگیر شدم و بعد یه مکث کوتاه از وکیل بابت خبر خوبش تشکر کردم.
بعدا فهمیدم پلیس هم خبر داشته ولی نمیدونستن چجوری به من بگن، اونجا شرایط جشن و شادی نبود.
جولیا تنها تو یه کشور غریب بود، و نمیدونستم کی میتونم دوباره باهاش حرف بزنم.
خوشبختانه اواخر عصر روز بعد آزاد شدم، به اقامتگاه جولیا رفتم، فهمیدم وقتی من نبودم اون خیلی تحت فشار بوده، ظاهرا یه وبلاگنویس شایعه کرده بود که اون «مامور موساد» بوده و این حرف هم کلی پخش شد و البته پست‌های دیگه که از دلایل اومدن پلیس به استقبال من توی فرودگاه بودن.
(ادامه‌دارد)
https://t.iss.one/durov/351
@geekalerts
Forwarded from Geek Alerts
گوشی و دستگاه‌های جولیا هم ضبط شده بود و نمیتونست به حساب‌هاش توی تلگرام و اینستاگرام دسترسی داشته باشه.
همین سکوت هم باعث شده شایعه وب‌لاگ‌نویس‌ها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روند‌ها عادت نداشت، دو روز قبل پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
Forwarded from Geek Alerts
گوشی و دستگاه‌های جولیا هم ضبط شده بود و نمیتونست به حساب‌هاش توی تلگرام و اینستاگرام دسترسی داشته باشه.
همین سکوت هم باعث شده شایعه وب‌لاگ‌نویس‌ها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روند‌ها عادت نداشت، دو روز پیش پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
Forwarded from a pessimistic researcher (Kc)
هزار و یک باگ
شب دوم - قسمت اول
—————————————————

یک شب دیگه، یک برنامه‌ی دیگه و یک باگ دیگه. نمی‌دونم چرا ولی همیشه یک سری کارا خیلی ساده به نظر میان. مثلا فرد چندتا رمان روسی میخونه، موزیک‌های نئوکلاسیک فانک راک گوش میده، کمی تئوری لرنینگ میخونه، از SVM عبور می‌کنه و سعی میکنه ماهیت استوکستیک LLM ها رو درک کنه و بعدش به خودش میگه که من تونستم جفت پوچ بودن دستای هستی رو رو کنم، منتهی با گذر زمان میفهمه که انقدر هم اینکار ساده نیست و حتی نمیتونه یک random walk رو توجیه کنه. میفهمه که خیلی عقب وایساده و قرار نیست فیزیک و شیمی مدرن نظری جلوش زانو بزنن. مثلا شخص اثبات کرده که مسئله‌ی ارضاء پذیری ساختارهای محدود در منطق مرتبه‌ی اول، تصمیم ناپذیره، و فرد میگه که کی همچین زری زده :) من میرم براش یک الگوریتم P مینویسم، منتهی باید کلی روحش سوهان بخوره تا بفهمه راحت که هیچ، شدنی نیست.
این مقدمه شاید لازم بود تا برسیم به مسئله‌ی مورد بحث که بسیار ساده است. محاسبه‌ی ب.م.م دو عدد با روش اقلیدسی. اگر تا حالا اسم این الگوریتم رو نشنیدید اصلا چیز مهمی نیست. من بهتون توضیح میدم. تصور کنید که شما یک تابع دارید که دو عدد صحیح a و b رو به عنوان ورودی میگیره. این دو عدد بین دوتا Thread به اشتراک گذاشته میشن. ترد اول چنین کدی رو اجرا میکنه
Thread I
while ( a != b ) {
if ( a > b ) {
a := a - b
}
}

ترد دوم هم به قرینه‌ی ترد اول همین کار رو تقلید میکنه. یعنی چنین کدی رو اجرا میکنه :
Thread II
while ( a != b ) {
if ( b > a ) {
b := b - a
}
}

بیاید برای درک بهتر الگوریتم یک مثال رو اجرا کنیم. تصور کنید مقدار a و b به ترتیب 10 و 4 باشه. ترد اول بعد یک بار اجرا مقادیر جدید a و b رو به شکل 6 و 4 در میاره. توجه داشته باشید که در طول اجرا ترد دوم فقط میتونه به شکل idle در حلقه بمونه. سپس ترد اول یک بار دیگه اجرا میشه و مقادیر a و b به 2 و 4 تغییر میکنن. حالا ترد اول فقط میتونه به شکل idle لوپ بخوره و ترد دوم بدنه‌ی if رو اجرا کنه. پس از یک بار چرخش، ترد دوم مقادیر a و b رو به 2 و 2 تغییر میده. حالا هر دو تا ترد میتونن با یک بار اجرای حلقه، از while خارج بشن و حاصل ب.م.م. دو عدد هم همونطور که ملاحظه می‌کنید در a و b قرار داره که 2 می‌باشد.

همه چیز ساده است. منطق برنامه و رفتار ترد ها. حالا نوبت پرسشه. یک پرسش ساده. آیا این برنامه به ازای هر مقادیر بزرگتر از صفری برای a و b درست کار میکند یا خیر. برای اینکه بتونیم این برنامه رو وریفای کنیم باید یک تعداد assumption و assertion به کدمون اضافه کنیم. این گزاره‌ها لازمه برای انجام وریفیکیشن چرا که مثلا میخوایم این فرض رو داشته باشیم که مقدار ورودی a و b بزرگتر از صفره. حال با اضافه کردن این گزاره‌ها برنامه‌ی ما بدین شکل خواهد شد.
fun foo() {
int a = nondet()
int b = nondet()
assume ( a > 0 && b > 0 )

a := a_in
b := b_in

ThreadI ( a_in, b_in ) -> start
ThreadII ( a_in, b_in ) -> start

ThreadI -> join
ThreadII -> join

int guessed_gcd = nondet()
assume ( guessed_gcd > 1 )
assume ( a_in % guessed_gcd == 0 )
assume ( b_in % guessed_gcd == 0 )

// Properties
assert( a_in % a == 0 )
assert( b_in % a == 0 )

assert( a >= guessed_gcd )
}

حالا پرسش ساده‌ای که مطرح کردم و فرمال می‌کنم.

۱. آیا می‌تونید خودتون با استنتاج روی این کد اثبات کنید که برنامه این Properties رو ارضاء میکنه یا نه. اگر آره استنتاج‌تون رو شرح بدید.

۲. آیا می‌تونید یک برنامه‌ا‌ی بنویسید که به عنوان ورودی این برنامه رو از شما بگیره و اگر حالتی درش وجود داره که منجر به نقض شدن شرط‌های assert میشه رو پیدا کنه و به عنوان یک مثال نقض بهمون یک trace از اجرای برنامه برگردونه؟ اگر چنین برنامه‌ای نوشتید، آیا decision procedure که برای پیدا کردن این trace به کار بردید، sound و complete و optimal هست؟ لطفا اثبات کنید.
Forwarded from a pessimistic researcher (Kc)
هزار و یک باگ
شب دوم - قسمت دوم
—————————————————

این بار می‌خوام برخلاف هزار و یک باگ‌های قبلی کمی مسئله‌ رو پیش ببرم تا نشون بدم یک مسئله‌ی به این سادگی تا چه اندازه میتونه پیچیده بشه. فرض کنید برای وریفای کردن این برنامه ما میتونیم متغیرهای a و b رو به شکل symbolic در نظر بگیریم. یعنی هیچ مقدار مشخص ندارن. حالا فرض کنید که ما یک oracle یا پیشگو داریم (در حقیقتا یک SMT Solver) که در هر لحظه از اجرای برنامه می‌تونیم بهش یک فرمول منطقی بدیم و ازش بپرسیم آیا این فرمول ارضاء پذیر هست یا نه. حال با داشتن این دو یاور شروع کنیم به درستی‌یابی برنامه. در ابتدای اجرا می‌دونیم که :

a > 0 && b > 0

به قول معروف، without loss of generality فرض کنید که ترد اول اجرا میشه و به اولین فرمول سیمبولیک بر میخوره یعنی a != b حالا نوبت استفاده از اوراکله. ازش می‌پرسیم آیا ممکنه این فرمول ارضاء پذیر باشه ؟

a > 0 && b > 0 && a != b

اوراکل میگه بله و مشکلی نیست برو جلو. فرمول بعدی a > b هستش و دوباره اوراکل رو صدا می‌کنیم :

a > 0 && b > 0 && a != b && a > b

اوراکل میگه بله اگر مقدار a برابر با b + 1 باشه این فرمول ها ارضا پذیرن. بعد از اجرای دستور a:= a-b و رسیدن به شروط حلقه و if دوباره باید اوراکل رو صدا بزنیم :

a > 0 && b > 0 && a != b && a > b && a-b ! = b && a-b > b


اوراکل میگه بله ارضاء پذیره. کافیه مقدار a برابر باشه با 2b+1. دوباره ترد یک ادامه میده و حلقه رو یک بار دیگه پیمایش میکنه و میرسیم به این پرسش از اوراکل :

a > 0 && b > 0 && a != b && a > b && a-b ! = b && a-b > b && a-2b != b && a-2b > b


اوراکل میگه بله ارضاء پذیره چرا که مقدار a میتونه برابر با 3b+1 باشه. بعد از n بار اجرای حلقه، پرسش از اوراکل میشه :

a > 0 && b > 0 && a != b && a > b && a-b ! = b && a-b > b && a-2b != b && a-2b > b && ... && a - nb != b && a - nb > b


و اوراکل میگه چون مقدار a میتونه برابر با :

(n+1) b + 1


باشه این فرمول ارضا پذیره. همونطور که ملاحظه می‌کنید پورسه‌ی وریفیکیشن یک برنامه‌ای که میشه اثبات کرد halt میکنه، تصمیم ناپذیر شده و تا بینهات ادامه میده و هیچ وقت converge نمی‌کنه! و یک مسئله‌ی به این سادگی اونقدرا هم که فکر میکنیم ساده حل نمیشه.