معجون بهشتی Selenium, PhantomJS و Requests برای web scraping

این روز‌ها خودکار کردن کار‌های تکراری روزمره‌مان یک جورهایی برگ برندهٔ کاربران، توسعه‌دهندگان و یا حتی تیم‌های فعال در حوزهٔ نرم‌افزار محسوب می‌شود. از پتانسیل بالای درآمد‌زایی‌اش در بعضی شرایط اگر بگذریم‌، کاهش زمان مورد نیاز انجام کار‌ها به میزان زیاد و قابلیت اطمینان بسیار بیشتر نسبت به شرایطی که نیروی انسانی وظیفهٔ به پایان رساندن کار را بر عهده دارد‌، از جمله دلایلی است که می‌تواند زمان و هزینهٔ مورد نیاز جهت خودکار کردن اکثر کار‌ها را به راحتی توجیح کند.

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

بیشتر بخوانید…

ورژن کنترل اختیاری نیست!

حقیقتش انتظار داشتم این موضوع خیلی وقت پیش حل شده باشد. حتی پیش خودم فکر می‌کردم که ورژن کنترل یک جورهایی جزء غرایض جامعه‌ی نرم‌افزاری است‌، آن هم با درجه‌ی اهمیتی مثل نفس کشیدن. دوستی دارم که حدوداً دو سال پیش روی دیوار فیس‌بوک‌اش از پاک شدن اتفاقی فایل‌های یکی از پروژه‌هایش شکایت کرده بود‌، که وا مصیبتا‌، مسلمانان چه نشسته‌اید که نتیجه‌ی تلاش چند سال گذشته‌ام به فنا رفت!

یادم می‌آید‌‌‌ همان موقع با یک لحن خیلی مودبانه پرسیدم «مگه از ورژن کنترل استفاده نمی‌کردی؟ خوب خطرناکه حسن…» و جوابی در این حدود‌ها گرفتم که «چون این پروژه‌ها یا شخصی بودن یا کوچیک‌، زیاد مباحث مهندسی نرم‌افزار رو توشون رعایت نکردم!». خوب اینکه می‌گویم دوست شاید‌، خیال بد کنید‌، ولی خوب خوشبختانه چند سالی هست که حسن را از نزدیک ملاقات نکرده‌ام‌، وگرنه احتمالاً آن موقع نمی‌توانستم خودم را کنترل کنم و ایشان را به کما می‌فرستادم تا این مشکل دوباره برایش تکرار نشود.

بیشتر بخوانید…

وقایع نگاری یک دیباگ: وقتی MySQL چیزی ذخیره نمی‌کند!

مشکل از آن‌جا شروع شد که نوید خبر داد که چند ساعتی است یک وبلاگ وردپرسی که برای یکی از پروژه‌هاست ، عکس‌العمل‌های عجیب و غریب نشان می‌دهد! چطور؟ این که باکس متن بعضی از مطالب نشان داده نمی‌شوند. اولین حدسم این بود که شاید بخاطر تغییرات اخیری که در آدرس وبلاگ داده بودم همچین مشکلی پیش آمده و خواستم که تنظیمات را به حالت قبل برگردانند… و مشکل یپچیده‌تر شد! چطور؟ تنظیمات جدید ذخیره نمی‌شد.

نوید چند تایی روش پیشنهاد کرد تا شاید بتوانیم اطلاعات بیشتر در رابطه با وضعیت به دست بیاوریم. به سرور لاگین می‌کنم و… tab completion کار نمی‌کند. یک همچین اخطاری می‌دهد:

بیشتر بخوانید…

وقایع نگاری یک دیباگ: وضعیت عجیب MongoDB

استفاده از Mongo و Python برای ایجاد یک RESTFUL API دیگر آن‌چنان هم سناریوی دور از انتظاری نیست، خصوصا این که اگر کمی جستجو کنید می‌بینید که افراد زیادی اشاره به پایداری و Performance همچین استکی می‌کنند و راه‌کار‌های بسیار زیادی نیز برای بهتر کردن آن ارائه کرده‌اند. در یکی از پروژه‌های تیم فاندرز ما هم با استکی به شرح زیر، RESTFUL API مربوط به اپلیکیشمان را طراحی‌کرده‌ایم:

در چهار ماه اول لانچ API، هیچ مشکلی در داده‌های دریافتی و پردازش‌های مورد نیاز مشاهده نمی‌شد. Performance کلی استک هم در حد قابل قبولی جواب‌گوی نیاز‌ها بود. تا این که با تغییری در نحوهٔ ارائهٔ خدمات پروژهٔ اصلی‌، حجم کاربران سرویس به نحو چشم‌گیری بالا رفت و ماجرا آغاز شد!

بیشتر بخوانید…

خوبی‌های جاوا اسکریپت؟

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

نمی‌دانم چقدر با JavaScript آشنایی دارید‌، ولی بعید می‌دانم که پی‌اش رفته باشید و اسم داگلاس کراکفورد (Douglas Crockford) به گوشتان نخورده باشد.

عمدهٔ معروفیت ایشان هم پی کتابی به اسم Javascript the Good Parts شکل گرفته که شاید برای خیلی‌ها یک جک به نظر برسد. چطور؟

بیشتر بخوانید…