من از اول مهرماه ۱۳۸۵ تا پایان اردیبهشت ۱۳۹۰ در شرکت هدی سیستم کار میکردم. این نوشته -که بخشی از نگارش مفصلتر رزومهٔ کاری من بود- دربردارندهٔ خلاصهای از کارنامهٔ من در آن شرکت است که به عنوان یکی از آخرین یادگاریهای سال ۹۰ در اینجا نگهش میدارم. با توجه به آن که خروجی نوع کار من نرمافزارهای کامپیوتری است؛ با گذشت زمان و تغییرات سریع سیستم عاملها و جایگزینی نرمافزارها شاید در آینده حتی اجرای این برنامهها دیگر به راحتی امکانپذیر نباشد. حفظ چنین فهرستهایی میتواند برای آن روزها، محض تاریخچهٔ زندگی یا یادگاری مفید باشد.
LightPM |
کاربری |
سیستم مدیریت پروژهٔ داخلی برای پروژههای توسعهٔ نرمافزار بر اساس مدل XP |
زبان برنامهنویسی |
Delphi 7.0 |
پایگاه دادهها |
Microsoft SQL Server 2000 به بالا (به شکل مخلوط از BDE و ADO جهت کار با پایگاه دادهها استفاده شده) |
کمپوننتهای استفاده شده |
DevExpress، … |
مشارکتها |
اسکلت اولیهٔ برنامه توسط همکار دیگری طراحی شده بود. |
قابلیتها |
|
نظر کلی |
گودال خاکبازی! از لحاظ برنامهنویسی باعث شرمندگیست اما خوب، اولین کار جدی دلفی من فکر میکنم همین بوده باشد، برنامهای که یکی دو سال به طور داخلی استفاده شد و بدون جایگزین به دلیل عدم جدیت شرکت در استفاده از آن کنار گذاشته شد. فکر میکنم ارزشمندترین چیزی که از من در آن باقی مانده باشد دادههایی است که وارد پایگاه دادههای آن به عنوان یک کاربر کرده باشم که البته دسترسی به آنها ندارم و احتمالاً تا به حال نابود شده است. |
Globalizer |
کاربری |
اضافه کردن پشتیبانی از زبانهای مختلف برای رابط کاربری پروژههای موجود دلفی ۷ |
زبان برنامهنویسی |
Delphi 7.0 |
کمپوننتهای استفاده شده |
DevExpress و همینطور یک Syntax Highlighter رایگان و بازمتن که نامش را به خاطر ندارم و … |
مشارکتها |
یک کد اولیهٔ ده یا بیست خطی که در یک سورس دلفی دنبال رشتهها میگشت و آنها را پیدا میکرد به من داده شد تا بر اساس آن برنامهای بنویسم که یک پروژهٔ دلفی ۷ را بگیرد و پشتیبانی از زبانهای مختلف را به رابط کاربری آن اضافه کند! (جریان لباسی که برای یک دکمه دوخته میشود با ابعاد میکروسکوپی برای دکمه البته 😉 ) |
قابلیتها |
|
نظر کلی |
برای خودم (در زمان خودش، به عنوان یک برنامهنویس آماتور دلفی) باعث افتخار است، این برنامه برای استفادهٔ داخلی ساخته شد و یکی دو پروژهٔ موجود با استفاده از آن ترجمه شد (ترجمهٔ پروژههای بسیار بزرگ دلفی در ظرف یک یا چند ساعت میتوانست انجام شود)، اما نهایتاً بدون جایگزین کنار گذاشته شد و علیرغم آن که به نظرم در دوران رواج دلفی ۷ میتوانست مشتریهای خاص خودش را داشته باشد هیچگاه روی فروش آن حساب نشد. تصور میکنم تعداد افراد کمی در شرکت از وجود چنین برنامهای آگاه باشند و بدانند این دارایی چه ارزشی داشت/دارد. |
FormDesigner |
کاربری |
طراحی فرمهای OMR |
زبان برنامهنویسی |
MFC/Visual C++ (6.0, 2003, 2005) |
کتابخانههای استفاده شده |
|
منبع اولیه |
|
قابلیتهای اضافه شده |
|
نظر کلی |
بدنهٔ اصلی این برنامه از یک پروژهٔ بازمتن روی اینترنت برداشته شده (اینجا) ولی کار زیادی روی آن کردهام. برای آن طرحهایی داشتم (و ارائه کردم) تا آن را در قالب یک سیستم آزمون (از طراحی فرم پاسخنامه، چاپ، … تا اسکن پاسخها، …، صدور کارنامه) به بازار ارائه دهیم که پس از ارائهٔ نمونهٔ اولیهٔ کاملاً قابل استفاده، به این نتیجه رسیدند که قابلیت تجاریسازی ندارد. در حال حاضر بخشی از بستهٔ نرمافزاری OMR Studio است (لینک) و فکر میکنم هیچگاه به مشتریان ایرانی ارائه نشده (به جهت مشکلاتی که میتواند برای تجارت طراحی و چاپ فرم شرکت ایجاد کند)، نسخهٔ فارسی آن -علیرغم زحمت زیادی که جهت سازگار کردن برنامهٔ اولیه با یونیکد کشیده شده- هیچگاه از شرکت بیرون نرفته است. |
نویسهخوان آراکس (AraxPage) |
کاربری |
نرمافزار رومیزی OCR فارسی |
زبانهای برنامهنویسی استفاده شده توسط من |
C# (Windows Forms. .NET 2.0) , Visual C++ |
مشارکتها |
موتور بازشناسی فارسی و تشخیص الگوی ناحیهبندی این نرمافزار توسط دوستان دیگر من در هدی سیستم تهیه شده (که بعضاً دیگر در آنجا کار نمیکنند)، پشتیبانی از خروجی RTF نیز توسط همکاران دیگر اضافه شده، باقی قابلیتها تا زمان حضور من در این شرکت توسط من (عموماً طراحی و) پیادهسازی شده، یکی از راهنماهای نرمافزار نیز توسط من نوشته و بهروز نگه داشته شده (راهنمای اولیه و مفصل حدوداً ۲۶۰ صفحهای برای نسخههای قدیمیتر، منهای فصل مقدماتی دربارهٔ شرکت البته، طرح جلد نیز توسط دوستان دیگر صورت گرفته)، البته میزان استفاده از کتابخانههای بازمتن و کدهای آماده -در کارهای من روی این نرمافزار- نیز بالاست. |
قابلیتهایی که توسط من پیادهسازی شده |
مفصل است، تصور میکنم راهنمای کاربران این نرمافزار مستند کاملی در این زمینه باشد با این توضیح که کنترلهای نمایش تصویر و امکانات ناحیهبندی (جدولبندی دستی و …)، کنترل نمایش تصاویر بندانگشتی، ویرایشگر متنی و بسیاری از کنترلهای غیراستاندارد برنامه از صفر و توسط خود من نوشته شده است و تنها کنترل تجاری استفاده شده Elegant Ribbon است که در ویرایشهای جدیدتر استفاده شده. قابلیتهایی مثل پشتیبانی از ورودی PDF، خروجی PDF، بازشناسی متون انگلیسی نیز توسط من و با استفاده از کتابخانههای بازمتن به برنامه اضافه شده و عموماً شامل تغییرات و تصحیحاتی در کد کتابخانههای معروف مورد استفاده بوده است. در طراحی رابط آن روی پشتیبانی از رابطهای چندزبانه نیز دقت و پیشبینیهای لازم شده، هر چند هیچگاه رابط غیرفارسی برای آن تهیه نشد (تجربههایی که بعداً در طراحی رابط HODA ScanDoc استفاده شد). |
نظر کلی |
یک کلمه: Bloatware! ،من برنامهنویسی C# را با این برنامه شروع کردم. با توجه به این که برای طراحی بعضی قابلیتها مجبور شدهام سراغ کتابخانهها و کدهایی بروم که از اساس چندان خوب نوشته نشدهاند این مسأله میزان درهمتنیدگی و پیچیدگی کار را افزایش داده. در کل، از نگاه بیرونی بدون توجه به کد، مزیتش این است که «کار میکند» و تمام کارهایی را که در راهنمایش ادعا شده انجام میدهد واقعاً انجام میدهد 😉 . اگر فرصت و رخصتی بود دوست داشتم آن را به صورت پیمانهای و با ساختار افزونهای (Plugin) و با استفاده از قابلیتهای جدید سکوی .NET از نو طراحی کنم. |
ARAX Server و کنترلهای کلاینت آن |
کاربری |
نرمافزار سرور OCR و همینطور تولید سند (RTF، PDF و TXT) با SDK سمت کلاینت و ابزارهای مانیتورینگ و پیکربندی تحت شبکه |
زبانهای برنامهنویسی |
C# و C++ (البته در تولید برنامههای نمونه برای برنامهنویسان از زبانهای Delphi، Viusal Basic و JavaScript نیز استفاده شده) |
مشارکتها |
غیر از موتور بازشناسی که همان موتور بازشناسی استفاده شده در نسخهٔ رومیزی است و کار جدیدی برای این مجموعه روی آن انجام نشده (به غیر از ایجاد یک DLL سمت کلاینت بدون امکان بازشناسی و فقط با قابلیت پیدا کردن خودکار الگوی ناحیهبندی که با حذف کدهای اضافی ایجاد شده) و همینطور یک کلاینت دلفی به عنوان برنامهٔ نمونه که برای آزمایش کاربری و همچنین به عنوان یک برنامهٔ نمونه تهیه شد و البته بعداً توسط خود من کامل شد باقی کارهای مرتبط با این مجموعه -که بسیار پرحجم و پرزحمت هم بوده- توسط شخص من انجام شده. |
اجزا و قابلیتها |
|
نظر کلی |
هر چند هیچگاه (تا زمان حضور من) به صورت جدی استفاده نشد (علیرغم آن که یکی دو بار، زیر بار رفت و تست شد) اما «کار میکرد». کد «آراکس رومیزی» هستهٔ اصلی برنامههای کلاینت و سرور را تشکیل میدهند و پشتیبانی شبکهٔ آنها نیز عموماً توسط خود من با استفاده از توابع .NET اضافه شده بود. طبیعت چنین سیستمی اقتضا میکند که توسط یک تیم از برنامهنویسهای حرفهای تهیه شود و تصور میکنم تنهایی من در این راه توجیه مناسبی برای نقصهای آن و همینطور سنگینی و درهمتنیدگی کد نهایی باشد. از لحاظ فناوریهای استفاده شده؛ ابتدایی است و عموماً قابلیتهای مورد نیاز از ابتدا نوشته شده است (مدیریت صفها، توابع شبکه، ذخیره و بازیابی وضعیت، لاگها و …). علیرغم پیچیدگی کارهایی که انجام میدهد کد آن باعث سرافکندگیست و فقط حجم بالا و زحمتی که بابت آن کشیدهام جای توجه دارد (با آن؛ حجم قابل توجهی از مستندات سطح برنامهنویس و همینطور نمونهکد نیز تولید کرده و تحویل دادهام). |
تصاویر و توضیحاتی راجع به این مجموعه در این نوشته آمده است، هر چند بعد از آن تغییرات زیادی در برنامهها به وجود آمد و این نوشته چندان بهروز نیست.
HODA ScanDoc |
کاربری |
نرمافزار اسکن (تصویربرداری از طریق TWAIN) |
زبانهای برنامهنویسی |
C# و C++ |
مشارکتها |
اصل برنامه و تعداد زیادی از افزونهها توسط خود من به تنهایی نوشته شدهاند، در کدنویسی بعضی افزونهها توابع کتابخانهای پردازش تصویر که سالها پیش توسط دوستان در شرکت تهیه شده بود و بعضاً توسط همکاران دیگر تغییرات اندکی در آنها اعمال شده بود صدا زده شدهاند. |
قابلیتها |
|
نظر کلی |
اگر بخواهم از بین کارهایی که در این شرکت کردهام بهترین نمونه را از لحاظ کدنویسی انتخاب کنم این یکی را انتخاب میکنم. هر چند استفاده از XML برای ذخیرهٔ وضعیت و همینطور استفاده از ساختار پوشهای فیزیکی برای ذخیرهٔ وضعیت دستهها انتخاب چندان مناسبی به نظرم نبوده، هر چند که کد کتابخانهٔ ارتباط با اسکنر (TWAIN) عملاً بسیار پرحجم شده و میشد بهتر نوشته شود و البته کد تکراری و مشکلات حافظهای نیز دارد اما در کل برای برنامهنویس متوسطی مثل من این نمونه به نظرم قابل قبول است. بر خلاف آراکس مستندات زیادی برای این یکی تولید نکردهام و دو راهنمای سریع برای کاربر تنها مستندات تولید شده برای آن است. حجم کدنویسی نسبتاً بالاست (البته قابل مقایسه با آراکس نیست، اما مثلاً در سمت C++ تعداد زیادی از قابلیتهای اختصاصی TWAIN اسکنر اینوتک با استفاده از مستندات آن پیادهسازی شدهاند) و تعدادی از اجزای رابط کاربری آراکس نیز در این برنامه مجدداً استفاده شده و بعضاً تغییرات و تصحیحاتی داشتهاند به گونهای که با کد اولیه سازگاری ندارند (کنترل انتخاب نمایههای بند انگشتی)، از اجزا و کتابخانههای بازمتن (LOG4NET و یک کد آماده برای نمایش سرعت اسکن، اجزایی از کتابخانهٔ LibTiff، epeg و …) نیز در تولید این برنامه استفاده شده اما حجم استفاده در حد آراکس نیست و بر خلاف آراکس تغییرات چندانی نیز در کدهای ضمیمه شده اعمال نشده. کار، اصلاً کامل نیست و اگر بودم طرحهای زیادی برای این برنامه داشتم. شمارهٔ اولین ویرایش آن 2.0 است (به لحاظ آن که شرکت پیشتر برنامهای به همین نام داشته) و آخرین ویرایش آن در زمان حضور من 3.5 (فکر میکنم) بود. کد اولیهٔ کتابخانهٔ ارتباط با TWAIN را از برنامهٔ کوچکی که پیشتر با استفاده از کدی موجود بر روی اینترنت تهیه کرده بودم (کاملاً با Visual C++) به اسم BatchScanWizard که با اسکنر دیگری کار میکرد برداشتهام. |
کارها و برنامههای دیگر
تعداد برنامههای خردهریز که در هدی سیستم نوشتهام بسیار زیاد است: رابطهایی برای نرمافزار OCR کارت ملی (هم نسخهٔ دلفی و هم نسخهٔ C#)، رابطی برای یک نرمافزار تصحیح نتایج آزمون (مبتنی بر کمپوننتهای نرمافزار iReadDoc هدی) و …. علاوه بر آن کارهای متنوع دیگری هم غیر از برنامهنویسی آنجا کردهام که تهیهٔ مستندات مختلف، فهرست کردن ایرادهای زیادی از اسکنرهایی که با آنها کار میکردم (نرمافزاری و سختافزاری) و تعامل با تولیدکنندههای آنها جهت رفع ایراد، تهیهٔ اسکریپتهای نصب (نصاب تمام برنامههای هدی را من تهیه کردهام)، تست و مستندسازی قابلیتهای سختافزارهای مختلف و … از جملهٔ آنهاست.
یک دیدگاه برای “کارنامهٔ کاری من از مهر ۱۳۸۵ تا پایان اردیبهشت ۱۳۹۰”
دیدگاهها بسته شدهاند.