یک معرفی سریع می خواهید؟ فقط ویدئوی بالا را تماشا کنید!
سال گذشته یک برنامه کاربردی به نام the منتشر کردم سرور فایل Pafera . این یک برنامه کنسولی است که با Rust نوشته شده است و یک مدیر فایل مبتنی بر وب را برای دستگاههای شما اجرا میکند و به اشتراکگذاری آسان فایل با هر چیزی که دارای یک مرورگر وب با ویژگی نمایش اسلاید مفید برای نمایش عکسها و نمادهای شیبا است، امکانپذیر است. این بدان معناست که میتوانید به یک مهمانی بروید و به 200 دوست اجازه دهید همگی عکسهای تعطیلات اخیر شما را با تلفن خودشان، در زمان و سرعت خودشان مرور کنند.
بعداً، با پیشنهادات و الگوهای استفاده مختلف از دوستان و افراد غریبه اینترنتی، شروع به اضافه کردن ویژگیهای بیشتر و بیشتر کردم. اکنون میتواند کل درختهای دایرکتوری را همگامسازی کند، فایلهای رسانه را رمزگذاری کند، فایلها را با برنامههای سیستم عامل بومی باز کند و فایلها را بهطور خودکار در دستگاههای شما همگامسازی کند.
با این حال، به عنوان یک برنامه کنسول، همیشه یک مشکل بزرگ وجود داشت که مانع از آن می شد که یک راه حل جهانی برای همه دستگاه های شما باشد:
برنامههای کنسول نمیتوانند روی iOS اجرا شوند، به این معنی که شما نمیتوانید فایل سرور Pafera را در آیفونها و آیپدها اجرا کنید...
تا به حال.
زمانی که مونته نگرو در حال جشن گرفتن تعطیلات بود، در تعطیلات کریسمس وقت خالی داشتم، بنابراین با نوشتن یک برنامه همراه چند پلتفرمی در Flutter/Dart آزمایش کردم که به شما امکان می دهد به راحتی سرورها را از طریق تلفن خود مرور کنید. به این ترتیب، دوستان من که کمتر به فناوری علاقه مند بودند، فقط می توانستند دو دکمه را فشار دهند و به سرورهای من متصل شوند.
در طول راه، متوجه شدم که شما واقعاً می توانید از Dart برای اجرای وب سرور خود در دستگاه های iOS استفاده کنید و فکر کردم ...
سلام! چرا به جای آن فقط سرور فایل را در Dart پیاده سازی نمی کنم!
بنابراین دو هفته بعد، برنامه اینجاست.
اکنون، عملکرد در مقایسه با نسخه Rust به طرز وحشتناکی کند است. سرور Rust می تواند حدود 40000 درخواست در ثانیه را ارائه دهد.
در حالی که نسخه دارت می تواند تنها حدود 400 ....
اما مهم این است که کار می کند ...
و روی آیفون نصب میشه!
به دلیل وجود اشکالی در کتابخانه PDFx با نسخههای اخیر Flutter، من مجبور شدم از آیکونهای زیبا برای همه دکمهها استفاده نکنم، زیرا آنها به صورت خطوط سیاه زشت نشان داده میشوند.
با این حال، عملیات اصلی یکسان است.
هنگامی که همه به یک شبکه WiFi یا نقطه اتصال تلفن شما متصل شدند، فقط روی نماد برنامه کلیک کنید، پوشه ای را که می خواهید به اشتراک بگذارید انتخاب کنید و روی "Start Server" ضربه بزنید.
سپس روی دکمه کد QR کلیک کنید، به دوستان خود اجازه دهید آن را اسکن کنند، و سپس آنها می توانند با خوشحالی پوشه شما را در تلفن خود مرور کنند، حتی فیلم ها را از تلفن شما مستقیماً به تلفن خود پخش کنند.
اگر دوست شما از لپ تاپ یا رایانه رومیزی استفاده می کند، این نیز مشکلی ندارد. فقط URL نشان داده شده در بالای کد QR دستگاه خود را تایپ کنید و آنها می توانند دقیقاً همین کار را انجام دهند.
اگر روی iOS یا اندروید اجرا نمی کنید، این هم مشکلی ندارد. Flutter Apps روی OSX، ویندوز و لینوکس به خوبی کار میکند، بنابراین اگر rsync، FFMpeg و ImageMagick را روی سیستم خود نصب کنید تا برنامه از آن استفاده کند، همان عملکرد و حتی بیشتر از آن را خواهید داشت.
علاوه بر به اشتراک گذاری ساده فایل، چندین ویژگی پیشرفته نیز وجود دارد، بنابراین من در اینجا یک مرور کلی ارائه خواهم کرد.
نام میزبان چیزی است که به دستگاههای دیگر با کلیک بر روی "جستجوی سرورهای دیگر" نشان داده میشود. اگر همزمان چند دستگاه را به اشتراک می گذارید، می توانید از آن برای تشخیص سریع یک دستگاه از دستگاه دیگر استفاده کنید.
Folder پوشه سیستم فایلی است که شما در واقع به اشتراک می گذارید. می توانید روی "استفاده از پوشه اسناد" برای پیشفرض در Documents/shared، یا میتوانید روی "انتخاب پوشه" برای انتخاب یک پوشه دیگر همچنین ممکن است لازم باشد روی "استفاده از پوشه اسناد" اگر iOS هنگام از سرگیری از حالت خواب، تنظیمات برنامه را به درستی بازخوانی نمی کند.
استفاده از IP فعلی به طور خودکار IP فعلی WiFi دستگاه شما را شناسایی می کند. مانند "استفاده از پوشه اسناد" اگر iOS برنامه را به درستی رفرش نمی کند و همچنان از IP شبکه WiFi قبلی استفاده می کند، از آن استفاده کنید.
"اشتراک گذاری در همه رابط ها» IP عمومی را روی 0.0.0.0 قرار می دهد که به این معنی است همه در هر چیزی که به آن متصل هستید می توانید سرور خود را ببینید. در رایانه های رومیزی با بیش از یک اتصال مفید است، اما مراقب استفاده از آن در مکان های عمومی باشید.
"شروع به اشتراک گذاری» سرور را اجرا می کند و صفحه اصلی را برای مدیریت شما باز می کند. با کلیک مجدد روی آن، سرور متوقف می شود و فایل های شما ایمن می شوند.
"بارگیری آخرین تنظیمات» و "ذخیره تنظیمات فعلی» دقیقا همان کاری را که می گویند انجام دهید تنظیمات شما مانند نسخه Rust کنسول در Documents/paferafileserver.cfg ذخیره می شود.
گزینه های رمز عبور مختلف برای دسترسی افراد مختلف به سطوح مختلف وجود دارد.
به طور معمول، همه فقط با اتصال به سرورتان میتوانند فایلهای شما را ببینند، اما اگر گزینه "فعال کردن فایلهای خصوصی" در زیر این موارد، هیچ کس نمی تواند فایل های شما را بدون رمز عبور خوانده شده ببیند.
رمز عبور نوشتن برای آپلود، انتقال، کپی یا حذف فایل ها استفاده می شود. بدون این، هیچ کس دیگری نمی تواند کاری برای سیستم شما بجز مشاهده فایل های شما انجام دهد.
رمز عبور پوسته در برنامه موبایل بی فایده است، اما در سیستم عامل های دسکتاپ و Termux در اندروید بسیار مفید است. این به شما امکان می دهد دستورات سیستم خودسرانه را اجرا کنید که آن را بسیار قدرتمند و در عین حال بسیار خطرناک می کند. این ویژگی به طور پیش فرض غیرفعال است و هر دو باید رمز عبور پوسته را وارد کنید و علامت "فعال کردن دستورات پوسته" زیر برای استفاده از آن
گزینه های مختلف فعال و غیرفعال به شما این امکان را می دهد که انتخاب کنید افراد دیگر چه کاری می توانند با سیستم شما انجام دهند حتی زمانی که آنها قبلاً رمز عبور مناسب را دارند. اینها همه گزینههای دیگر را لغو میکنند، بنابراین اگر کپی فایلها را غیرفعال کنید، هیچکس - حتی خودتان - نمیتواند فایلها را کپی کند.
گزینه ویژه "غیرفعال کردن SSH Keycheck» برای افرادی مانند من است که مدام در حین همگام سازی فایل ها بین دستگاه های مختلف در اطراف پرسه می زنند. به طور معمول، SSH هنگام اتصال به سیستمی که آدرس IP آن تغییر کرده است، درخواست تأیید می کند، حتی اگر هویت آن سیستم از قبل مشخص باشد. این گزینه به شما این امکان را میدهد تا فایلها را در شبکههای مختلف بهطور خودکار همگامسازی کنید، بدون اینکه برای تأیید اتصالات SSH به داخل کنسول بروید. وقتی در شبکههایی هستید که خودتان را کنترل نمیکنید، با احتیاط از آن استفاده کنید.
برخلاف اجرا در Termux یا محیط دسکتاپ، برنامههای iOS و Android به پوسته، rsync، ImageMagick یا FFMpeg دسترسی ندارند، بنابراین همه ویژگیهای پیشرفته همگامسازی و رمزگذاری غیرفعال هستند.
از آنجایی که سیستمعاملهای تلفن همراه میتوانند برنامههای پسزمینه را در هر زمانی از بین ببرند، وظایف خودکار زمانبندیشده نیز غیرفعال هستند.
راهحلهای ممکن برای همه این جنبهها وجود دارد، اما زمان لازم برای یکپارچهسازی این ویژگیها در حال حاضر فراتر از قصد من است. اگر کسی علاقه دارد به من پول بدهد تا او را اضافه کنم، آنگاه خواهیم دید که چه اتفاقی می افتد. 😁
مانند تمام پروژه های من، کد منبع در Codeberg میزبانی می شود و می تواند باشد اینجا پیدا شد .
برای باینری های از پیش کامپایل شده، می توانید فهرست راهنمای انتشار را در اینجا مرور کنید ...
یا به سادگی روی لینک های زیر کلیک کنید:
با توجه به الزامات امضای اپل، کاربران iOS و OSX باید منتظر بمانند تا برنامه در اپ استور در دسترس قرار گیرد، یا کد منبع را دانلود کرده و نسخه خود را برای دستگاه های خود کامپایل کنند.
از آنجایی که این نسخه جدید است، مطمئن هستم که در سیستمهای مختلف باگها و رفتارهای عجیب و غریب زیادی وجود خواهد داشت. اگر می خواهید این برنامه را برای من آزمایش بتا کنید، لطفاً یک ایمیل با دستگاه و نسخه سیستم عامل خود برای من ارسال کنید و من شما را در TestFlight راه اندازی می کنم.
توزیع یک برنامه Flutter در واقع بسیار پیچیدهتر از نسخه Rust است، جایی که من فقط یک فایل اجرایی را آپلود میکنم و تمام کار را تمام میکنم، بنابراین لطفاً متوجه باشید که اپل سه هفته طول میکشد تا برنامه من را بررسی کند و اجازه ورود آن را به iOS بدهد. اپ استور. وقتی اپل موظف است طبق قوانین اتحادیه اروپا به برنامه های شخص ثالث اجازه دهد، همه چیز باید بسیار آسان تر باشد.
مثل همیشه، امیدوارم که این برنامه برای شما مفید باشد، و اگر می خواهید آن را برای اهداف خود شخصی سازی کنید، من همیشه به عنوان مشاور فنی در دسترس هستم. از آن لذت ببرید!
درباره نویسنده |
|
![]() |
جیم از زمانی که در دهه 90 یک IBM PS/2 دریافت کرد، به برنامه نویسی پرداخت. تا به امروز، او همچنان نوشتن HTML و SQL را با دست ترجیح می دهد و روی کارایی و درستی کار خود تمرکز می کند. |