بنویس

بنویس

محتوا تولید کنید.و با بنویس به اشتراک بگذارید.
بنویس

بنویس

محتوا تولید کنید.و با بنویس به اشتراک بگذارید.

چند ابزار مفید برای توسعه دهندگان وب در محیط کامند لاین

رضا باقرزاده

به عنوان یک توسعه دهنده وب، زمانیکه مشکلی به وجود می‌آید، زندگی سخت می‌گردد. مشکل می تواند در هرجایی به وجود بیاید. آیا مشکل از درخواستی است که میفرستید؟ آیا مشکل از پاسخ سمت سرور است؟ آیا مشکل از بسته نرم افزاری دیگری است که استفاده می کنید و شاید هم API خارجی دچار مشکل شده است. اگر یک توسعه دهنده حرفه ای باشید یا مدیر سرور، برایتان زیاد پیش می آید که مجبورید از Command Line برای حل مشکل تان استفاده کنید.


یک ابزار خوب برای یافتن مشکلات می تواند بسیار گرانبها باشد و حتی از وقوع اشکال از همان اول جلوگیری کند. ما در این مطلب به پنج تا از مفید ترین دستورات محیط کامند لاین برای یافتن خطاها و اشکلات اشاره خواهیم کرد. اگر مدیر سرور هستید یا یک توسعه دهنده وب حرفه ای، ادامه مطلب را از دست ندهید.


Curl

اگر با کامند های انتقالی در شبکه مانند Wget آشنایی داشته باشید، Curl هم در همین گروه قرار می گیرد. این دسته از دستورات محتوای صفحات وب را برای شما بازآوری می کنند و آن را نمایش می دهند. تفاوت اصلی بین Curl و Wget این است که Wget محتوای صفحه را در فایل ذخیره می کند اما Curl آن را در همان محیط کامند لاین نمایش می دهد و همین امر استفاده از Curl را برای شما بسیار ساده خواهد کرد. برای مثال با زدن دستور زیر می توانید آی پی ای که هم اکنون در محیط اینترنت با آن در حال فعالیت هستید را از طریق ifconfig.me مشاهده کنید:


  $ curl ifconfig.me
  93.96.101.90

دستور curl -i هدر های صفحه را نیز نمایش داده و دستور curl -I فقط هدر های صفحه را فراخوانی می کند. این دو دستور بسیار در فهمیدن این که دقیقا HTTP چه هدری را برای شما می فرستد مفیدند.


  $ curl -I news.ycombinator.com
  HTTP/1.1 200 OK
  Content-Type: text/html; charset=utf-8
  Cache-Control: private
  Connection: close

آپشن L- یک ابزار بسیار مفید است که باعث می شود curl ریدایرکت ها را نیز دنبال کند. Curl همچنین از HTTP Basic authentication و کوکی ها و بسیاری از موارد دیگر پشتیبانی می کند.


Ngrep

برای آنالیز پکت ها در شبکه می توان از نرم افزار بسیار قدرتمند Wireshark، همراه هزاران امکان و تنظیم استفاده کرد. همچنین برای محیط کامند لاین هم می توانید از نسخه دیگر این نرم افزار تحت عنوان TShark یاد کرد. اما برای کار های ساده استفاده از این نرم افزار به نظر پیچیده می آید. اگر دنبال یک ابزار قدرتمند و ساده برای آنالیز بسته های شبکه هستید می توانید از دستور Ngrep استفاده کنید.


برای استفاده از این ابزار در کنترل بسته های وب همواره از آپشن W byline- جهت حفظ لاین بریک ها و q- برای حذف برخی از اطلاعات غیر مفید خروجی استفاده کنید. برای مثال دستور زیر جهت بررسی تمام پکت هایی که از نوع Get و یا Post هستن، استفاده می شود.


  ngrep -q -W byline "^(GET|POST) .*"

همچنین شما می توانید فیلتر های بیشتری جهت محدود کردن بسته ها به یک آی پی و یا آدرس خاص را اضافه کنید. برای مثال با دستور زیر تمام بسته های ارسالی و یا دریافتی از گوگل که شامل "search" هستند را نمایش می دهد.


  ngrep -q -W byline "search" host www.google.com and port 80

Netcat

netcat و یا همان nc ابزاری مانند چاقو های ارتش سوییس در شبکه محسوب می شود. بسیار ساده اما بسیار قدرتمند است. ابزاریست که به شما این امکان را می دهد تا کانکشن های دلخواه خود را در شبکه ایجاد کنید. برای مثال در دستور زیر به عنوان یک پورت اسکنر از آن استفاده شده است:


  $ nc -z example.com 20-100
  Connection to example.com 22 port [tcp/ssh] succeeded!
  Connection to example.com 80 port [tcp/http] succeeded!

علاوه بر یک ایجاد کننده کانکشن های دلخواه می توان از ترکیب nc و tar برای کپی کردن فایل ها ما بین دو سرور استفاده کرد. برای این کار کافیست از دستور زیر سمت سرور:


  $ nc -l 9090 | tar -xzf -

و از دستور زیر در سمت کلاینت استفاده کنید:


  $ tar -czf dir/ | nc server 9090

شما همچنین می توانید از nc برای در دسترس قرار دادن یک اپلیکیشن در شبکه استفاده کنید برای مثال ما در پایین امکان برقراری دسترسی Shell از طریق پورت 8080 را به می دهیم:


  $ mkfifo backpipe
  $ nc -l 8080  0 backpipe

هم اکنون هر کلاینت به راحتی با دستور زیر به سرور دسترسی خواهد داشت:


  $ nc example.com 8080
  uname -a
  Linux li228-162 2.6.39.1-linode34 ##1 SMP Tue Jun 21 10:29:24 EDT 2011 i686 GNU/Linux

ممکن است مثال های قبل به نظر غیر ضروری بیایند و شما ترجیح دهید برای دسترسی به سرور مستقیما از ssh استفاده کنید اما این مثال ها بیانگر قدرت بسیار زیاد Netcat هنگامی که با اپلیکیشن های دیگر ترکیب می شود هستند.


Sshuttle

Sshuttle به شما این امکان را می دهد تا از طریق یک تونل به هر سروری که دسترسی SSH به آن دارید وصل شوید و ترافیک خود را از طریق این سرور منتقل کنید. با این کار شما در مقابل ابزار هایی مانند Firesheep و یا dsniff هنگامی که در یک محیط عمومی از اینترنت استفاده می کنید در امان خواهید بود. این ابزار می تواند امنیت شما را تا حد زیادی ارتقا دهد. با استفاده از این ابزار تمام درخواست های شما از جمله درخواست DNS می تواند از طریق سروری دیگر پاسخ داده شود.


  $ sshuttle -r  --dns 0/0

با استفاده از دستور --daemon شما می توانید sshuttle را به صورت پس زمینه اجرا کرده و با ترکیب با آپشن های دیگر با استفاده از آدرسی ساده به راحتی و سریع آن را فعال و غیر فعال کنید.


  alias tunnel='sshuttle --D --pidfile=/tmp/sshuttle.pid -r  --dns 0/0'
  alias stoptunnel='[[ -f /tmp/sshuttle.pid ]] && kill `cat /tmp/sshuttle.pid`'

شما برای استفاده از این ابزار می توانید از سرور هایی ارزان در هرکدام از دیتا سنتر های موجود در کشور استفاده کرده و این امکان ساده را برای بالا بردن امنیت خود استفاده کنید.


برای محدود کردن این سرویس به آی پی ای خاص و یا هاستی خاص به جای ارسال تمام ترافیک می توانید از دستور زیر استفاده کنید. اما اگر از آدرس هاست می خواهید استفاده کنید به دلیل اینکه Sshuttle تنها از آی پی پشتیبانی می کند می توانید از dig ابتدا استفاده کرده تا به آی پی مورد نظر دست پیدا کنید:


  $ sshuttle -r  `dig +short `

Siege

siege یک ابزار بنچ مارک HTTP است که با افزودن آپشن -g که بسیار شبیه -iL برای curl می باشد هدر های صفحه را نیز نمایش می دهد. برای مثال اجرای این دستور را برای گوگل در پایین مشاهده می کنید(برخی هدر ها برای راحتی در خواندن حذف شده اند):


  $$ siege -g www.google.com
  GET / HTTP/1.1
  Host: www.google.com
  User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
  Connection: close

  HTTP/1.1 302 Found
  Location: http://www.google.co.uk/
  Content-Type: text/html; charset=UTF-8
  Server: gws
  Content-Length: 221
  Connection: close

  GET / HTTP/1.1
  Host: www.google.co.uk
  User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
  Connection: close

  HTTP/1.1 200 OK
  Content-Type: text/html; charset=ISO-8859-1
  X-XSS-Protection: 1; mode=block
  Connection: close

یک قابلیت بسیار ستودنی Siege استفاده برای تست لود سرور است. مانند دستور ab (که یک دستور تست لود سرور با استفاده از آپاچی می باشد) شما می توانید چند درخواست هم زمان را به سمت سرور فرستاده و نتیجه زیبایی از آن دریافت کنید. در پایین ما برای مثال ۲۰ کانکشن هم زمان برای ۳۰ ثانیه به گوگل فرستادیم و نتیجه به صورت زیر بوه است:


  $ siege -c20 www.google.co.uk -b -t30s
  ...
  Lifting the server siege...      done.
  Transactions:                    1400 hits
  Availability:                 100.00 %
  Elapsed time:                  29.22 secs
  Data transferred:              13.32 MB
  Response time:                  0.41 secs
  Transaction rate:              47.91 trans/sec
  Throughput:                     0.46 MB/sec
  Concurrency:                   19.53
  Successful transactions:        1400
  Failed transactions:               0
  Longest transaction:            4.08
  Shortest transaction:           0.08

در مطالب آینده ابزارهای بیشتر و پیشرفته تر را نیز معرفی خواهیم کرد.

چرا همه باید برنامه نویسی یاد بگیرند؟

رضا باقرزاده

شما که هم اکنون مشغول خواندن نردبان هستید، حتما سواد خواندن و نوشتن دارید. اما مفهوم سواد به سرعت در حال تغییر است و شاید تا چند وقت دیگر به کسی که برنامه نویسی بلد نباشد، لقب «بی سواد» بدهند. 

کامپیوتر در تمام جوانب زندگی ما رسوخ کرده و حالا در هر کاری که فعالیت کنید نیاز به دانستن کامپیوتر و برنامه نویسی احساس می شود. چند هفته پیش در برخط از بهترین شغل های جهان در سال ۲۰۱۳ گفتیم که در راس آنها توسعه دهندگان نرم افزار قرار داشتند. حالا نمودار بالا به شما نشان می دهد که چه بازار کار فوق العاده ای برای این شغل وجود دارد. 

این نمودار نشان می دهد که تا سال ۲۰۲۰ فقط در آمریکا ۱.۴ میلیون شغل برای متخصصان کامپیوتر و برنامه نویسان وجود دارد. در حالی که فارغ التحصیلان این رشته حدود ۴۰۰ هزار نفر هستند. یک بازار بزرگ ۵۰۰ میلیارد دلاری. در حالی که یک میلیون کمبود نیروی کار در آن وجود خواهد داشت.


اما سایت Code.org را می شناسید؟ این سایتی است که چند هفته پیش توسط دو برادر ایرانی به نام علی و هادی پرتوی راه اندازی شده که از کارآفرینان شناخته شده در آمریکا به حساب می آیند. آنها این سایت را با این هدف ایجاد کرده اند که برنامه نویسی را به آسانی به همه یاد بدهند. تا هم افراد بیشتری به جمع باسواد ها بپیوندند و هم کمبودهای بازار کار سریع تر برطرف شود. آنها می گویند که درصد کمی از مدارس به دانش آموزان برنامه نویسی را یاد می دهند و برنامه نویسی باید در همه مدارس آموزش داده شود. 

حالا سایت Code.org برای تاکید روی اهمیت یادگیری برنامه نویسی، یک ویدیو کوتاه درست کرده که در آن مشهور ترین برنامه نویسان جهان از اهمیت یادگیری کد نویسی می گویند. 

در این ویدیو بیل گیتس و مارک زاکر را می بینید که در این مورد صحبت می کنند و در کنار آن حتی will.i.am خواننده مشهور گروه Black Eyed Peas را می بینید که می گوید مشغول یادگیری برنامه نویسی است! بنابراین چرا شما از همین امروز یادگیری برنامه نویسی را شروع نکنید؟ 

فینال مسابقه برنامه نویسی بیان: شنبه ۲۸ بهمن

رضا باقرزاده

جزییات مربوط به مرحله نهایی مسابقه بین المللی برنامه نویسی بیان در وبلاگ رسمی مسابقه منتشر شده و طبق برنامه اعلام شده، شرکت کنندگان داخلی و خارجی جمعه آینده کارت شرکت در مسابقه را دریافت خواهند کرد و فینال نیز روز بعد، یعنی شنبه 28 بهمن ماه، راس ساعت 10 صبح برگزار خواهد شد. شرکت کنندگان سه ساعت برای پاسخگویی به سوالات وقت خواهند داشت و این دوره از مسابقات ساعت ۱۳ پایان خواهد یافت. 


در فاصله زمانی پایان مسابقه فینال تا برگزاری مراسم اختتامیه که قرار است عصر همان روز برگزار شود، یک مسابقه برنامه نویسی جانبی (که بیشتر جنبه تفریحی دارد) برگزار خواهد شد. شبیه به تمرینات کششی بعد از مسابقات ورزشی که برای برگشت ورزشکاران به حالت عادی انجام می شود. :) 

همان گونه که قبلا وعده داده بودیم تلاش خواهیم کرد که اخبار مسابقه برنامه نویسی را دربرخط نویس  پوشش دهیم. 

تا آن زمان، برای اطلاع از جزییات بیشتر می توانید به لینک های زیر نگاهی بیندازید: 

سایت اصلی مسابقه (فارسی) 
سایت بخش بین المللی (انگلیسی) 
وبلاگ مسابقه