সময়সীমার একটি অ্যাপ্লিকেশন সক্রিয় যে সেবা বাগ


2

আমি সেবা সঙ্গে একটি খুব অদ্ভুত বাগ আবিষ্কৃত হয়েছে।

এই আচরণ সাক্ষী করার জন্য, নিম্নলিখিত কাজ করুন:

  • সাফারি আপনার ডক মধ্যে যে নিশ্চিত করুন।

  • অটোমেটর খুলুন। একটি নতুন সেবা তৈরি করুন।

  • "কোনও অ্যাপ্লিকেশানে" কোনও ইনপুট না পাওয়ার জন্য পরিষেবাটি সেট করুন।

  • একটি "রান অ্যাপলস্ক্রিপ্ট" কর্ম সন্নিবেশ করান।

  • কর্মের মধ্যে নিম্নলিখিত পেস্ট করুন:

    on run {input, parameters}
    
        delay 5
        display dialog "Hello"      
        tell application "Safari" to activate
    
        return input
    end run
    
  • সেবা সংরক্ষণ করুন।

  • সেবা বন্ধ করুন।

  • সেবা পুনরায় খুলুন।

  • অটোমেটর আপনাকে একটি ডায়ালগটি উপস্থাপন করতে বলছেন, "আপনি কি" পরিষেবা নাম "পরিষেবাটি ইনস্টল করতে চান?" ক্লিক করুন "ইনস্টল করুন।"

  • যখন "ইনস্টলেশন সম্পূর্ণ" ডায়ালগটি দেওয়া হয়, "সম্পন্ন" ক্লিক করুন।

এখন, সেবা চালান। এটি করার জন্য, পর্দার উপরের বাম দিকের কোণায় (মেনু বারের দ্বিতীয় আইটেম) বর্তমান-অ্যাপ্লিকেশন শিরোনামটিতে ক্লিক করুন। তারপর পরিষেবা শিরোনাম ক্লিক করুন।

আপনি লক্ষ্য করবেন যে সাফারি অবিলম্বে খোলা থাকবে (ডক এর লোগোর নীচে কালো বিন্দু দ্বারা প্রমাণিত হবে)। সাফারি খুলবে 5 সেকেন্ড বিলম্বের আগে এবং "হ্যালো" ডায়লগটি প্রদর্শিত হওয়ার আগে।

স্থাপন করা activate একটি subroutine মধ্যে বিবৃতি সমস্যা ঠিক করে না।

কেউ এই একটি বাগ নিশ্চিত করতে পারেন? আমি নিশ্চিত যে এটি পরিষেবা বৈশিষ্ট্যগুলির সাথে একটি বাগ কারণ যখন আপনি অটোমেটরের মধ্যে থেকে পরিষেবাটি চালান (অটোমেটর উইন্ডোটির উপরের ডানদিকে অবস্থিত "প্লে" বাটনে ক্লিক করে), কোডটি সঠিকভাবে চালায়।

যদি এটি একটি বাগ হয়, তবে কারো কি কার্যকারিতা রয়েছে যাতে পূর্ববর্তী কোডটি চালানোর আগে অ্যাপ্লিকেশনটি আসলে খোলা হয় না?


আমার ম্যাকবুক প্রো চলছে ওএস এক্স এল ক্যাপিটান, 10.11.6।


বাগ হয়তো অদ্ভুত আচরণের আরেকটি অংশ সম্পর্কিত হতে পারে যা আমি লক্ষ্য করেছি:

  • Safari.app এবং Automator.app থেকে বের হয়ে গেলে, তারা চলছে।

  • ফাইন্ডারটিতে কম্পিউটারের পরিষেবাদি সংরক্ষণ করা হয় এমন ফোল্ডারটি খুলুন (/ ব্যবহারকারী / আমার / লাইব্রেরি / পরিষেবাদি /)।

  • পরিষেবা ফাইলটি ডান-ক্লিক করুন এবং অটোমেটরের সাথে ফাইলটি খুলুন।

আপনি লক্ষ্য করবেন যে অটোমেটর সহ। ওয়ার্কফ্লো ফাইল খোলার জন্য সাফারি সক্রিয় হবে। এটা যে করা উচিত নয়।


আমি ওএস এক্স এল ক্যাপিটান 10.11.6 এর অধীনে বর্ণিত বিষয়গুলির প্রতিলিপি করতে পারি।
user3439894

@343439894 চেক করার জন্য ধন্যবাদ! আপনি কি কোনো workarounds মনে করতে পারেন?
rubik's sphere

বিভিন্ন পরিস্থিতিতে পরীক্ষা করার পরে আমি খুঁজে পেয়েছি এমন একমাত্র কার্যকারিতা হল Safari কমান্ডগুলিকে একটিতে মোড়ানো do shell script কমান্ড, যেমন do shell script "osascript -e 'tell application \"Safari\" to activate'"। সঙ্গে যে নোট osascript, মাল্টি-ল বিকল্পগুলি একটি মাল্টি-লাইন স্ক্রিপ্ট তৈরি করতে দেওয়া যেতে পারে।
user3439894

যে মহান কাজ করে! যদি আপনি উত্তর হিসাবে যে পোস্ট, আমি এটা গ্রহণ করব। এছাড়াও, যদি আপনি কিছু মনে করেন না, তবে আপনি কি সেই চূড়ান্ত বাক্যটিকে একটু বেশি প্রসারিত করতে পারেন? আমি সত্যিই এটা মানে কি বুঝতে না।
rubik's sphere

আমি লক্ষ্য করেছি যে কেবলমাত্র একটি অ্যাপলস্ক্রিপ্ট কম্পাইল করা আছে tell application "Whatever" to ... যে অ্যাপ্লিকেশন সক্রিয় হবে। যে সম্ভবত অন্তর্নিহিত কারণ।
BallpointBen

উত্তর:


2

কয়েকটি ভিন্ন পরিস্থিতিতে পরীক্ষা করার পরে আমি খুঁজে পেয়েছি শুধুমাত্র কাজকর্ম Safari মোড়ানো হয় কমান্ড ইতোমধ্যে do shell script হুকুম , যেমন do shell script "osascript -e 'tell application \"Safari\" to activate'"। সঙ্গে যে নোট osascript, একাধিক −e অপশন একটি মাল্টি লাইন স্ক্রিপ্ট নির্মাণ করা যেতে পারে।

ম্যানুয়াল পাতা থেকে osascript:

-e বিবৃতি

একটি স্ক্রিপ্ট এক লাইন লিখুন। যদি -e দেওয়া হয়, osascript যুক্তি তালিকায় একটি ফাইলের নাম দেখতে হবে না। বহু -e বিকল্প একটি মাল্টি লাইন স্ক্রিপ্ট নির্মাণ করা যেতে পারে। বেশিরভাগ স্ক্রিপ্টগুলি এমন অক্ষর ব্যবহার করে যা অনেক শেল প্রোগ্রামগুলিতে বিশেষ (যেমন, অ্যাপলস্ক্রিপ্ট একক এবং দ্বিগুণ উদ্ধৃতি চিহ্ন, "(", ")", এবং "*" ব্যবহার করে), বিবৃতিটি সঠিকভাবে উদ্ধৃত করা হবে এবং এটি পাওয়ার জন্য পালিয়ে যেতে হবে শেল অতীত অতীত।

উদাহরণ অ্যাপলস্ক্রিপ্ট কোড :

tell application "Safari"
    activate
    make new document in front
    set URL of front document to "http://apple.stackexchange.com/questions/271133/services-bug-that-prematurely-activates-an-application"
end tell

অ্যাপলস্ক্রিপ্টের একটি উদাহরণ কোড উপর, একটি হিসাবে লিখিত do shell script হুকুম ব্যবহার osascript সঙ্গে -e পছন্দ , প্রয়োজনীয় হিসাবে.

do shell script "osascript -e 'tell application \"Safari\"' -e 'activate' -e 'make new document in front' -e 'set URL of front document to \"http://apple.stackexchange.com/questions/271133/services-bug-that-prematurely-activates-an-application\"' -e 'end tell'"

আপনি দেখতে পারেন, অ্যাপলস্ক্রিপ্ট প্রতিটি লাইন কোড স্বাভাবিক থেকে tell ব্লক বিবৃতি তার নিজস্ব -e পছন্দ , এবং জন্য ম্যানুয়াল পৃষ্ঠা হিসাবে উল্লিখিত osascript সঙ্গে -e পছন্দ , একটি ব্যাকস্ল্যাশ সঙ্গে escaping জন্য প্রয়োজনীয় হিসাবে সম্পন্ন করা হয়েছে কোড থেকে সঙ্কলন করা চালানোর আগে সঠিকভাবে।

অন্য কথায়, এই স্বাভাবিক চালু tell ব্লক বিবৃতি এবং তার অন্তর্ভুক্ত কমান্ড এক লাইন থেকে do shell script হুকুম তাই অপারেটিং সিস্টেম ব্যবহার ক্ষেত্রে দৃশ্যকল্প ক্ষেত্রে দৃশ্যমান বাগ circumvent হিসাবে।

উল্লেখ্য, সঠিক অ্যাপ্লিকেশনটি প্রতিস্থাপন করে একই বাগ দ্বারা ট্রিগার অন্যান্য অ্যাপ্লিকেশনগুলির সাথে আপনি একই রকম করতে সক্ষম হবেন নাম (এবং কমান্ড ) যেমন দরকার.


1
একটি উদাহরণ প্রদান এবং ব্যাখ্যা করার জন্য ধন্যবাদ! আমি এখন ধারণা বুঝতে।
rubik's sphere
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.