نقل قول: اعترافات یک Qt کار!!
*** ابتدا عرض کنم که روی سخنم با کسانی هست که این تاپیک را مطالعه می کنند، نه لزوما نویسنده.***
اشکال اینجاست که افراد نباید چنین دیدی نسبت به Qt یا کلا کتابخانه ها و framework های cross-platform داشته باشند. یعنی از نظرم من کلا تمام فرضیات شما از ابتدا در مورد Qt غلط بوده است.
Qt یک کتابخانه GUI هست که این امکان را فراهم می کند که شما بخش GUI برنامه خود را با یک کد یکپارچه در سایر سیستم عامل ها پیاده سازی کنید. هیچ گاه قرار نبود همه امکانات و توابع و API های native یک سیستم عامل در آن قرار گیرد، بلکه هدف بخش GUI و موارد مشترک در سیستم عامل ها بوده است. و کارهایی که باید برایش ماه ها وقت صرف می کردید را بتوایند طی چند روز انجام دهید، اما نه اینکه کلا با دانستن Qt نیاز به توابع سطح پایین سیستم عامل ها ندارید!
اگر در جایی گفته شود "Qt کارها را بسیار راحت می کند و می توانید به راحتی برنامه برای 3 سیستم عامل بنویسید" به این معنی نیست که واقعا راحت هست، بلکه این راحت تر ، در مقایسه با دشواری های بسیار زیاد در حالتی هست که باید خودتان تک تک خطوط برنامه را تغییر می دادید ولی با Qt دیگر از بخش GUI راحت خواهید شد و بسیاری موارد دیگر (XML ، پایگاه داده و ...)
اگر می بینید بسیاری از امکانات دیگر جدا از GUI در قالب کلاس های Qt عرضه شده است (فرضا فردا Cryptography هم افزوده شود)، فقط برای این هست که به ندرت و طی هر ویرایش، سایر حوزه های بی ارتباط با GUI را نیز بگیرد و روز به روز این کتابخانه کامل تر شود و فراتر از GUI شود.
کلا هر کسی که قرار هست سراغ Qt برود، باید دانش کافی در API های هر سیستم عامل نیز داشته باشد و در جای مورد نیاز کدهای جداگانه خود برای هر سیستم عامل را بنویسد.
حتی در ویندوز کسی که با MFC کار می کند، باید API های ویندوز را بشناسد و در بسیاری از موارد باید مستقیم از API های استفاده کند، چون همه این امکانات در MFC پیاده سازی نشده است.
نقل قول: اعترافات یک Qt کار!!
البته کیوت انصافا خیلی فراتر از یک کتابخانهء رابط گرافیکی هست و یک فریمورک اپلیکیشن نویسی بحساب میاد. یعنی این دقیقا در رفرنسهای رسمی بهش اطلاق شده و اون رو فقط یک کتابخانه یا فریمورک GUI ذکر نکرده بلکه گفته فریمورک اپلیکیشن نویسی و حتی فراتر (چون انواع دیگری از برنامه هم میشه باهاش نوشت و امکاناتی در زمینه های دیگر هم پیشبینی شده).
http://en.wikipedia.org/wiki/Qt
در لینک بالا هم بعنوان Application framework معرفی شده.
بنابراین بنظر من چنتا امکانات مهم متداول در اپلیکیشن نویسی رو اگر بهش اضافه کنن خیلی عالی و مفیده.
وقتی ما از کتابخانه های دیگه استفاده میکنیم به مشکلات زیادی برمیخوریم. مثلا درمورد کیوت اگر بخواید از کتابخانه های ویندوز استفاده کنید اول باید کل کیوت رو با ویژوال سی++ از اول کامپایل کنید که خود اینکار میتونه مهارت و دانش فنی لازم رو بخواد و بعید نیست با مشکلاتی بربخوره. از طرف دیگه تمیزی و انسجام و هماهنگی ساختار در کد تاحدودی که میتونه قابل توجه باشه بهم میخوره.
تمام اینا عوامل منفی محسوب میشن. هرکسی مثل من سمج نیست چندین و چندبار ساعتها کامپایل کنه. من گاهی شبها هم که میخوابیدم سیستم رو میذاشتم تا کامپایل کنه!! تا بالاخره تونستم راه کامپایل phonon رو پیدا کنم و ضمنا یک پکیج بهینه و خودکار براش بسازم. تازه تمام اینا کار فنی و تحقیق زیادی میخواد.
از طرف دیگه اگر من کتابخانه های بومی و کاملتری رو بلد باشم دیگه چرا بیام با Qt برنامه بنویسم؟ اگر بخواد برنامم ترکیبی از یک کتابخانهء مستقل از پلتفرم و کتابخانه های وابسته به پلتفرم باشه دیگه مزایای مستقل از پلتفرم بودن هم کمتر میشه عملا. و خیلی مسائل جانبی دیگه مثل اینکه اگر با کتابخانه های بومی کار کنم برنامم قابلیت کار تیمی و ارائهء بیشتری در بازار کار داره و غیره.
البته در برنامه هایی که نیازهای ویژه و وابسته به پلتفرم ندارن میشه از این فریمورک به شکل عالی بهره مند شد و هم خوشدسته و هم مستقل از پلتفرم.
نقل قول: اعترافات یک Qt کار!!
پخش mp3، اتصال به وبكم در بقيه فريم ورك ها هم نيست. اينكه امكاني جز يك چهار چوب نيست دال بر ضعف يك فرم ورك نيست. يك چهار چوب همانگونه كه از نامش پيداست در چهارچوب خاصي امكاناتي را عرضه مي كند.
نقل قول:
از طرف دیگه اگر من کتابخانه های بومی و کاملتری رو بلد باشم دیگه چرا بیام با Qt برنامه بنویسم؟
اگر قصد داشته باشيد براي سكوي خاصي برنامه نويسي كنيد و احياناً اگر كتابخانه خوشدست تري سراغ داريد مي توانيد با آن برنامه نويسي كنيد اما در مورد مقاصد و اهداف Qt مانند چند سكويي و خروجي بومي هر سيستم عامل كمتر كتابخانه اي مانند آن وجود دارد و در بين موجودات نيز Qt كاملترين و خوشدست ترين آنهاست.
اما كتابخانه هاي بومي مانند MFC يا حتي توابع سطح پايين API نيز نياز هاي شما را به گونه اي كه انتظار داريد بر آورده نخواهد كرد. نبايد انتضار داشته باشيد تمام آنچه كه از آن استفاده خواهيد كرد در كتابخانه مورد استفاده شما موجود باشد.
در پست اول فقط در مورد كمبود ها صحبت كرديد كه اين ايراد را بر تمام كتابخانه ها و فريم ورك ها مي توان گرفت.
نقل قول: اعترافات یک Qt کار!!
نقل قول:
اولین محدودیت هایی که بهش برخوردم بطور مثال کمبود پخش مالتی مدیا مثل mp3 و ویدئو بود.
دوستان مگه VLC PLAYER که روی ۳ تا سیستم عامل اجرا میشه باQT نوشته نشده؟ خوب فکر میکنم بخوبی میتونه صدا و تصویر رو پخش کنه.
با QT پروژه های موفقی نوشته شده که حتما همه شما در جریان اونها هستین.
مثلا خیلی برای من جالب بود که virtual box که توسط خود کمپانی sunارایه میشه توسط QTنوشته شده و از صرفا از javaاستفاده نشده .
در ضمن من به یه کتابخانه بر خوردم که فکر میکنم برای شما جالب باشه امتحان کردنش. برای منظور multimedia استفاده میشه. SFML
نقل قول: اعترافات یک Qt کار!!
نقل قول:
نوشته شده توسط
saleh.hi.62
دوستان مگه VLC PLAYER که روی ۳ تا سیستم عامل اجرا میشه باQT نوشته نشده؟ خوب فکر میکنم بخوبی میتونه صدا و تصویر رو پخش کنه.
مواردی که مد نظر شما هست را با ++C می نویسند نه Qt
Maya را با ++C نوشتند و در آن از DirectX و OpenGL استفاده کردند و Qt را برای رابط کاربری استفاده کردند.
VCL هم همین طور هست. کلا برنامه های پخش صوت و تصویر فراتر از استفاده از توابع پخش صوت و تصویر هستند، آن ها اکثرا خودشان نحوه نمایش را پیاده سازی می کنند یا از کتابخانه های open source دیگر استفاده می کنند.
ضمنا به یاد داشته باشید هر فرمتی برای خودش حق نشر دارد، مثلا هر کسی اجازه ندارد رایگان فرمت پخش mp3 را در برنامه خود قرار دهد، این کار غیر قانونی هست. یا باید خود برنامه پخش کننده کلا رایگان باشد (حیت در یک بازی و ..)، یا اینکه با پرداخت چند هزار دلار لیسانس آن را بگیرد. عبارت mp3 is patented را جستجو کنید.
در کل باید همه این طرز تفکر را کنار بگذارند، که با یک کتابخانه همه برنامه ها نوشته می شود، شما باید از ++C (زبان برنامه نویسی) استفاده کنید.
Qt / .Net / MFC / Wxwidgets / ... این ها همگی کتابخانه هایی هستند که باید برای آن ها با خود زبان برنامه نویسی کد بنویسید، اگر cross-platform هست از ++C استفاده می کنیم، چون در سایر سیستم عامل ها نیز وجود دارد و به همین خاطر می گویند زبان قابل حمل.
نقل قول: اعترافات یک Qt کار!!
البته شركتها و برنامه نويسان حرفه اي كه روي پروژه هاي بزرگ و خيلي وقتها تيمي كار ميكنن مشكل زيادي ندارن چون پروژه هاي اونا خواه و ناخواه از اجزاء و كتابخانه هاي مختلفي استفاده ميكنه و ظرفيت مالي و فني و منابع انساني مورد نياز درمورد كار اونها وجود داره يا بهرصورت بايد و تامين ميشه.
همين Qt خودش از اجزاي مختلفي ساخته شده. مثلا Phonon يك فريمورك مالتي مدياي سطح پايين هست تاجايي كه ميدونم و يك پروژهء بازمتن كه در كيوت هم استفاده شده. همينطور مثلا WebKit كه يك پردازشگر و رندر كنندهء HTML و جاوااسكريپت و اينهاست؛ البته شايد موتور جاوااسكريپت هم خودش جدا باشه و من نميدونم. همينطور خيلي اجزاء ديگه بنظرم (يه نگاهي به دايركتوري src\3rdparty كيوت خودتون بكنيد - بنظرم هركدوم از اون دايركتوري هايي كه ميبينيد حاصل يك پروژهء بازمتن مستقل از كيوت هستن كه در كيوت ازشون استفاده شده).
فقط خواستم بگم كه اكثر برنامه ها و فريمورك هاي بزرگ بازمتن خودشون از اجزاي مختلف و پروژه هاي مختلف تشكيل شدن. اما كار كنار هم آوردن و تطبيق و كامپايل اينها با هم كار هركسي نيست و معمولا بدون موانع و مشكلات اوليه هم پيش نميره.
براي يك برنامه نويس اپليكيشن عادي يادگيري و انجام مشابه اين كارها ميتونه خيلي سخت و هزينه بر باشه.
بنظر من اگر چند امكان ديگه رو توي خود كيوت بذارن واقعا قدرتمندتر ميشه.
البته همين الانش هم اصلا چيز كمي نيست و امكانات گسترده اي داره و استايل و كدنويسي خيلي خوبي كه دركل ميشه بسياري اپليكيشن ها رو تماما با كيوت و بدون استفاده از كتابخانه هاي ديگري نوشت؛ ولي خب من نياز و انتظار بيشتري داشتم و فكر ميكنم اين نيازها و انتظارات طبيعي و متداول باشه.
كيوت خيلي امكانات داره. خيلي فراتر از يك كتابخانهء رابط گرافيكي هست. همونطور كه اسمش روشه يك فريمورك اپليكيشن نويسي هست (يعني خيلي از برنامه هاي دسكتاپ مورد نياز در زمينه هاي مختلف رو ميشه باهاش ساخت).
نقل قول: اعترافات یک Qt کار!!
نقل قول:
نوشته شده توسط
saleh.hi.62
دوستان مگه VLC PLAYER که روی ۳ تا سیستم عامل اجرا میشه باQT نوشته نشده؟ خوب فکر میکنم بخوبی میتونه صدا و تصویر رو پخش کنه.
من نميدونم VLC از چه روش و كتابخانه ها و كدكهايي استفاده ميكنه.
اما بهرحال الان كيوت مشكل مهمي در زمينهء پخش فايلهاي مالتي مدياي متداول نداره و اين قابليت سرخود روش هست و نيازي نيست شما يك كتابخانهء ديگه استفاده كنيد و با روش و استايل ديگري كد بنويسيد.
اون مشكلي كه من بهش اشاره كردم مربوط به نسخه هاي قديمي تر بود و منظورم از بيانش نشون دادن محدوديت هاي عملي و مثلا مشكلاتي مربوط به عدم رسمي بودن و بومي بودن كتابخانه ها بود.
هرچند الانش هم ويدئوي پخش شده با Qt روي سيستم من اشكال داره (اما VLC اين مشكل رو نداره)؛ اما اين مشكل رو روي سيستمهاي ديگه اي كه تست كردم نداشت خوشبختانه. احتمالا سيستم من چون قديمي هست (پنتيوم 3 با گرافيك آنبورد) و سخت افزار خاصي داره كه كيوت/Phonon باهاش مشكل داره يا بعلت كمبود سرعت و غيره هست، اما من اين مشكل رو مثلا با مدياپلير خود ويندوز ندارم.
نقل قول: اعترافات یک Qt کار!!
نقل قول:
نوشته شده توسط
eshpilen
احتمالا سيستم من چون قديمي هست (پنتيوم 3 با گرافيك آنبورد) و سخت افزار خاصي داره كه كيوت/Phonon باهاش مشكل داره يا بعلت كمبود سرعت و غيره هست، اما من اين مشكل رو مثلا با مدياپلير خود ويندوز ندارم.
Phonon در ویندوز از DirectShow استفاده می کند و نیازمند DirectX نسخه 9 به بالا یا OpenGl هست، که شما در هنگام کامپایل Qt تعریف می کنید. البته احتمالا بتوانید بدون نیاز به DirectX نیز در کامپیوتر فرد اجرا کنید یعنی به جای hardware به شکل software اجرا شود که البته سرعت اجرا بسیار پایین می آید. (در جایی که کارت گرافیک وجود ندارد، یا onboard قدیمی هست)
در لینوکس از GStreamer و در Mac OS X از QuickTime نسخه 7 به بالا استفاده می کند.
پس برنامه Qt هنگام setup باید کتابحانه های موارد فوق را در سیستم فرد نصب کند، یا اینکه به فرد بگویید خودش آن ها را نصب کند.
نقل قول: اعترافات یک Qt کار!!
خيلي ممنون از توجه و راهنمايي شما.
من سيستم و برنامه رو دوباره بررسي كردم ولي DirectX نسخه 9c از قبل روي سيستم نصب هست.
بهرصورت ممكنه چون سخت افزار من قديمي هست DirectX نسخه 9 عملا نميتونه از امكانات مورد نيازش استفاده كنه.
1 ضمیمه
نقل قول: اعترافات یک Qt کار!!
راستي اينم تصوير از چگونگي خرابي ويدئو.
البته همونطور كه گفتم اين اشكال فقط روي سيستم خودم ديده ميشه.
مشخصات سيستمم:
PIII 800MHz
OnBoard Graphics SIS630 chipset
Windows XP SP2
DirectX 9c