Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
بالاخره فایل ISO ویندوز 11 جدید 24H2 در سایت مایکروسافت منتشر شد 😁
Forwarded from Geek Alerts
آمازون برای کارکنانش یه چتبات داخلی به اسم Cedric ساخته که میتونن باهاش کارهایی مشابه ChatGPT انجام بدن.
یعنی در کنار اینکه آزاد هستن از چتبات برای کارهاشون استفاده کنن اینجوری اطلاعات و دیتاهای آمازون از این شرکت خارج نمیشه.
این البته از پروژههای خود آمازون هم هست که میخواد به مرور بیشتر فرایندهارو به کمک AI خودکار کنه.
greyjournal
@geekalerts
یعنی در کنار اینکه آزاد هستن از چتبات برای کارهاشون استفاده کنن اینجوری اطلاعات و دیتاهای آمازون از این شرکت خارج نمیشه.
این البته از پروژههای خود آمازون هم هست که میخواد به مرور بیشتر فرایندهارو به کمک AI خودکار کنه.
greyjournal
@geekalerts
Forwarded from Geek Alerts
Pavel Durov
«پااُل دورُو» میگه به کریسمس نزدیک هستیم و به خاطر همین ویژگی هدیه دادنرو توی تلگرام اضافه کردیم، یعنی میتونید استار تلگرام بخرید و به دیگران هدیه بدید. (به صورت گیفت)
گیفتهایی که از دیگران میگیرید میتونید داخل پروفایل نمایش بدید یا اینکه به استار تبدیل کنید.
این استارها کاربردهای زیادی توی تلگرام دارن، مثلا هرچقدر استار جمع کند میتونید شما هم به دیگران هدیه بدید یا اینکه باهاش پرداختهای داخل تلگرام انجام بدید .
بعضی از این گیفتها محدود هستن مثلا کل موجودی گیفت آبنبات 🍭 تعداد ۵۰۰ هزار عدد هست یا شکوفه گیلاس 🌸 ۱۰۰ هزار عدد که توی چند ساعت تموم شدن.
@geekalerts
گیفتهایی که از دیگران میگیرید میتونید داخل پروفایل نمایش بدید یا اینکه به استار تبدیل کنید.
این استارها کاربردهای زیادی توی تلگرام دارن، مثلا هرچقدر استار جمع کند میتونید شما هم به دیگران هدیه بدید یا اینکه باهاش پرداختهای داخل تلگرام انجام بدید .
بعضی از این گیفتها محدود هستن مثلا کل موجودی گیفت آبنبات 🍭 تعداد ۵۰۰ هزار عدد هست یا شکوفه گیلاس 🌸 ۱۰۰ هزار عدد که توی چند ساعت تموم شدن.
@geekalerts
Forwarded from a pessimistic researcher (Kc)
سلام دوستان عزیز روزتون بخیر
من مدتیه یه کانال دارم که شبیه انباری بیشتر میمونه :) از اونجایی که این روزا بیشتر دغدغهام تو حوزهی سافتور وریفیکیشن هستش، هر چیز بدرد بخوری که باید حتما بررسیش کنم رو اونجا میذارم تا گمش نکنم. برای اینکه دسترسی به مطالب هم راحت تر بشه از هشتگ استفاده میکنم. چیزایی که توش قرار میدم اعم از پیپر، ریپو و ابزار، پروفایل ریسرچرها و ریسرچ گروه ها، ددلاین کنفرانسها و غیره است. از اونجایی که حس کردم شاید براتون این مطالب جالب باشه دوست دارم با شما به اشتراکش بذارم. منتهی برای عضو شدن داخلش لطف کنید بهم پیام بدید که ادتون کنم. از اونجایی که با لینک گذاشتن همینطور یلخی میان داخلش شلوغ میشه فقط الکی. فقط بیزحمت در کنار پیام سرشار از مهر و محبتتون :) اگر من نمیشناسمتون، یکمم از خودتون بهم بگید مثل اینکه چی و کجا میخونید، با اینجا چطور آشنا شدید و چی شد که به این فیلد علاقهمند شدید و یا آیا اینکه تو این فیلد کار میکنید یا صرفا کنجکاوید. ممنون :)
من مدتیه یه کانال دارم که شبیه انباری بیشتر میمونه :) از اونجایی که این روزا بیشتر دغدغهام تو حوزهی سافتور وریفیکیشن هستش، هر چیز بدرد بخوری که باید حتما بررسیش کنم رو اونجا میذارم تا گمش نکنم. برای اینکه دسترسی به مطالب هم راحت تر بشه از هشتگ استفاده میکنم. چیزایی که توش قرار میدم اعم از پیپر، ریپو و ابزار، پروفایل ریسرچرها و ریسرچ گروه ها، ددلاین کنفرانسها و غیره است. از اونجایی که حس کردم شاید براتون این مطالب جالب باشه دوست دارم با شما به اشتراکش بذارم. منتهی برای عضو شدن داخلش لطف کنید بهم پیام بدید که ادتون کنم. از اونجایی که با لینک گذاشتن همینطور یلخی میان داخلش شلوغ میشه فقط الکی. فقط بیزحمت در کنار پیام سرشار از مهر و محبتتون :) اگر من نمیشناسمتون، یکمم از خودتون بهم بگید مثل اینکه چی و کجا میخونید، با اینجا چطور آشنا شدید و چی شد که به این فیلد علاقهمند شدید و یا آیا اینکه تو این فیلد کار میکنید یا صرفا کنجکاوید. ممنون :)
Forwarded from DevTwitter | توییت برنامه نویسی
لاراول بلدی ولی لایووایر نه؟ میخوای شروع کنی ولی نمیدونی کدوم دوره خوبه؟
جرمی مک پیک (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/>
جرمی مک پیک (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
البته در کنار اون به کمک Find My Device هم میشه گوشی رو از راه دور قفل کرد.
بعضی از کاربران گوشیهای پیکسل و شیائومی گزارش دادن که این ویژگی رو دریافت کردن.
MishaalRahman
@geekalerts
Forwarded from LearnPOV | لرن پی او وی
حالا که انقد ریاکشن پریمیوم دوست دارید چنلو بوس کنید که فعال شه 🙂😂
اینم لینک حمایتمون، اگر محتوای کانالو دوست دارید با بوست کردن میتونین ازمون حمایت کنید 🔥❤️
https://t.iss.one/boost/coolycode
اینم لینک حمایتمون، اگر محتوای کانالو دوست دارید با بوست کردن میتونین ازمون حمایت کنید 🔥❤️
https://t.iss.one/boost/coolycode
Telegram
𝗖𝗢𝗢𝗟𝗬 𝗖𝗢𝗗𝗘 | کولی کد
از این کانال حمایت کنید تا بتواند به قابلیتهای اضافی دسترسی پیدا کند.
Forwarded from LearnPOV | لرن پی او وی
سه نفر حمایت کنن میتونیم استوریم بزاریم🔥😁
البته قابلیت های بیشتری فعال میشه، خلاصه که جینگولای بیشتری به پست ها اضافه میشه 😂
Forwarded from DevTwitter | توییت برنامه نویسی
🌐 دومین بوتکمپ استخدامی برنامهنویسی Asp.Net دانشکار
⭐️ با محتوای جدید و بهروزشده
💻 اگر به برنامهنویسی وباپها، اینترنت اشیاء، اپلیکیشنهای موبایل و ویندورز و کار در شرکتهای بزرگ علاقه داری، این بوتکمپ مناسبته!
🟣 سرفصلهای این دوره شامل:
🔸 Object-oriented programming
🔸 Design patterns
🔸 Algorithm
🔸 Linq
🔸 EFCore
🔸 و ۱۹ سرفصل دیگر!
🔽 مزایای این بوتکمپ:
✅ +۱۰۰ ساعت آموزش و پروژه
✅ اساتید حرفهای از شرکتهای خوب کشور
✅ پروژههای مشابه بازار کار
✅ منتور حرفهای اختصاصی
✅ مدرک معتبر و کمک به استخدام بعد از اتمام دوره
✴️ امکان پرداخت به صورت قسطی!
🔽 برای ثبتنام اولیه و مشاوره رایگان روی لینک زیر کلیک کن:
👇🏻
🔗 https://dnkr.ir/kr8qX
📩 و یا به آیدی زیر پیام بده:
@daneshkar_support
⭐️ با محتوای جدید و بهروزشده
💻 اگر به برنامهنویسی وباپها، اینترنت اشیاء، اپلیکیشنهای موبایل و ویندورز و کار در شرکتهای بزرگ علاقه داری، این بوتکمپ مناسبته!
🟣 سرفصلهای این دوره شامل:
🔸 Object-oriented programming
🔸 Design patterns
🔸 Algorithm
🔸 Linq
🔸 EFCore
🔸 و ۱۹ سرفصل دیگر!
🔽 مزایای این بوتکمپ:
✅ +۱۰۰ ساعت آموزش و پروژه
✅ اساتید حرفهای از شرکتهای خوب کشور
✅ پروژههای مشابه بازار کار
✅ منتور حرفهای اختصاصی
✅ مدرک معتبر و کمک به استخدام بعد از اتمام دوره
✴️ امکان پرداخت به صورت قسطی!
🔽 برای ثبتنام اولیه و مشاوره رایگان روی لینک زیر کلیک کن:
👇🏻
🔗 https://dnkr.ir/kr8qX
📩 و یا به آیدی زیر پیام بده:
@daneshkar_support
Forwarded from DevTwitter | توییت برنامه نویسی
خودمون رو به چالش کشیدیم و گفتیم وقتشه که CI/CD رو به بهترین شکل ممکن پیاده کنیم! نتیجهاش یک راهکار جامع و ساده برای راهاندازی Jenkins و GitLab شد که فرآیندهای استقرار رو کاملاً خودکار میکنه. از Docker و Rsync گرفته تا SSH، همه مراحل رو مستند کردیم تا هرکسی بتونه با کمترین دردسر، همین سیستم رو اجرا کنه.
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راهحل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!
https://github.com/aligharaei/jenkins_cicd
@DevTwitter | <ali gharaei/>
این داکیومنت رو روی گیت هابمون گذاشتیم تا هر کسی که دنبال یک راهحل سریع و کارآمد برای اتوماسیون توسعه و استقرار هست، بتونه ازش استفاده کنه. حتماً یه نگاهی بندازید!
https://github.com/aligharaei/jenkins_cicd
@DevTwitter | <ali gharaei/>
Forwarded from Ninja Learn | نینجا لرن
💎 معرفی 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 نصب شد، کافیه دستور زیر رو توی ترمینال اجرا کنی:
توضیحات:
این دستور یه کانتینر در حالت جدا شده (detached) اجرا میکنه.
اسم کانتینرت رو "adminer" میذاره.
-p 8080:8080:
پورت 8080 روی سیستمت رو به پورت 8080 داخل کانتینر متصل میکنه تا بتونی از مرورگر بهش دسترسی داشته باشی.
adminer:
این قسمت میگه که از ایمیج Adminer استفاده کنه.
3⃣ اتصال به Adminer:
حالا Adminer رو توی مرورگر اجرا کن. آدرس زیر رو وارد کن:
پنجرهای برات باز میشه که میتونی اطلاعات دیتابیس رو وارد کنی و به راحتی با دیتابیسهات کار کنی.
4⃣ اتصال به دیتابیس:
حالا باید دیتابیس خودت رو به Adminer وصل کنی. اطلاعات مثل نوع دیتابیس، سرور (مثل db برای Docker یا localhost برای لوکال)، نام کاربری و رمز عبور رو وارد کن و تمام 🚀
5⃣ اجرای همزمان دیتابیس و Adminer:
اگر دیتابیس رو هم با Docker اجرا میکنی، مثلاً MySQL، میتونی با کامپوز Docker (docker-compose) هر دو سرویس رو همزمان بیاری بالا. یه فایل docker-compose.yml شبیه به این درست کن:
حالا با دستور زیر، هر دو سرویس رو اجرا کن:
با این دستور، MySQL و Adminer بهصورت همزمان اجرا میشن و به راحتی میتونی به دیتابیس وصل شی.
جمع بندی 🎯
فهمیدیم اگه دنبال یه ابزار سریع و ساده برای مدیریت دیتابیسهات هستی و میخوای بدون دردسر از طریق Docker یه سرویس بالا بیاری، Adminer بهترین گزینهست.
امید وارم مفید بوده باشه :)
@ninja_learn_ir
امروز میخوایم درباره یه ابزار جذاب برای مدیریت دیتابیسها به اسم 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
Forwarded from CleverDevs (Mammad)
progit.pdf
18 MB
عنوان کتاب: Pro Git
نویسندگان : Scott Chacon, Ben Straub
زبان: انگلیسی
تعداد صحفه : 501
معرفی:
کتاب Pro Git یه منبع غنی برای یادگیری درست گیت هست . گیت که معروفترین سیستم کنترل ورژن بین برنامه نویس ها هست امکانات زیادی برای مدیریت پروژه و ورژن بندی همچنین کار تیمی و ... فراهم میکنه اما در مواردی توی پروژه های بزرگتر ممکنه استفاده از گیت براتون سخت باشه با خوندن این کتاب میتونید انواع تریک ها و دستورات گیت مسلط بشید و تو پروژه های پیچیده تر هم ازش استفاده کنید
#book #git
@CleverDevs - @CleverDevsGp
نویسندگان : Scott Chacon, Ben Straub
زبان: انگلیسی
تعداد صحفه : 501
معرفی:
کتاب Pro Git یه منبع غنی برای یادگیری درست گیت هست . گیت که معروفترین سیستم کنترل ورژن بین برنامه نویس ها هست امکانات زیادی برای مدیریت پروژه و ورژن بندی همچنین کار تیمی و ... فراهم میکنه اما در مواردی توی پروژه های بزرگتر ممکنه استفاده از گیت براتون سخت باشه با خوندن این کتاب میتونید انواع تریک ها و دستورات گیت مسلط بشید و تو پروژه های پیچیده تر هم ازش استفاده کنید
#book #git
@CleverDevs - @CleverDevsGp
Forwarded from code2 - تکنولوژی و فناوری (Mahdi Taleghani)
مرورگر Arc که یه مرورگر قوی و پر استقبال برای mac و ویندوز هست یه آسیب پذیری بسیار فاحش داشته که اخیرا برطرف شده میتونید از لینک زیر جزییاتش رو ببینید.
https://www.youtube.com/watch?v=QINoB1_OXUk
البته من چون لینوکسم توفیق نداشتم هنوز تستش کنم ☺️
@code2_ir
https://www.youtube.com/watch?v=QINoB1_OXUk
البته من چون لینوکسم توفیق نداشتم هنوز تستش کنم ☺️
@code2_ir
YouTube
How a simple mistake left Arc Browser wide open to hackers
Try Clerk's awesome authentication platform https://go.clerk.com/SIQSBbP
A major exploit was discovered in the Arc browser recently that allowed an attacker to remotely execute JavaScript on any website. Learn how this vulnerability was caused by a simple…
A major exploit was discovered in the Arc browser recently that allowed an attacker to remotely execute JavaScript on any website. Learn how this vulnerability was caused by a simple…
Forwarded from Geek Alerts
This media is not supported in your browser
VIEW IN TELEGRAM
پست جدید «پااُل دورُو»
۲۷ آگوست سومین روزی بود که من تو اداره پلیس بازداشت بودم، بدون هیچ دستگاه یا دسترسی به اینترنت، حس میکردم یه جور سمزدایی دیجیتالی هم هست.
اون روز طبق معمول یه بازجویی طولانی با پلیس داشتم و بین سوالها و جوابها از وکیلم پرسیدم که جولیا هم واسه بازجویی میاد؟ گفت انتظار داشتیم بیاد ولی نتونست.
من اصرار کردم دلیلش رو بگه و پرسیدم ترسیده؟ از پاریس رفته؟ وکیل یه مکثی کرد و بلاخره گفت «جولیا باردار هست».
جوابی نبود که انتظارشو داشتم، غافلگیر شدم و بعد یه مکث کوتاه از وکیل بابت خبر خوبش تشکر کردم.
بعدا فهمیدم پلیس هم خبر داشته ولی نمیدونستن چجوری به من بگن، اونجا شرایط جشن و شادی نبود.
جولیا تنها تو یه کشور غریب بود، و نمیدونستم کی میتونم دوباره باهاش حرف بزنم.
خوشبختانه اواخر عصر روز بعد آزاد شدم، به اقامتگاه جولیا رفتم، فهمیدم وقتی من نبودم اون خیلی تحت فشار بوده، ظاهرا یه وبلاگنویس شایعه کرده بود که اون «مامور موساد» بوده و این حرف هم کلی پخش شد و البته پستهای دیگه که از دلایل اومدن پلیس به استقبال من توی فرودگاه بودن.
(ادامهدارد)
https://t.iss.one/durov/351
@geekalerts
۲۷ آگوست سومین روزی بود که من تو اداره پلیس بازداشت بودم، بدون هیچ دستگاه یا دسترسی به اینترنت، حس میکردم یه جور سمزدایی دیجیتالی هم هست.
اون روز طبق معمول یه بازجویی طولانی با پلیس داشتم و بین سوالها و جوابها از وکیلم پرسیدم که جولیا هم واسه بازجویی میاد؟ گفت انتظار داشتیم بیاد ولی نتونست.
من اصرار کردم دلیلش رو بگه و پرسیدم ترسیده؟ از پاریس رفته؟ وکیل یه مکثی کرد و بلاخره گفت «جولیا باردار هست».
جوابی نبود که انتظارشو داشتم، غافلگیر شدم و بعد یه مکث کوتاه از وکیل بابت خبر خوبش تشکر کردم.
بعدا فهمیدم پلیس هم خبر داشته ولی نمیدونستن چجوری به من بگن، اونجا شرایط جشن و شادی نبود.
جولیا تنها تو یه کشور غریب بود، و نمیدونستم کی میتونم دوباره باهاش حرف بزنم.
خوشبختانه اواخر عصر روز بعد آزاد شدم، به اقامتگاه جولیا رفتم، فهمیدم وقتی من نبودم اون خیلی تحت فشار بوده، ظاهرا یه وبلاگنویس شایعه کرده بود که اون «مامور موساد» بوده و این حرف هم کلی پخش شد و البته پستهای دیگه که از دلایل اومدن پلیس به استقبال من توی فرودگاه بودن.
(ادامهدارد)
https://t.iss.one/durov/351
@geekalerts
Forwarded from Geek Alerts
گوشی و دستگاههای جولیا هم ضبط شده بود و نمیتونست به حسابهاش توی تلگرام و اینستاگرام دسترسی داشته باشه.
همین سکوت هم باعث شده شایعه وبلاگنویسها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روندها عادت نداشت، دو روز قبل پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
همین سکوت هم باعث شده شایعه وبلاگنویسها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روندها عادت نداشت، دو روز قبل پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
Forwarded from Geek Alerts
گوشی و دستگاههای جولیا هم ضبط شده بود و نمیتونست به حسابهاش توی تلگرام و اینستاگرام دسترسی داشته باشه.
همین سکوت هم باعث شده شایعه وبلاگنویسها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روندها عادت نداشت، دو روز پیش پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
همین سکوت هم باعث شده شایعه وبلاگنویسها بیشتر بشه و جولیا مورد آزار و اذیت سایبری قرار بگیره.
جولیا قوی موند ولی برخلاف من به این روندها عادت نداشت، دو روز پیش پیش دکتر بارداریش رفت و فهمیدیم که قلب بچمون دیگه نمیزنه.
https://t.iss.one/julivavilovaa/304
@geekalerts
Forwarded from a pessimistic researcher (Kc)
هزار و یک باگ
شب دوم - قسمت اول
—————————————————
یک شب دیگه، یک برنامهی دیگه و یک باگ دیگه. نمیدونم چرا ولی همیشه یک سری کارا خیلی ساده به نظر میان. مثلا فرد چندتا رمان روسی میخونه، موزیکهای نئوکلاسیک فانک راک گوش میده، کمی تئوری لرنینگ میخونه، از SVM عبور میکنه و سعی میکنه ماهیت استوکستیک LLM ها رو درک کنه و بعدش به خودش میگه که من تونستم جفت پوچ بودن دستای هستی رو رو کنم، منتهی با گذر زمان میفهمه که انقدر هم اینکار ساده نیست و حتی نمیتونه یک random walk رو توجیه کنه. میفهمه که خیلی عقب وایساده و قرار نیست فیزیک و شیمی مدرن نظری جلوش زانو بزنن. مثلا شخص اثبات کرده که مسئلهی ارضاء پذیری ساختارهای محدود در منطق مرتبهی اول، تصمیم ناپذیره، و فرد میگه که کی همچین زری زده :) من میرم براش یک الگوریتم P مینویسم، منتهی باید کلی روحش سوهان بخوره تا بفهمه راحت که هیچ، شدنی نیست.
این مقدمه شاید لازم بود تا برسیم به مسئلهی مورد بحث که بسیار ساده است. محاسبهی ب.م.م دو عدد با روش اقلیدسی. اگر تا حالا اسم این الگوریتم رو نشنیدید اصلا چیز مهمی نیست. من بهتون توضیح میدم. تصور کنید که شما یک تابع دارید که دو عدد صحیح a و b رو به عنوان ورودی میگیره. این دو عدد بین دوتا Thread به اشتراک گذاشته میشن. ترد اول چنین کدی رو اجرا میکنه
ترد دوم هم به قرینهی ترد اول همین کار رو تقلید میکنه. یعنی چنین کدی رو اجرا میکنه :
بیاید برای درک بهتر الگوریتم یک مثال رو اجرا کنیم. تصور کنید مقدار 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 بزرگتر از صفره. حال با اضافه کردن این گزارهها برنامهی ما بدین شکل خواهد شد.
حالا پرسش سادهای که مطرح کردم و فرمال میکنم.
۱. آیا میتونید خودتون با استنتاج روی این کد اثبات کنید که برنامه این Properties رو ارضاء میکنه یا نه. اگر آره استنتاجتون رو شرح بدید.
۲. آیا میتونید یک برنامهای بنویسید که به عنوان ورودی این برنامه رو از شما بگیره و اگر حالتی درش وجود داره که منجر به نقض شدن شرطهای assert میشه رو پیدا کنه و به عنوان یک مثال نقض بهمون یک trace از اجرای برنامه برگردونه؟ اگر چنین برنامهای نوشتید، آیا decision procedure که برای پیدا کردن این trace به کار بردید، sound و complete و optimal هست؟ لطفا اثبات کنید.
شب دوم - قسمت اول
—————————————————
یک شب دیگه، یک برنامهی دیگه و یک باگ دیگه. نمیدونم چرا ولی همیشه یک سری کارا خیلی ساده به نظر میان. مثلا فرد چندتا رمان روسی میخونه، موزیکهای نئوکلاسیک فانک راک گوش میده، کمی تئوری لرنینگ میخونه، از 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 > b هستش و دوباره اوراکل رو صدا میکنیم :
اوراکل میگه بله ارضاء پذیره. کافیه مقدار a برابر باشه با 2b+1. دوباره ترد یک ادامه میده و حلقه رو یک بار دیگه پیمایش میکنه و میرسیم به این پرسش از اوراکل :
اوراکل میگه بله ارضاء پذیره چرا که مقدار a میتونه برابر با 3b+1 باشه. بعد از n بار اجرای حلقه، پرسش از اوراکل میشه :
و اوراکل میگه چون مقدار a میتونه برابر با :
باشه این فرمول ارضا پذیره. همونطور که ملاحظه میکنید پورسهی وریفیکیشن یک برنامهای که میشه اثبات کرد halt میکنه، تصمیم ناپذیر شده و تا بینهات ادامه میده و هیچ وقت converge نمیکنه! و یک مسئلهی به این سادگی اونقدرا هم که فکر میکنیم ساده حل نمیشه.
شب دوم - قسمت دوم
—————————————————
این بار میخوام برخلاف هزار و یک باگهای قبلی کمی مسئله رو پیش ببرم تا نشون بدم یک مسئلهی به این سادگی تا چه اندازه میتونه پیچیده بشه. فرض کنید برای وریفای کردن این برنامه ما میتونیم متغیرهای 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 نمیکنه! و یک مسئلهی به این سادگی اونقدرا هم که فکر میکنیم ساده حل نمیشه.