| Erfan's Notes |
190 subscribers
81 photos
10 videos
101 links
Download Telegram
اگر PHP کار می‌کنید و از زبان های دیگه‌ای مثل C بهش مهاجرت کردید، با استفاده از قابلیت FFI در PHP می‌تونید کد هایی که به سایر زبان‌ها نوشتید رو داخل PHP استفاده کنید

مبحث FFI یا Foreign Function Interface در PHP ما اجازه میده که کد هامون رو با زبان C بنویسیم و بدون نیاز به کامپایل یا تبدیل به اکستنشن و …، به صورت مستقیم در PHP استفاده کنیم

با استفاده از اینترفیس FFI شما می‌تونید به صورت مستقیم از داخل PHP کتابخانه های پسوند dll یا so رو لود کنید و با API های سطح پایین سیستم کار کنید

البته که نوشتن بخشی از برنامه با C الزاما به معنی افزایش پرفرمنس نیست، بلکه در حال حاضر دیتا تایپ های FFI تقریبا دو برابر کندتر از دیتا تایپ های خود PHP هستند

ولی خب، می‌تونید برنامه هایی رو بنویسید که مموری خیلی کم‌تری مصرف می‌کنند

برای مطالعه بیشتر می‌تونید از لینک زیر شروع کنید

https://www.php.net/manual/en/ffi.examples-basic.php
🔥13
Forwarded from Milad Nouri(ツ) میلاد نوری
نیتیو پی‌اچ‌پی (NativePHP) که لحظاتی پیش در کنفرانس Laracon معرفی شد، به شما این امکان رو می‌ده با زبان PHP، برنامه‌های دسکتاپ بنویسید.

سایت:
https://nativephp.com

گیت‌هاب:
https://github.com/nativephp/laravel

📝 @MiladNouriChannel
🔥5
Milad Nouri(ツ) میلاد نوری
نیتیو پی‌اچ‌پی (NativePHP) که لحظاتی پیش در کنفرانس Laracon معرفی شد، به شما این امکان رو می‌ده با زبان PHP، برنامه‌های دسکتاپ بنویسید. ‌ سایت: https://nativephp.com ‌ گیت‌هاب: https://github.com/nativephp/laravel ‌ 📝 @MiladNouriChannel
چیز جالبی به نظر می‌رسه ولی دلیلی برای هایپ برای این موضوع نداره چون چیز جدیدی نیست، از سالیان دور PHPGTK هم وجود داشته ولی خب دلیل عدم محبوبیتش این هست که: واقعا ساختار PHP مناسب چیزی جز محیط ‌سرور نیست

در حالت کلی، با چنگال هم می‌شه سوپ خورد ولی تا زمانی که قاشق هست، معقول نیست
🔥6
| Erfan's Notes |
Photo
پروژه KPHP به شما اجازه می‌ده که کد هایی که با سینتکس PHP نوشتید رو به زبان CPP ترنسپایل کنید و بعدش به کد ماشین کامپایل کنید

این پروژه چیز جدیدی نیست و از چند سال پیش وجود داشته، در واقع توسط VK.com توسعه داده شده برای استفاده شخصی خودشون داخل سایت و من بار ها می‌خواستم امتحان کنم ولی فرصت نمی‌شد، تا اینکه امروز بالاخره امتحانش کردم و بنچمارکی که گرفتم رو هم داخل تصویر قرار دادم

در تصویر بالا، در سمت راست بنچمارک سرور OpenSwoole هست و در سمت چپ بنچمارک سرور KPHP هست، کدی که برای بنچمارک استفاده کردم در واقع echo کردن عبارت "Hello World" بوده و می‌تونید ببینید که OpenSwoole به لحاظ RPS حتی بهتر از کد کامپایل شده وب‌سرور KPHP عمل کرده!

البته که بنچمارک من جنبه عمومی نداره و صرفا در ساده‌ترین حالت تست وب‌سرور انجام شده، طبیعتا یک کد کامپایل شده می‌تونه ده‌ها یا حتی صدها برابر سریع‌تر از نسخه تفسیری باشه

اگر بخواهیم KPHP رو با خود PHP عادی مقایسه کنیم، طبیعتا پرفرمنس چند برابری رو با KPHP تجربه می‌کنیم با توجه به کامپایل شدن کد، ولی خب استفاده از KPHP محدودیت های خیلی زیادی رو به فرایند توسعه‌مون اضافه می‌کنه

در حالت کلی به نظر من، این پروژه مختص خود VK.com نوشته شده و نمی‌ارزه که بقیه هم از اون استفاده کنند، با استفاده از PHP های نسخه جدید و OpenSwoole و بهره‌گیری از OPCache و JIT می‌تونیم یک پرفرمنس حداکثری از خود PHP با کلی قابلیت‌های دیگه بگیریم
🔥7
یکی از مباحث جالبی که باهاش می‌تونید وارد دنیای سه‌بعدی توی محیط وب بشید، ساخت دریا هست

سمپلی که در این لینک هست به صورت واضح این مبحث رو به تصویر کشیده

روال کار به این صورت هست که در دنیای سه بعدی، تمامی Geometry ها از چندضلعی‌هایی مثل مثلث تشکیل شدند

برای ساخت یک دریا کافی هست که یک Plane بزرگ ایجاد کنیم که متشکل از تعداد زیادی از مثلث هست، بعدش کافی هست که راس های مثلث رو به صورت x و y و z تغییر بدیم تا افکت موج و دریا به وجود بیاد
🔥5
| Erfan's Notes |
یکی از مباحث جالبی که باهاش می‌تونید وارد دنیای سه‌بعدی توی محیط وب بشید، ساخت دریا هست سمپلی که در این لینک هست به صورت واضح این مبحث رو به تصویر کشیده روال کار به این صورت هست که در دنیای سه بعدی، تمامی Geometry ها از چندضلعی‌هایی مثل مثلث تشکیل شدند …
و البته که در این صفحه می‌تونید مثال‌هایی از تمامی قابلیت های ThreeJS ببینید و به قدرتش پی ببرید

یادگیری WebGL و ThreeJS یا حداقل استفاده از ابزار های آماده برای طراحی سه‌بعدی در محیط وب، الان یک "باید" محسوب می‌شه برای کسی که خودش رو فرانت‌کار می‌دونه

https://threejs.org/examples/
🔥2
موافق ایجاد یک گروه فارسی برای وب سه‌بعدی (Spline، ThreeJS، …) هستید؟
Anonymous Poll
76%
موافق هستم
24%
!(موافق هستم)
| Erfan's Notes |
موافق ایجاد یک گروه فارسی برای وب سه‌بعدی (Spline، ThreeJS، …) هستید؟
خب، طبق نتایج نظرسنجی دوستانی که علاقه‌مند بودند می‌تونند داخل @SplineGP عضو بشن

در حال حاضر محتوای خاصی نداره ولی سعی می‌کنم به‌زودی یک‌سری ویدیو درمورد طراحی سه‌بعدی در وب ضبط کنم و داخل گروه و یوتیوب قرار بدم

و البته تاکید بر پرمحتوا بودن گروه نیست، صرفا وجود یک کامیونیتی هرچند کوچیک ایرانی، مایه دلگرمی توی هر حوزه‌ای هست

درمورد نتایج نظرسنجی دوم هم، بیشتر جنبه آگاهی داشت و تاثیر مستقیمی در روند ارسال مطلب داخل کانال نداره، داخل کانال هرچیزی که ارزش اشتراک‌گذاری داشته باشه، قرار می‌گیره
🔥5
Forwarded from Milad Nouri(ツ) میلاد نوری

چند روز پیش توی کنفرانس LaraConUS، نیتیو پی‌اچ‌پی معرفی شد.

امروز قصد داشتم این ابزار رو تست کنم و یک اپ ساده با اون بنویسم.

وسط کار به ذهنم رسید برنامه‌ای بنویسم که متن رو از ما بگیره و یکسری ایرادهای اون مثل رعایت نیم‌فاصله، تبدیل حروف عربی به فارسی و... رو رفع کنه.

خروجی آخر روز نسبتا قابل قبول شد.
هم زمان نسخه اندروید هم شروع کردم ☺️

اینکه این برنامه به درد کسی بخوره یا نه رو نمی‌دونم. اما حداقل باعث شد من امروز یه ابزار جدید (NativePHP) رو تست کنم.
قابلیت‌های جالبی داره و اگه لاراول بلدید، باعث می‌شه خیلی سریع به خروجی برسید.

آیا NativePHP برای نوشتن اپ دسکتاپ گزینه خوبیه؟‌ کلمه خوب نسبیه. قطعا برای کسی که قراره از اول برنامه‌نویسی اپ دسکتاپ با هر زبان یا ابزاری رو یاد بگیره یا کسی که خودش جاوااسکریپت و الکترون و... بلده، نه.

اما برای بکند دولوپری که لاراول بلده و می‌خواد برای پروژه‌ش خیلی سریع یک اپ دسکتاپ برای مک و ویندوز و لینوکس هم داشته باشه، چرا که نه.
‌‌
این هم از جمعه‌ای که گذشت.

اگه دوست داشتید، توییت‌های مرتبطی که امروز نوشتم رو بخونید.

📝 @MiladNouriChannel
🔥4
Media is too big
VIEW IN TELEGRAM
یکی از سه‌بعدی‌ترین پروژه هایی که پیاده کردم، نسخه جدید سایت دولوپیکس هست که دموی ویدیویی‌اش رو می‌تونید ببینید

خود سایت رو هم تست کنید و اگر مشکلی دیدید اطلاع بدید
🔥9
این ریپوزیتوری ابزارهای خوبی برای زبان فارسی داره، از جمله DatePicker شمسی و تبدیل تاریخ و اعداد و ...، توصیه می‌کنم ببینید

https://github.com/persian-tools
🔥5
احتمالا برای شما هم پیش اومده که توی پروژه خراب‌کاری کردید و آرزو کردید که کاش زمان به عقب برگرده

خب، این قابلیت در Git وجود داره و می‌تونید برگردید به کامیتی که در یک زمان خاص بودید، ساختار زمانی آدمی‌زاد هم می‌فهمه ظاهرا
🔥7
یکی از جالب‌ترین پروژه‌هایی که تا به الان وجود داشته و بی‌خبر بودم ازش، پروژه JA3 هست که در حوزه پروفایلینگ SSL و TLS هست

اگر مدیر سرور هستید، احتمالا شناسایی کاربرانی که IP عوض می‌کنند یا با تغییر User Agent و پورت و ... سعی در دور زدن سیستم های امنیتی‌تون دارند، یک معضل همیشگی بوده و هست

یکی از جالب‌ترین راهکار هایی که JA3 در اختیارتون قرار میده، امکان ایجاد Fingerprint از SSL/TLS کاربر هست که با عوض کردن IP و Port و UA هم باز می‌تونید کاربر مد نظر رو شناسایی کنید

مثلا فینگرپرینت یک کلاینت استاندارد Tor مشابه زیر هست:
e7d705a3286e19ea42f587b344ee6865

💠 اینجا می‌تونید لیست بیشتری از FingerPrint هایی معروف رو ببینید

⭕️ https://github.com/salesforce/ja3

💡 مقاله کامل این مبحث رو هم می‌تونید اینجا بخونید
🔥4
یکی از بهترین و سریع‌ترین کتابخونه‌هایی که برای Post Processing برای ThreeJS دیدم، این کتابخونه هست

قابلیت های خیلی خوب و جالبی هم داره و فیلترها و افکت های زیبا

البته که "سریع بودن" نسبی هست، اگر از افکت‌های سنگینی استفاده کنید طبیعتا فریم‌ریت پایین‌تر میاد و تعداد Call های بیشتری به WebGL می‌شه و پرفرمنس پایین میاد

💠 مشاهده دموها

⭕️ https://github.com/pmndrs/postprocessing
🔥5
اگر علاقه به نوشتن برنامه‌های PHP به‌صورت Portable تر دارید، توصیه می‌کنم با پروژه PHP Runtime آشنا بشید

من هم جدیدا آشنا شدم و حرف زیادی ندارم درموردش بزنم، صرفا درمورد کاربردش می‌تونم بهتون بگم که:

فرض کنید یک وبسایت با PHP نوشتید و تصمیم می‌گیرید که سایت رو بیارید روی OpenSwoole، مجبور هستید حداقل 20 درصد از کد های پروژه رو بازنویسی کنید تا مشکل متغیر های Global و ساختاری‌ای مثل _GET و‌ _POST و … رو حل کنید

حالا فرض کنید از OpenSwoole خوشتون نیومده و میرید سمت RoadRunner یا ReactPHP یا AMPHP و دوباره مجبور هستید بخش هایی از پروژه که مختص به فریمورک هستند رو بازنویسی کنید

کاربرد PHP Runtime برای حل این مشکل هست و در واقع برنامه‌تون رو به‌شکل BlackBoxed می‌نویسید که بتونید بدون زحمت تغییر در کد، با یک ساختار واحد، داخل OpenSwoole یا RoadRunner یا ReactPHP و … پروژه‌تون رو اجرا کنید

https://github.com/php-runtime/runtime
🔥3
این زبان عجیب و غریب رو توصیه می‌کنم ببینید و همین صفحه گیت‌هابش رو تا انتها بخونید تا با ویژگی‌های خنده‌دارش آشنا باشید

چیزی به اسم حلقه هم نداره چون معتقد هست حلقه‌ها منسوخ هستند!

به جای سمی‌کالن از ! استفاده می‌کنه و به جای not از سمی‌کالن استفاده می‌کنه

مقدار Boolean اش سه حالت بله و خیر و «شاید» هست

آرایه‌هاش نه از صفر و نه از یک، بلکه از منفی یک شروع می‌شه

می‌تونید بگید که 5 مساوی 4 هست و از اون به بعد هرجای برنامه 5 استفاده کنید، مقدار 4 نمایش داده می‌شه (هر چیزی رو در زبان می‌تونید مقدار دهی کنید و عوض کنید کاربردش رو)

و کلی قابلیت عجیب و غیرمنتظره دیگه، که بیشتر جنبه فان و شوخی با زبان های برنامه‌نویسی رو داره

https://github.com/TodePond/C
🔥9
نسخه r156 کتابخونه ThreeJS هم اخیرا ریلیز شده و تغییراتش رو می‌تونید از اینجا ببینید و آپدیت کنید به نسخه جدید

https://threejs.org/changelog/?r156