Mac-এ AE Server কী
আপনি যখন বিভিন্ন Mac-এ কাজ করেন, একটি কম্পিউটার থেকে অন্যটিতে যেয়ে সাধারণ টাস্ক কমপ্লিট করা একটা হ্যাসেল। উদাহরণস্বরূপ, অন্য একটি Mac-এ ডকুমেন্ট প্রিন্ট করা মানে আপনার কম্পিউটারে ফাইল কপি করা, তারপর সেটি অন্য Mac-এ লগইন করে সেখান থেকে প্রিন্ট করা। এটি হয় যখন ফাইলটি আপনার Mac-এ খোলা যায় না বা ফাইল চালু করার জন্য প্রয়োজনীয় অ্যাপ পুরনো।
ফাইল অন্য কম্পিউটারে কপি করা খুব কষ্টসাধ্য, বিশেষ করে যখন এর সাথে অনেক ফাইল জড়িত। خوشকISMতভাবে, Apple ने এটাকে সহজ করে দিয়েছে AppleScripts এবং Remote Apple Events ব্যবহার করে একই নেটওয়ার্কের অন্য Mac কন্ট্রোল করতে। এই টেকনোলজির জন্য, Mac ব্যবহারকারীরা এখন রিমোটলি অ্যাক্সেস করতে, অ্যাপ লঞ্চ করতে, এবং বেসিক টাস্ক পারফর্ম করতে পারেন। ব্যবহারকারীদের তাদের সিট থেকে উঠতে হয় না শুধু iTunes শোনতে, Messages অ্যাপ ব্যবহার করে মেসেজ পাঠাতে, বা কন্টাক্টকে ইমেইল পাঠাতে।
রিমোট অ্যাক্সেস উপযোগী যদি আপনার হোম বা অফিসে দুটো বা তার বেশি Mac থাকে। আপনি যদি Shared ফিচার ব্যবহার করে একই নেটওয়ার্কের অন্য Mac রিমোটলি কন্ট্রোল করতে পারেন, তবে AppleScript কমান্ড এবং AE Server ব্যবহার করা অনেক দ্রুত। প্লাস, আপনাকে Shared স্ক্রিন ফিচার খোলার দরকার নেই।
প্রো টিপ: আপনার Mac কে পারফরম্যান্স সমস্যা, জাঙ্ক ফাইল, হানিকারক অ্যাপ এবং নিরাপত্তা হুমকির জন্য স্ক্যান করুন
যা সিস্টেম সমস্যা বা ধীর পারফরম্যান্সের কারণ হতে পারে।
Apple Event কী?
Apple events হলো Mac OS-এ মেসেজ-বেসড ইন্টারপ্রসেস কমিউনিকেশন মেকানিজম, যা প্রথমে System 7-এ এল এবং класиিক Mac OS-এর প্রতিটি ভার্সন সাপোর্ট করেছে তার পর থেকে এবং macOS-ও। Apple events "high-level" ইভেন্ট ডেসক্রাইব করে যেমন "open document" বা "print file", যেখানে এর আগের OS-গুলো বেসিক ইভেন্ট সাপোর্ট করেছিল, যেমন "click" এবং "keypress"। Apple events Mac OS স্ক্রিপ্টিং সিস্টেমের ভিত্তি, Open Scripting Architecture (প্রাইমারি ল্যাঙ্গুয়েজ হলো AppleScript)।
শুরুকত হলো একটি ডাইনামিক্যালি-টাইপড, এক্সটেনসিবল ডেসক্রিপ্টর ফরম্যাট যাকে AEDesc বলে, যা শুধু একটি OSType কোড যা ডেটা টাইপ স্পেসিফাই করে, একসাথে টাইপ-ডিপেন্ডেন্ট ডেটার একটি ব্লক। উদাহরণস্বরূপ, OSType কোড inte ইঙ্গিত দেয় ডেটাটি একটি ফোর-বাইট সাইনড ইন্টিজার বিগ-এন্ডিয়ান ফরম্যাটে।
বিভিন্ন সাধারণ সিম্পল টাইপের জন্য প্রিডিফাইনড টাইপ কোডের পাশাপাশি, দুটি প্রিডিফাইনড স্ট্রাকচারড ডেসক্রিপ্টর টাইপ আছে: একটি AERecord, যার ডেটা টাইপ reco (record), এবং AEList যার টাইপ list (list বা array)। এইগুলোর ইন্টারনাল স্ট্রাকচার রিকারসিভলি-নেস্টেড AEDescs ধারণ করে, যেখানে AERecord প্রতিটি এলিমেন্টকে একটি উনিক রেকর্ড ফিল্ড ID-এর সাথে অ্যাসোসিয়েট করে, যা একটি OSType। Apple Event Manager এই স্ট্রাকচার কনস্ট্রাক্ট করার, তাদের কন্টেন্ট এক্সট্রাক্ট করার, এবং তাদের ধারণ করা টাইপ কোয়েরি করার জন্য API কল প্রদান করে।
Apple Event Manager coercions-ও সাপোর্ট করে, যা AEDescs এক ডেটা টাইপ থেকে অন্য ডেটা টাইপে কনভার্ট করে। স্ট্যান্ডার্ড coercions-এর পাশাপাশি, উদাহরণস্বরূপ ইন্টিজার এবং রিয়েল টাইপের মধ্যে, অ্যাপ্লিকেশন তাদের নিজস্ব coercion handler callbacks ইনস্টল করতে পারে, যা কাস্টম ডেটা টাইপে কনভারশন হ্যান্ডেল করে।
একটি আসল Apple event হলো একটি AERecord যার ফিল্ডগুলো ইভেন্টের উদ্দেশ্যের ওপর নির্ভরশীল। এছাড়াও, এর অ্যাট্রিবিউট আছে (যা রেকর্ড ফিল্ড থেকে ভিন্ন, যেগুলো এখন ইভেন্টের প্যারামিটার বলা হয়) একটি সেট থেকে যা Apple Event Manager দ্বারা প্রিডিফাইনড। এগুলো স্পেসিফাই করে ইভেন্টটি কী করতে সাপPOSED (ইভেন্ট ক্লাস এবং ইভেন্ট ID-এর মাধ্যমে), টার্গেট অ্যাড্রেস যেখানে ইভেন্টটি পাঠানো হবে (যা লোকাল বা রিমোট মেশিনের একটি প্রসেস হতে পারে), এবং এটি হ্যান্ডল করার জন্য বিভিন্ন অপশন। রিমোট মেশিন প্রাথমিকভাবে AppleTalk দ্বারা কানেক্টেড থাকতে হত, কিন্তু Mac OS 9 TCP/IP-এর মাধ্যমে কানেকশন অপশন যোগ করল।
Apple event টার্গেট প্রসেসে পাঠানোর পর, সেন্ডিং প্রসেস একটি রিপ্লাই Apple event রিসিভ করতে বেছে নিতে পারে। এতে টার্গেট থেকে রিটার্ন করা çeşitli ইনফরমেশন থাকতে পারে আসল ইভেন্ট প্রসেসিং-র সম্পর্কে, যার মধ্যে এরর কোড (সাকসেস/ফেইলচার ইন্ডিকেট করে), আসল ইভেন্ট দ্বারা অনুরোধ করা যেকোনো ইনফরমেশন, এবং/অথবা অন্যান্য উপযুক্ত ইনফরমেশন।
Apple events হলো AppleEvent Object Model-এর ফাউন্ডেশন, যা আবার OSA এবং AppleScript-এর ফাউন্ডেশন। ২০১৬ পর্যন্ত, Apple Event Manager API-এর অফিসিয়াল ইমপ্লিমেন্টেশন C-এ এবং এর সন্ততিগুলোতে (C++ সহ) উপলব্ধ। অফিসিয়াল বাইন্ডিংও Objective-C এবং Swift-এর জন্য Cocoa API-এর মাধ্যমে প্রদান করা হয়েছে। আনঅফিসিয়াল বাইন্ডিং অন্যান্য ল্যাঙ্গুয়েজের জন্যও আছে (ভিন্ন ডিগ্রির লিমিটেশন সহ), যেমন Perl, UserTalk, Ruby এবং Python।
AE Server কী?
আপনি যদি ব্যাকগ্রাউন্ডে AE Server চলছে দেখেন এবং আপনি এই ফিচারের সাথে পরিচিত নন, তবে আপনি সম্ভবত নিজের থেকে জিজ্ঞাসা করছেন: আমার Mac-এ AE server কী?
AE Server, যাকে AppleEvents Server ও বলা হয়, macOS-এ Remote Apple Events হ্যান্ডেল করে। এটি অন্য Mac-এ অ্যাপ্লিকেশনগুলোক লোকাল কম্পিউটারে AEs পাঠাতে সক্ষম করে। System Preferences > Sharing চেক করুন Remote Apple Events অন আছে কিনা। আপনি AEServer-কে macOS Accessibility পারমিশন প্যানেলে অ্যাক্সেস করতে পারেন:
System Preferences > Security & Privacy > Privacy > Accessibility > AEServer
এটি জটিল লাগতে পারে, কিন্তু আসলে এটি চেয়ে অনেক সিম্পল। AppleScript, যা macOS-এ বিল্ট-ইন ইউজার-লেভেল স্ক্রিপ্টিং সিস্টেম, Mac ব্যবহারকারীদের রিপিটেটিভ টাস্ক অটোমেট করতে, অ্যাপদের ক্ষমতা বাড়াতে, এবং এমনকি একক অ্যাপ তৈরি করতে দেয় একটি আপেক্ষিক সিম্পল ল্যাঙ্গুয়েজ ব্যবহার করে। AppleScript macOS এবং টার্গেট ইনডিভিডুয়াল অ্যাপ্লিকেশনlerle একটি সিম্পল মেসেজিং সিস্টেম যাকে Apple Events বলে তার মাধ্যমে কমিউনিকেট করে।
AE Server যা করে সেটি হলো AppleScript রিসিভ এবং এক্সিকিউট করে এবং এটিকে অন্য একটি Mac কম্পিউটারে পাঠায়। AppleScript পাঠানোই যথেষ্ট নয় টাস্ক পারফর্ম করার জন্য, এটিকে রিসিভিং কম্পিউটার Remote Apple Events-এর মাধ্যমে অনুমোদন করতে হবে।
আপনার Mac অন্য Mac কম্পিউটারে চলমান অ্যাপ্লিকেশন থেকে AEs অ্যাক্সেপ্ট করতে পারে। এগুলো macOS-এ করা টাস্ক, যেমন "এই ডকুমেন্ট খুলো" বা "এই ডকুমেন্ট প্রিন্ট করো"। Remote Apple Events অন থাকলে, অন্য Mac-এ চলমান একটি AppleScript আপনার লোকাল Mac রিমোটলি কন্ট্রোল করতে পারে বা টাস্ক পারফর্ম করতে পারে, যেমন ডকুমেন্ট প্রিন্ট করা বা অ্যাপ্লিকেশন খোলা।
macOS Catalina-এ চলমান Mac-গুলোর জন্য, একটি রিমোট সিস্টেমে প্রোগ্রামকে টার্গেট করে AppleEvents এবং AppleScripts অথেন্টিকেট হওয়া উচিত সেম ইউজার দ্বারা সেই রিমোট সিস্টেমে। অন্যথায়, ব্যবহারকারী procNotFound এরর পাবে। রিমোট AppleEvents যেকোনো ইউজার সেশনে অ্যাপকে টার্গেট করতে দিতে, সার্ভারে Terminal-এ এই কমান্ড চালান:
defaults write /Library/Preferences/com.apple.AEServer RestrictAccessToUserSession -bool false
তারপর System Preferences > Sharing-এ Remote Apple Events ডিজেবল এবং রি-এনাবল করুন।
Apple Event Manager কী?
Apple Event Manager, Open Scripting Architecture (OSA)-এর একটি অংশ, অ্যাপ্লিকেশনগুলোর Apple events পাঠাতে এবং রেসপন্ড করতে এবং তাদের অপারেশন ও ডেটা AppleScript স্ক্রিপ্টগুলোর কাছে উপলব্ধ করার সুবিধা দেয়। সম্পর্কিত API রেফারেন্সের জন্য, Open Scripting Architecture Reference দেখুন।
একটি Apple event হলো ইন্টারপ্রসেস মেসেজের একটি টাইপ যা কমপ্লেক্স অপারেশন এবং ডেটা স্পেসিফাই করতে পারে। Apple events একটি ডেটা ট্রান্সপোর্ট এবং ইভেন্ট ডিসপ্যাচিং মেকানিজম প্রদান করে যা একটি সিঙ্গল অ্যাপ্লিকেশনের মধ্যে, একই কম্পিউটারের অ্যাপ্লিকেশনগুলির মধ্যে, এবং নেটওয়ার্কে কানেক্টেড ভিন্ন কম্পিউটারের অ্যাপ্লিকেশনগুলির মধ্যে ব্যবহার করা যায়।
অ্যাপ্লিকেশন সাধারণত Apple events ব্যবহার করে অন্য অ্যাপ্লিকেশন থেকে সার্ভিস এবং ইনফরমেশন অনুরোধ করতে বা সার্ভিস এবং ইনফরমেশন প্রদান করতে 그러한 অনুরোধের রেসপন্সে। গ্রাফিক্যাল ইন্টারফেস প্রেজেন্ট করে এমন সকল অ্যাপ্লিকেশন Human Interface Toolbox (Carbon applications) বা Cocoa application framework-এর মাধ্যমে ব্যবহারকারীর কাছে উচিত হলে কিছু ইভেন্টে রেসপন্ড করতে পারে। এগুলো شامل: open application (অথবা launch), reopen, open documents, print documents, এবং quit events।
কিছু Apple Event Manager ফাংশন থ্রেড-সেফ হিসেবে মার্ক করা আছে—অন্যান্য সকল ফাংশনের জন্য, আপনাকে শুধু মেইন থ্রেডে সেগুলো কল করা উচিত।
Apple Event Manager-এর সুবিধা নেওয়া টেকনোলজির ওভারভিউর জন্য, AppleScript Overview দেখুন।
Apple events নিয়ে কাজ করার তথ্যের জন্য, Mac OS দ্বারা পাঠানো ইভেন্টসহ, Responding to Apple Events in Apple Events Programming Guide দেখুন। Apple events-এ ব্যবহৃত אינডিভিডুয়াল ফোর-ক্যারাক্টার কোডের তথ্যের জন্য, AppleScript Terminology and Apple Event Codes Reference দেখুন।
Apple Event Manager AE framework দ্বারা ইমপ্লিমেন্টেড, Core Services framework-এর একটি সাবফ্রেমওয়ার্ক। আপনি সরাসরি AE framework-এ লিংক করেন না—বরং আপনি সাধারণত Carbon framework-এ লিংক করেন, যেটিতে এটি অন্তর্ভুক্ত। কিছু AppleEvent ডেফিনিশন শুধু Carbon framework ক্লায়েন্টদের জন্য উপলব্ধ, যেটিতে উদাহরণস্বরূপ HIToolbox framework-এ AEInteraction.h থাকে।
AE framework উইন্ডো সার্ভারের সাথে কানেকশন ফোর্স করে না। এটি ডেমন এবং স্টার্টআপ আইটেমগুলোক Apple events নিয়ে কাজ করতে দেয় লগ আউট জুড়ে।
Mac-এ Remote Apple Events অ্যালো করা
আপনার Mac অন্য কম্পিউটারে চলমান অ্যাপ থেকে Apple events অ্যাক্সেপ্ট করতে পারে। একটি Apple event হলো একটি Mac-এ করা টাস্ক, যেমন "এই ডকুমেন্ট খুলো" বা "প্রিন্ট করো"।
Remote Apple events অন থাকলে, অন্য Mac-এ চলমান একটি AppleScript প্রোগ্রাম আপনার Mac-এর সাথে ইন্টারঅ্যাক্ট করতে পারে। উদাহরণস্বরূপ, প্রোগ্রামটি আপনার Mac-এ অবস্থিত একটি ডকুমেন্ট খুলে এবং প্রিন্ট করতে পারে।
- আপনার Mac-এ, Apple menu > System Preferences বেছে নিন, তারপর Sharing-এ ক্লিক করুন।
- Remote Apple Events চেকবক্স সিলেক্ট করুন।
- কারা ইভেন্ট পাঠাতে পারে সেটি স্পেসিফাই করুন:
- All users: আপনার কম্পিউটারের যেকোনো ইউজার এবং আপনার নেটওয়ার্কের কেউই ইভেন্ট পাঠাতে পারে।
- Only these users: Add বাটনে ক্লিক করুন, তারপর কারা ইভেন্ট পাঠাতে পারে সেটি বেছে নিন। Users & Groups আপনার কম্পিউটারের সকল ইউজারকে অন্তর্ভুক্ত করে। Network Users and Network Groups আপনার নেটওয়ার্কের মানুষকে অন্তর্ভুক্ত করে।
Mac-এ AE Server এনাবল করা
আপনার নেটওয়ার্কের অন্য একটি Mac-কে ইনস্ট্রাক্ট করতে, আপনাকে AppleScripts এবং Remote Apple Server দুটোই দরকার। AppleScripts-এ থাকে আপনি যা অন্য Mac-এ করাতে চান তার ইনস্ট্রাকশন এবং AE Server ইন্সট্রাকশন অথরাইজ এবং এক্সিকিউট করে। আপনি অন্য Mac-কে শাট ডাউন করতে, গান বাজাতে, ওয়েবসাইট ভিজিট করতে, বা অ্যালার্ট ডিসপ্লে করতে বলতে পারেন এই ফিচারগুলো ব্যবহার করে।
আপনার Mac-এ Remote Apple Server বা AE Server এনাবল করতে, এই ইনস্ট্রাকশন ফলো করুন:
- আপনার Mac বা যে Mac রিমোট কন্ট্রোল করতে চান, সেটিতে Apple menu-এ ক্লিক করুন, তারপর System Preferences বেছে নিন।
- Sharing-এ ক্লিক করুন, তারপর Remote Apple Events checkbox টিক করুন।
- কারা ইভেন্ট পাঠাতে পারে সেটি স্পেসিফাই করুন:
- All users: আপনার কম্পিউটারের যেকোনো ইউজার এবং আপনার নেটওয়ার্কের কেউই আপনার Mac-এ ইভেন্ট পাঠাতে পারে।
- Only these users: Add (+) বাটনে ক্লিক করুন, তারপর কারা ইভেন্ট পাঠাতে পারে সেটি বেছে নিন। Users & Groups আপনার কম্পিউটারের সকল ইউজারকে বোঝায়। Network Users and Network Groups আপনার নেটওয়ার্কের মানুষকে বোঝায়।
এই ধাপগুলো অনুসরণ করলে, আপনার স্পেসিফাইড ব্যবহারকারীরা এখন আপনার Mac-এ AppleScripts পাঠাতে পারবে। আপনাকে এখনও সেই Mac-এর অ্যাডমিন ইউজারনেম এবং পাসওয়ার্ড দিয়ে লগইন করতে হবে AppleScript অথেন্টিকেট করার জন্য।
AppleScript চালানোর আগে, আপনার কম্পিউটার ক্লিন আপ করুন Mac ক্লিনিং সফটওয়্যার ব্যবহার করে নিশ্চিত করতে যে আপনার কম্পিউটার সেরা পারফরম্যান্স দিচ্ছে।
সকল শেয়ারিং ফিচারের মত, আপনার নিশ্চিত হওয়া পর্যন্ত Remote Apple Events এনাবল করা উচিত যে আপনাকে এটি দরকার। একটি ম্যালিশিয়াস থার্ড-পার্টি যাকে আপনার Mac-এর IP ঠিকানা, পাশাপাশি আপনার ইউজারনেম এবং পাসওয়ার্ড জানা থাকলে, সে আপনার Mac থেকে ইনফরমেশন চুরি করতে পারে, আপনার ডিভাইস হাইজ্যাক করতে পারে, বা আপনার সেশন ওভাররাইড করতে পারে। আপনার অন্য Mac-এ ইনস্ট্রাকশন পাঠাতে দরকার না হলে, এই ফিচার ডিজেবল রাখা সেরা যাতে সকল অনাবশ্যক আক্রমণের পথ বন্ধ থাকে।
Remote Apple Server ডিজেবল করতে, আপনি হয় Sharing মেনু ব্যবহার করে অফ করুন (Apple menu > System Preferences > Sharing > Remote Apple Events) অথবা Terminal ব্যবহার করে এই কমান্ড টাইপ করুন:
/usr/bin/sudo /bin/launchctl disable system/com.apple.AEServer
কম্পিউটার রিস্টার্ট করুন পরিবর্তনগুলো ইফেক্ট নেওয়ার জন্য। আপনার AE Server এখন ডিজেবল হওয়া উচিত।
AppleScripts লেখা
Remote Apple Server এনাবল করা কেবল ইকুয়েশনের এক অংশ। এরপর, আপনাকে AppleScripts লিখতে হবে যেসব ইনস্ট্রাকশন থাকে আপনি আপনার Mac কী করবেন। এর জন্য, আপনাকে AppleScript Editor বা Script Editor ব্যবহার করতে হবে Finder > Utilities অধীনে। একবার এডিটর খুললে, আপনি File > New ক্লিক করে স্ক্রিপ্ট লিখতে শুরু করতে পারেন।
আপনি ট্রাই করতে পারেন কিছু স্ক্রিপ্ট:
- Mac স্লিপ মোডে পাঠান
tell application "Finder" of machine "eppc://IP Address of the target Mac″
sleep
end tell
- iTunes খুলুন
tell application "iTunes" of machine "eppc://IP Address of the target Mac"
play
end tell
- iTunes কুইট করুন
tell application "iTunes" of machine "eppc://IP Address of the target Mac"
stop
end tell
- Safari লঞ্চ করুন
tell application "Safari" of machine "eppc://IP Address of the target Mac"
activate
end tell
- Safari কুইট করুন
tell application "Safari" of machine "eppc://IP Address of the target Mac"
quit
end tell
এই AppleScripts তৈরি করলে, আপনি সেগুলো আপনার Mac-এ সেভ করে রাখতে পারেন এবং দরকার হলে চালাতে পারেন। AppleScript এক্সিকিউট করার জন্য আপনাকে টার্গেট Mac-এর ইউজারনেম এবং পাসওয়ার্ড দরকার হবে।