چگونه بلاکچین به عنوان فناوری اطلاعات عمل می کند و روند پیاده سازی و پذیرش از زمان پیدایش آن.

چگونه بلاکچین به عنوان فناوری اطلاعات عمل می کند و روند پیاده سازی و پذیرش از زمان پیدایش آن.

بخش 2 فناوری اطلاعات توزیع شده

انجام پروژه در فریلنس پروژه

با توجه به اینکه قبلاً ثابت کرده بودیم که بلاک چین توزیع شده، تغییرناپذیر و ایمن است. که تمام ویژگی های معتبر از نظر فنی کمی فراتر می رود. علاوه بر داشتن موارد فوق، شفاف، معتبر و شبه ناشناس نیز هست. علاوه بر این، قبل از اینکه یک رکورد یا تراکنش معتبر در نظر گرفته شود، باید به اجماع 51% گره دست یابد.


توزیع شده در نظر گرفته می شود زیرا یک کپی/مثنی کامل از داده ها، رکوردها و کدها در تمام گره های موجود زنده است. تغییرناپذیر است زیرا داده های روی بلاک چین، پس از نوشتن، قابل تغییر و تغییر نیستند. ایمن است زیرا بلوک ها به صورت رمزنگاری به هم مرتبط هستند. تایید شده است زیرا ماینرها برای ایجاد بلوک های امن با هم رقابت می کنند (و در مورد بیت کوین با ارز دیجیتال پاداش می گیرند). و در نهایت، بلاک چین شبه ناشناس است زیرا هویت کاربر در یک تراکنش پنهان است و توسط یک کلید آدرس به شکل یک رشته تصادفی نشان داده می شود.


فضای کریپتو تکامل یافته است و همچنان در حال تکامل است تا نیازهای خاص را برآورده کند. و درست مانند محاسبات ابری، این الزامات باید به انواع مختلف بلاک چین منجر شود، یعنی: بلاک چین عمومی، خصوصی و ترکیبی (در ادامه در این مورد با پیشرفت بیشتر). این تغییرات نتیجه تلاش برای صرفه جویی در زمان و هزینه با برنامه های بلاک چین است.

سفارش ساخت سایت در فریلنس پروژه

با توجه به اینکه بلاک چین در حال حاضر یک واقعیت تجاری است، رویکرد توسعه برنامه های کاربردی وب که از فناوری هایی مانند HTML، CSS، جاوا اسکریپت، خدمات وب REST، پایتون، SQL و غیره استفاده می کند، باید بلاک چین را در پشته فناوری ادغام کند. ادغام فراتر از توسعه فرانت اند و باطن وب است، همچنین شامل عملیات توسعه (DevOps) نیز می شود. علاوه بر این، از آنجایی که سیستم‌های بلاک چین نمی‌توانند به تنهایی به داده‌های خارج از شبکه خود دسترسی پیدا کنند، سیستم‌های شخص ثالث (معروف به اوراکل‌ها و تغذیه‌کننده‌های داده) این شکاف را پر می‌کنند. این سیستم‌های خارجی به‌عنوان تغذیه داده‌ها به بلاک‌چین عمل می‌کنند، و اتفاقات دنیای واقعی (داده‌های خارجی) را ارائه و تأیید می‌کنند و سپس آن را به زنجیره بلوکی می‌رسانند تا توسط قراردادهای هوشمند استفاده شود. سیستم‌های بلاک چین باید به‌اندازه کافی کارآمد و به‌اندازه کافی برای مدیریت تغذیه از تغذیه‌کننده‌های داده فوق‌الذکر، مدیریت فرآیند KYC (مشتری/مشتری خود را بشناسید - برای تأیید هویت کاربر خدمات مالی) در تراکنش‌های مالی، تبدیل و مدیریت واقعی انجام دهند. پول جهانی از طریق ارزهای دیجیتال و قادر به ادغام با سیستم های دیگر. این همه هنوز در حال توسعه و بهینه سازی است تا تا حد امکان کارآمد باشد.

روند پیاده سازی بلاک چین

انجام پروژه متلب در فریلنس پروژه

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


برای درک بهتر این تکامل، بیایید نگاهی به نحوه انجام کارها در گذشته بیندازیم. در زمان های قدیم (دهه 70)، شرکت ها معاملات خود را با استفاده از کارت پانچ - یک تکه کاغذ سخت که داده های دیجیتال را با وجود و عدم وجود سوراخ در آن نشان می داد - و ذخیره سازی نوار مغناطیسی - یک نوار فیلم بلند و باریک برای مغناطیسی پردازش می کردند. ذخیره سازی. داده ها به صورت متوالی خوانده شد و در قالب QSAM ذخیره شد. و درست مانند داده های بلاک چین که می توان ایجاد و خواند. سپس سیستم های پایگاه داده اولیه مانند IBM IMS و سپس SQL توسط محققان IBM آمد. سپس انقلاب منبع باز باعث پدید آمدن پشته های فناوری توسعه وب شد که دنیایی را ایجاد کرد که ما در آن زندگی می کنیم مجهز به وب.


بلاک چین تنها برای پیشبرد دوره اختلالات فناوری طبیعی است. با این حال، ابتدا باید در پارادایم توسعه موجود ادغام شود و این در حال حاضر اتفاق افتاده است. چارچوب های جاوا اسکریپت برای ساخت کیف پول های رمزنگاری مانند Ether.js و web3.js وجود دارد.


با ادامه این اختلال، سیاست گذاران در سراسر جهان چاره ای جز از دست دادن کنترل مقررات در بلاک چین نخواهند داشت. برخی کشورها مدت هاست که سیاست خود را در قبال بانکداری باز اصلاح کرده اند. در بریتانیا، بانک‌ها و ارائه‌دهندگان پول الکترونیکی باید به اشخاص ثالث اجازه دسترسی به داده‌های مشتریان - مصرف‌کنندگان و کسب‌وکارها را از طریق APIهای باز (واسط‌های برنامه‌نویسی کاربردی) بدهند. این به استارت‌آپ‌ها اجازه می‌دهد تا خدماتی را بر روی بلاک چین ایجاد کنند که به شما به عنوان یک مصرف‌کننده اجازه می‌دهد تا امور مالی خود را با هزینه کم مدیریت کنید. مسدود کردن

فناوری ها و خدمات مبتنی بر زنجیره، چشم انداز معاملات را تغییر خواهند داد.

نتیجه

طراحان لوگو در فریلنس پروژه

برای امروز کافی است! امیدوارم از خواندن آن لذت برده باشید (مخصوصاً اگر اهل فن آوری هستید) همانطور که من از نوشتن آن لذت بردم. اگر احساس سخاوتمندی می کنید و می خواهید حمایت خود را نشان دهید، می توانید این کار را با اشتراک گذاری خبرنامه یا خرید یک تکه پیتزا انجام دهید.


هفته آینده می بینمت! من در مورد انواع شبکه های بلاک چین صحبت خواهم کرد

کاوش فلاسک و ادغام API خارجی - برنامه هواشناسی Flask

کاوش فلاسک و ادغام API خارجی - برنامه هواشناسی Flask

Flask: توسعه وب، یک قطره در یک زمان.

(منبع)


در این راهنما، ما چارچوب وب محبوب Python Flask و ادغام یک API شخص ثالث را بررسی خواهیم کرد. اگر در دنیای توسعه وب تازه وارد هستید و می خواهید یک برنامه کاربردی ساده با تنظیمات کمی ایجاد کنید، چارچوب Flask مکان خوبی برای شروع است.

الزامات و راه اندازی

انجام پروژه در فریلنس پروژه

    پایتون 3.7+

    هر IDE سازگار با پایتون (کد ویژوال استودیو، PyCharm و غیره)

    یک کلید OpenWeatherMap API دریافت کنید


اگر ترجیح می دهید با استفاده از کد منبع پروژه را دنبال کنید، می توانید آن را در GitHub اینجا پیدا کنید: https://github.com/gabriellemwhite/flask-weather-app

مرحله 1: نصب فلاسک

سفارش ساخت سایت در فریلنس پروژه

برای شروع، یک پوشه پروژه و یک venvfolder در داخل ایجاد کنید:


mkdir myproject
cd myproject
py -3 -m venv venv


سپس باید محیط مجازی خود را با موارد زیر فعال کنید:


venv\Scripts\activate


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


Pip install Flask


مرحله 2: ایجاد برنامه


اکنون که برنامه خود را ایجاد کرده اید و Flask را نصب کرده اید، ما فایلی را در پوشه پروژه با کد boilerplate زیر ایجاد و ذخیره می کنیم. برای این مثال، نام آن را app.py می گذاریم:


# app.py
# importing Flask class from flask module
from flask import Flask
# creating an instance of Flask class
app = Flask(__name__)
# use the route decorator to tell Flask what URL should trigger our function
@app.route('/')
# function returns the message "Hello World!" on user's browser
def hello_world():
return 'Hello World!'
# runs the flask application using the app.run method
if __name__ == '__main__':

    app.run()

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


$ python app.py

طراحان لوگو در فریلنس پروژه

سپس یک وب سرور محلی را در رایانه شما راه اندازی می کند و می توانید با باز کردن http://127.0.0.1:5000/ یا http://localhost:/5000 به آن دسترسی پیدا کنید. شما باید چیزی مشابه در زیر ببینید:

پیش نمایش مرورگر با نمایش "Hello World!"

پیش نمایش مرورگر با نمایش "Hello World!"

مرحله 3: مسیریابی نماها


اکنون که اصول ایجاد یک اپلیکیشن مینیمال در Flask را فهمیدیم، به مسیریابی و برگرداندن فایل های HTML خواهیم پرداخت.


به دایرکتوری پروژه خود بروید و یک پوشه /templates و /static ایجاد کنید. پوشه templates فایل‌های HTML شما را نگه می‌دارد در حالی که پوشه استاتیک شما فایل‌های یک ظاهر طراحی شده مانند CSS و تصاویر شما را نگه می‌دارد.


در پوشه templates خود یک فایل HTML به نام index.html و weather.html ایجاد کنید. در پوشه استاتیک خود، یک شیوه نامه CSS به نام styles.css ایجاد کنید. برای آموزش، من هیچ استایلی را به HTML اضافه نمی کنم. شما می توانید استایلی را که من در کد منبع خود استفاده کردم در GitHub پیدا کنید.

انجام پروژه متلب در فریلنس پروژه

اکنون app.pyfile را برای مسیریابی به این فایل‌های HTML جدید اضافه می‌کنیم:


# import Flask
from flask import Flask, request, render_template
import os, requests# python-dotenv reads key-value pairs from a .env file and sets them as environment variables
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)# route decorator to bind the index function
@app.route('/', methods = ["GET", "POST"])
def index():

# pulls information from the server
if(request.method == 'GET'):

# return index.html to the server
return render_template("index.html")
# sends the form data inputted by the user to the server
elif(request.method == 'POST'):

# get user inputted values for zip code and country code
user_zipcode = request.form.get("zip")
user_country_code = request.form.get("country_code")

# send request to openweathermap API
openweather = requests.get("https://api.openweathermap.org/data/2.5/weather?zip={},{}&appid={}&units=imperial".format(user_zipcode, user_country_code, os.environ.get("API_KEY")))

# return weather.html to the server
return render_template('weather.html', weather=openweather.json())
# pass the zipcode and country code as keyword arguments
@app.route('/<zip>/<code>', methods = ["GET", "POST"])
def openweather_api():
# send request to openweathermap API
openweather = requests.get("https://api.openweathermap.org/data/2.5/weather?zip={},{}&appid={}".format(user_zipcode, user_country_code, os.environ.get("API_KEY")))

# test openweather API
print(openweather.json())
# run the application
if __name__ == '__main__':

# debug set to true for testing
app.run(debug=True)

معمولاً بهترین روش ذخیره کلیدهای API در یک فایل .env و تنظیم آنها به عنوان متغیرهای محیطی برای اهداف امنیتی است. من این کار را در بالا با استفاده از ماژول پایتون python-dotenv انجام می دهم.

مرحله 4: ایجاد نماها


ما اکنون آماده شروع کار بر روی صفحات HTML خود هستیم که از app.py هدایت می شوند.


در فایل index.html کد زیر را اضافه کنید:


<!DOCTYPE html>
<html lang="en">
<head>
<title>Flask Weather App</title>
</head>
<body>
<form action="/" method="POST">
<h4>Flask Weather App</h4>
<label for="zipcode">Zipcode:</label>
<input type="text" id="zip" name="zip" placeholder="Enter zipcode" />
<label for="country_code">Country Code (Ex. US, UK):</label>
<input type="text" id="country_code"name="country_code" placeholder="Enter country code" />
<button type="submit" id="openweather_api">Enter</button>
</form>
</body>
</html>


این صفحه HTML خانه فرمی است که به کاربران امکان می دهد کد پستی و کد کشور و POSTit خود را به سرور وب وارد کنند. این همان چیزی است که برای بازیابی اطلاعات آب و هوای محلی شما به درخواست OpenWeatherMap API ارسال می شود.

در مرحله بعد، صفحه داده های آب و هوای بازیابی شده از درخواست API را نمایش می دهد. اجازه دهید ابتدا ببینیم وقتی که OpenWeatherMap API را درخواست می کنیم چه اتفاقی می افتد:
نمونه پاسخ JSON از OpenWeatherMap API

درخواست API با استفاده از درخواست‌های ماژول پایتون انجام می‌شود و با JSON بازگردانده می‌شود، که می‌تواند پاسخ را در فایل app.py بخواند.

بعداً روی فایل weather.html کار خواهیم کرد. از آنجایی که ما از ماژول render_template Flask استفاده می کنیم، از یک جداکننده خاص برای دسترسی به متغیرهای ذخیره شده در پاسخ JSON استفاده خواهیم کرد. برای مثال، شی ای که کد کشور را در شیء تو در تو sys ذخیره می کند، به شکل زیر است:

{{weather.sys.country}}

در فایل weather.html کد زیر را اضافه کنید:

# weather.html<!DOCTYPE html>
<html lang="en">
<head>
<title>Flask Weather App</title>
</head>
<body>
<img src="http://openweathermap.org/img/wn/{{weather.weather[0].icon}}@2x.png" width="150px">
<h5> Weather in {{weather.name}}, {{weather.sys.country}}</h5><p> Description: {{ weather.weather[0].description.title() }}</p>
<p> Current Temperature: {{weather.main.temp}}&#176</p>
<p> Feels Like: {{weather.main.feels_like}}&#176</p>
<p> Wind: {{weather.wind.speed}}mph</p>
<p> Humidity: {{weather.main.humidity}}&#37;</p>
<p> Pressure: {{weather.main.pressure}}mB</p>
<p> Latitude: {{ weather.coord.lat }}&#176;</p>
<p> Longtitude: {{ weather.coord.lon }}&#176;</p>
<button type="submit" class="btn btn-primary btn-block" onclick="history.back()">Back</button></body>
</html>
برای آموزش، من هر سبکی را در HTML حذف کردم، اما می‌توانید آنچه را که من از کد منبع خود برای پروژه استفاده کردم را در اینجا بیابید. پس از یک استایل ساده، برنامه وب Flask شما باید چیزی شبیه به این را انجام دهد! پیش نمایش مرورگر برای index.html پیش نمایش مرورگر برای weather.html از اینکه در این سفر از طریق ایجاد یک برنامه وب مینیمال Flask به من ملحق شدید متشکرم! به راحتی می توانید سوالات خود را در زیر بپرسید یا مشکلی را در اینجا به پروژه GitHub ارسال کنید.
انجام پروژه پایتون

CRUD با Firebase Firestore | فلاتر | داستان AM

CRUD با Firebase Firestore | فلاتر | داستان AM

هنر AkarMoon BitMap: Yin Yan Firebase Web Android Youtube Flutter


منبع:


Firebase Firestore CRUD | فلاتر | توسعه دهندگان Firebase (medium.com)

انجام پروژه در فریلنس پروژه

Firebase یکی از محبوب ترین BaaS است که در توسعه برنامه های تلفن همراه استفاده می شود. خدمات مختلفی را برای توسعه اپلیکیشن موبایل ارائه می دهد که در این مقاله Firebase Firestore به یکی از آنها خواهیم پرداخت. Firestore به شما امکان آپلود و بازیابی اطلاعات را با دستورات بسیار کوتاه و ساده می دهد.


من قصد دارم این برنامه Schedular را بسازم (مانند برنامه زمانبندی درس) تا عملیات Firestore CRUD (ایجاد حذف به‌روزرسانی خواندنی) را نشان دهد.


بیایید با ایجاد یک پروژه Firebase شروع کنیم. اگر برای ساخت پروژه در Firebase به کمک نیاز دارید، می توانید آن را در اینجا بررسی کنید:


شروع به کار با Cloud Firestore | Firebase (google.com)

سفارش ساخت سایت

شما را از طریق آن راهنمایی می کند.


حال شما خوب است؟ خوب! بیایید مجموعه کتابخانه خود را اضافه کنیم.

بسته های بسته کتابخانه Kumpulan


بسته های کتابخانه را از طریق فایل pubspec.yaml اضافه کنید:


firebase_core: ^1.19.2

cloud_firestore: ^3.3.0


مقدار دهی اولیه کنید


در مرحله بعد، پروژه Firebase خود را مقداردهی اولیه می کنیم.


در تابع اصلی یک تابع async (ناهمزمان) ایجاد کنید و قبل از تابع runApp() یک خط اضافه کنید:

طراحان لوگو

WidgetsFlutterBinding.ensureInitialized();await Firebase.initializeApp(گزینه ها: DefaultFirebaseOptions.currentPlatform,);


تابع WidgetsFlutterBinding.ensureInitialized() برای تعامل با موتور Flutter استفاده می شود. فراخوانی می شود زیرا Firebase.initializeApp() باید کد بومی و اقدامات WidgetsFlutterBinding مانند کانال های پلتفرم نامیده شود.


اکنون که Firebase را مقداردهی اولیه کردیم، به سمت عملکرد عملیات CRUD در پایگاه داده Firestore خود می رویم.


ساختار DB برنامه زمان بندی شده (برنامه برنامه)

کلاس مدل ما

ایجاد/ایجاد/نوشتن


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


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


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

انجام پروژه متلب

اما ما باید قبل از آپلود آن در Firestore از شناسه سند برای کلاس Appointment فرار کنیم، پس چگونه این کار را انجام دهیم؟ بیایید تابع bookSession (نشانک جلسه) خود را دوباره تعریف کنیم.


در خط 5، Firestore مجموعه ای به نام "قرار ملاقات" (Janju) ایجاد می کند و آن قرار را به عنوان یک سند با شناسه سند تولید شده به طور خودکار اضافه می کند. اگر آن مجموعه از قبل وجود داشته باشد، بدون مجموعه تکراری به سند اضافه می شود.

خواندن / خواندن


برای خواندن داده ها از Fitestore، از متد get() یا fetch استفاده می کنید.


db.collection("قراردادها").doc("FpS9NDSdMD2GeE9GL3i2").get().then(

  (DocumentSnapshot doc) {

    داده نهایی = doc.data() به عنوان Map<String, dynamic>;

    //...

  }،

  onError: (e) => print("خطا در دریافت سند: $e")،

)


از آنجایی که می خواهیم رابط کاربری برنامه خود را به صورت بلادرنگ به روز کنیم، از StreamBuilder استفاده خواهیم کرد. بازیابی داده ها از Fitestore با استفاده از StreamBuilder کمی با خواندن با استفاده از متد get() متفاوت است.


ببینید در هنگام دریافت قرارهای بی‌درنگ، قرار ملاقات‌ها را مستقیماً از کاربران چگونه می‌گیریم.


جریان getAppointments ما.

به روز رسانی / به روز رسانی


برای به روز رسانی داده ها در Firestore، از set() duplicate یا update() استفاده کنید.


برای کاربرانی که نیاز به به‌روزرسانی جزئیات قرار ملاقات دارند، یک ویژگی ویرایش اضافه کرده‌ام.


با استفاده از set()، ورودی داده در سند را با محتوای به روز شده به روز می کنیم.


با این حال، اگر بخواهیم محتویات را به صورت جداگانه به روز کنیم، به جای set() از update() استفاده می کنیم، بنابراین به نظر می رسد:

حذف/حذف


پایگاه داده Firestore به شما امکان می دهد اسناد، ستون ها و مجموعه ها را حذف کنید (اگرچه این کار توصیه نمی شود)


ما یک گزینه حذف برای موقعیت هایی ایجاد می کنیم که کاربر نظر خود را تغییر می دهد و تصمیم می گیرد قول خود را حذف کند. برای حذف یک وعده، سند را با این تابع از مجموعه حذف می کنیم:


ما سند را بر اساس شناسه سند به عنوان یک پارامتر در doc() قرار می دهیم. سپس delete() را فراخوانی کنید.


برای حذف یک ستون در یک سند، از نحو استفاده می کنیم:


یک فیلد را با استفاده از تابع FieldValue.delete حذف می کنیم و سپس سند را با استفاده از update() به روز می کنیم.


این مربوط به پوشش ویژگی برنامه ما و عملیات CRUD Firestore است. همیشه سعی می‌کنم تا حد امکان یک برنامه آزمایشی ساده بسازم تا بتوانیم روی موضوع تمرکز کنیم. با این حال، احساس آزادی ایجاد بر روی آن با ایجاد صفحات یا ویژگی‌های بیشتر، به شما این امکان را می‌دهد که بیشتر در مورد Firestore تمرین کنید.


اگر سوال یا پیشنهادی دارید کامنت بگذارید.

انجام پروژه پایتون

کد منبع کامل را از اینجا بگیرید:


GitHub — iamIkay/schedular_app: برنامه زمانبندی ایجاد شده با Flutter و Firebase


شما را در فصل بعدی سری Firebase می بینیم.



توضیح اینکه چرا pwa ها برنامه های بومی را از بین نبرده اند؟

چرا PWA ها هنوز برنامه های بومی را از بین نبرده اند؟

تصویر پایه توسط Dall-E با دستور زیر ایجاد شده است: "رندر سه بعدی از دو گوشی هوشمند شخصی سازی شده در حال جنگ با چاقو در منظره نئونی پسا آخرالزمانی"

انجام پروژه در فریلنس پروژه

    کوین باست بنیانگذار Progressier است، یک ابزار نرم افزاری که توسط بیش از 5000 برنامه برای رهایی از فروشگاه های برنامه استفاده می شود.


روی کاغذ، PWA ها جایگزین مناسبی برای برنامه های بومی هستند: تنها یک پایه کد برای مدیریت، به روز رسانی های فوری که نیازی به تایید ندارند، و بدون کمیسیون برای پرداخت در خریدهای درون برنامه ای. چه چیزی را دوست ندارد؟


اگرچه برنامه‌های وب پیشرو از زمان پیدایش خود بسیار پیشرفت کرده‌اند، اما کاملاً در نقطه‌ای نیستند که بتوانند جایگزین مناسبی برای برنامه‌های بومی باشند.


بنابراین ... چه چیزی هنوز در سال 2022 گم شده است؟ چرا آنها هنوز به فرمت پیش فرض برنامه ها تبدیل نشده اند؟

مشکل هویت PWA


من در مورد این موضوع خاص با جزئیات بیشتری نوشته ام، اما PWA ها هنوز از شهرت خود به عنوان برنامه های درجه دو رنج می برند - یا بدتر، در برخی موارد، اصلاً برنامه نیستند.


در سال 2022، رفتار پیش‌فرض همچنان این است که به دنبال برنامه‌ها در Google Play یا App Store بروید. به اندازه کافی خنده دار، نصب یک برنامه به طور مستقیم از یک وب سایت هم سریع تر و هم راحت تر است. اما کاربران هنوز بدون درخواست‌های اختصاصی و عناصر تبلیغاتی به این کار عادت ندارند.


هسته اصلی مشکل، مسئله اعتماد است. دانلود یک برنامه از شخص ثالث به این معنی است که شخص ثالث مورد نظر (گوگل یا اپل) تأیید می کند که برنامه برای دانلود بی خطر است.


اما نکته اینجاست: PWA ها نیازی به تایید گوگل و اپل ندارند... زیرا از قبل تضمین شده اند که ایمن هستند - از نظر طراحی. یک PWA نمی تواند مخاطبین تلفن شما را بخواند، از طرف شما پیامک ارسال کند یا به هیچ یک از ویژگی های تلفن شما که می تواند اطلاعات خصوصی شما را فاش کند، دسترسی پیدا کند.


ارزش پیشنهادی یک "فروشگاه برنامه" دو جنبه دارد: تدارکات (نصب برنامه خود در دستگاه کاربر) و تبلیغ (ترغیب افراد بیشتر به کشف برنامه شما). مسلماً، اپ استورها دیگر چنین کار بزرگی را در دومی انجام نمی دهند. و تدارکات نصب PWA در خود مرورگر تعبیه شده است.

سفارش ساخت سایت

در سال 2022، کل پارادایم فروشگاه برنامه اضافی است.

اعلان های فشار iOS


پس از سال‌ها انتظار به ظاهر ناامیدکننده، بالاخره اپل اعلام کرد که اعلان‌های فشاری در سال 2023 به iOS می‌آیند. این خبر بسیار خوبی است. تا به حال، می‌توانید اعلان‌ها را برای کاربران Android/Windows/macOS خود ارسال کنید، اما نه برای کاربران iOS.


برای بسیاری از توسعه دهندگان، این بدان معناست که نمی توان به طور کامل به اعلان های فشار برای ارائه اطلاعات مهم به کاربران خود اعتماد کرد. اعلان‌های فشار وب یک امتیاز اضافی خوب بود - نه بخش مهمی از گردش کار یک محصول.


مشروط بر اینکه اپل اعلان‌های فشار وب را به روش صحیح پیاده‌سازی کند (مانند مشخصات W3)، این در شرف تغییر است. شما می‌توانید با تلاش بسیار اندک و بدون نیاز به فهرست کردن برنامه‌های خود در Google Play و App Store، کاربران را در اندروید و iOS مطلع کنید.


همانطور که گفته شد، توسعه‌دهندگان وب آنقدر از Web Push API سوء استفاده کرده‌اند (مثلاً وب‌سایت‌های خبری که در اولین بازدید شما درخواست دسترسی دارند) که مردم از این درخواست‌ها متنفر شده‌اند. در نتیجه، در برخی موارد، کروم (و سایر مرورگرها) درخواست‌های اعلان فشاری را به‌طور خودکار مسدود می‌کند - درخواست دسترسی به این ویژگی را برای توسعه‌دهندگان با موارد استفاده قانونی دشوارتر می‌کند.


یکی از موارد برتر در لیست علاقه مندی های شخصی من این است که پس از نصب، به PWA ها اعتباری بالاتر از یک وب سایت معمولی اعطا شود (اما نه به اندازه یک برنامه بومی). وادار کردن افراد به نصب PWA شما دلیلی بر این است که آنها به نوعی به آن اعتماد دارند - آنها فقط به سایت شما برخورد نکرده اند.

انجام پروژه متلب

چند نمونه از آنچه مقام بالاتر می تواند به آن ترجمه شود:


    PWA های نصب شده می توانند به طور خودکار به Push API دسترسی داشته باشند.

    دسترسی به Push API را برای PWA های نصب شده محدود کنید. وب‌سایت‌های معمولی اصلاً مجاز به درخواست دسترسی نیستند. خداحافظ هرزنامه BS.

    بسته‌بندی درخواست‌ها به چندین API مرورگر در اعلان نصب. به عنوان مثال، هنگامی که یک PWA نصب می‌شود، می‌تواند درخواست دسترسی خودکار به Push API، API مکان جغرافیایی، یا Microphone API را داشته باشد – با جابجایی‌هایی برای کاربران تا به طور جداگانه به هرکدام اجازه یا غیرمجاز را بدهند.

    یا ساده تر، Chrome به سادگی نمی تواند اعلان های فشار را در صورت درخواست از داخل یک PWA مسدود کند.


درخواست نصب بومی در iOS

نصب PWA در iOS نیازمند نمایش دستورالعمل‌های سفارشی کاربران است


نصب یک برنامه در iOS در حال حاضر نیازمند باز کردن پنل اشتراک گذاری و کلیک بر روی دکمه افزودن به صفحه اصلی است. این بیشتر کار را انجام می دهد، اما به آسانی نصب یک برنامه اصلی iOS نیست.


اگر سافاری از رویداد BeforeInstallPrompt پشتیبانی کند، این تجربه ساده‌تر می‌شود. یا حداقل، اپل می تواند عبارت Add to Home Screen را برای نصب برنامه تغییر دهد – اندروید دقیقاً چند سال پیش این کار را انجام داده است.


اگرچه جریان فعلی یک راه‌حل خوب است، اما پیامدهای ناخواسته‌ای دارد که هم برای کاربران و هم برای توسعه‌دهندگان مضر است.


به عنوان مثال، imp است s، و وب، به عنوان یک کل.

طراحان لوگو

     کوین باست بنیانگذار Progressier است، یک ابزار نرم افزاری که توسط بیش از 5000 برنامه برای رهایی از فروشگاه های برنامه استفاده می شود.

رویای برنامه نویسی

یک بار دیگر حرکت می کند


چگونه شروع شد؟

( نقل قول از رابرت کول )

در سال 2012 با خانواده ام، هموطنان  خداحافظی می کردم تا اولین سفر دور از وطنم را آغاز کنم.


در برزیل تحصیل کردم، کار حرفه ای خود را شروع کردم و در همان زمان قصد داشتم روزی به اروپا بروم و کاری را که دوست دارم انجام دهم - برنامه نویسی. برای من یک رویا بود!

انجام پروژه متلب در فریلنس پروژه

طبق معمول یک روز خوب مشغول بررسی موقعیت های شغلی در اروپا بودم که ناگهان به وب سایت رسمی زبان برنامه نویسی پایتون برخوردم. چندین فرصت شغلی وجود داشت، اما یک شغل خاص توجه من را به خود جلب کرد - توسعه دهنده پایتون در Tencoins در مالت. توصیف موقعیت برای من جذاب به نظر می رسید، زیرا همه چیز به من مربوط می شد، اما موقعیت مکانی مرا کنجکاو کرد، جایی بود که هرگز نامش را نشنیده بودم، "مالتا". مالت چیست؟


تحقیقات:


البته من بلافاصله رفتم تا در مورد همه چیز مربوط به کشور تحقیق کنم. من متوجه شدم که این مجمع الجزایری است که در جنوب اروپا واقع شده است، که یکی از ارزان ترین کشورهای قاره محسوب می شود، با هزینه زندگی کم و سیاستی مطلوب برای بازار ارزهای دیجیتال، که Tencoins در آن فعالیت می کند.


فکر می‌کنم تمام ویدیوهای یوتیوب را در مورد این کشور تماشا کرده‌ام، و دو نکته که کاملاً مثبت است این است که یکی از زبان‌های رسمی انگلیسی است و گردشگران زیادی وجود دارد.


بدون هیچ مقدمه ای، بالاخره تصمیم گرفتم برای جای خالی اقدام کنم…


آماده سازی:


پس از تایید جای خالی و پذیرش پروپوزال، یکی از مراحلی که پروانه ها را در شکم می آورد، مرحله آماده سازی برای جابجایی بود. و در این مرحله متوجه شدم: «لعنتی! من یک بار دیگر به کشور دیگری نقل مکان می کنم، به مالت!»

طراحی لوگو با بهترین طراحان لوگو

Tencoins HR به من در طی این فرآیند کمک کرد، چک لیستی را برای من ارسال کرد تا برای درخواست اجازه اقامت برای مقاصد کاری دنبال شود. اساساً مدارک زیر لازم بود:


    گذرنامه

    دیپلم

    ریز نمرات تحصیلی

    چند فرم پر شده


با کمک Tencoins تمام فرم ها را پر کردم و با پست ارسال کردم. اما در مورد دیپلم چطور؟ از این گذشته، من مال خود را در برزیل گرفتم، به زبان پرتغالی است، بنابراین ترجمه لازم بود. HR نیز رسیدگی کرد و مدارک را به نهاد ذیصلاح ارائه کرد و در عرض دو هفته من مجوز اقامت را گرفتم.


زمان خداحافظی:


زمان خیلی سریع گذشت، وقتی متوجه شدم که بلیط ها در صندوق پست الکترونیکی من هستند. اضطراب و پروانه های شکمم بیشتر شد، اما متقاعد شده بودم که در مسیر درستی هستم و هیچ وقت دریغ نکردم.


ورود به مالت:


من وارد مالتا شدم و در فرودگاه مورد استقبال شرکت قرار گرفتم و در همان روز یک سیم کارت محلی برای من خریدند. من یک بازدید کوتاه از شرکت انجام دادم، با تعدادی از همکاران ملاقات کردم و بعداً در آپارتمان موقتی که Tencoins برای من رزرو کرده بود مستقر شدم. یک آپارتمان بسیار خوب در Sliema، یکی از اصیل ترین شهرهای مالت، و نسبتاً نزدیک به دفتر.


محیط شرکت:


همکاران من از روسیه، بلاروس و برزیل آمده اند. این ترکیب جالبی از فرهنگ ها است، بنابراین می توانید از نقطه نظر فرهنگی نیز چیزهای زیادی بیاموزید.

سفارش طراحی سایت در فریلنس پروژه

دفتر در کنار دریا واقع شده است و ما منظره زیبایی از دریا و والتا داریم. این به نوعی خلاقیت را تقویت می کند، که یک عنصر کلیدی برای کار مولد است.


ما یک منطقه استراحت و یک آشپزخانه مجهز داریم که همیشه می توانید میان وعده پیدا کنید و غذای خود را گرم کنید یا غذا بپزید.


جستجوی آپارتمان:


می توانم بگویم که چندین گزینه برای آپارتمان در مالت پیدا کردم. من عمدتاً روی شهرهایی مانند: Sliema، Msida و Gzira تمرکز کردم که نزدیک به دفتر و همچنین مراکز خرید هستند.


جدا از موقعیت مکانی، یک معیار مهم برای من "یک آپارتمان مدرن، با یک یا دو اتاق خواب" بود. در نتیجه، چندین مورد را با میانگین قیمت حدود 900.00 یورو پیدا کردم و در کمتر از 15 روز آپارتمانی را که اکنون در آن زندگی می کنم، واقع در جزیره، 500 متری دفتر، پیدا کرده بودم.


می توانم بگویم که موقعیت بسیار خوبی پیدا کردم، جدا از اینکه به شرکت نزدیک هستم، می توانم چندین مغازه را در شعاع 1 کیلومتری پیدا کنم، از جمله باشگاه ورزشی که در آن رفت و آمد می کنم و در 700 متری خانه است.


غذا:


ذاتاً من کسی هستم که به سختی چاق می‌شوم، در نتیجه زیاد غذا می‌خورم و خدا را شکر می‌کنم که طبق انتظار، غذا در مالت ارزان است.


من در حال حاضر حدود 50.00 یورو در هفته خرج می کنم، و می توانم حداقل 7 وعده غذایی سالم درست کنم، و تاکید می کنم که در Tencoins ما همیشه میان وعده داریم.


اوقات فراغت:


چندین گزینه تفریحی در مالتا وجود دارد. من به خصوص بارها و مهمانی ها را دوست دارم.


نکته بسیار مثبت مهمانی ها در مالتا این است که برای ورود نیازی به پرداخت هزینه ندارید، بلکه فقط برای آنچه مصرف می کنید، نیازی به پرداخت هزینه ندارید. در آنجا می توان با مردمی از چندین کشور ملاقات کرد و با فرهنگ های مختلف تعامل کرد.


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