علی شکیبا

دفتر یادداشت دیجیتال برای هر چیز مفید!

۲۳ مطلب با موضوع «برنامه‌نویسی» ثبت شده است

شب گذشته بر اثر اشتباه، حافظه فلش خودم رو به سیستم کناری (سیستم دوستم که از نظر تعداد و تنوع ویروس‌ها در جهان باید تک باشد!) زدم! از آنجا که از لینوکس استفاده می‌کنم خیلی مشکل خاصی نیست! با یک نگاه به محتویات فلش متوجه ویروس عزیز New Folder شدم که در تمام دایرکتوری ها و زیر دایرکتوری ها خودش رو تکثیر کرده با نام های مختلف! بنابراین یکی از اون فایل ها را به شاخه اصلی فلش منتقل کردم و بعد هم برای موارد مشابه، فایل را به main.txt تغییر نام دادم. حالا وقت اون رسیده تا حساب این ویروس رو برسیم!

#!/bin/bash
counter=0
find . -type f -iname "*.exe" -print0 | while IFS= read -r -d $'\0' i; do
if [ $(md5sum "$i" | cut -f 1 -d ' ') == $(md5sum "./main.txt" | cut -f 1 -d ' ') ]
then
rm "$i"
counter=$((counter+1))
echo "$counter\t"
fi
done

البته فراموش نکنید فایل های autorun.ini رو هم پاک کنید!

۰ نظر موافقین ۱ مخالفین ۰ ۰۸ دی ۹۳ ، ۰۹:۰۱
علی شکیبا

برای نصب خیلی ساده می توانید از دستورات استاندارد Python برای نصب استفاده کنید! اما اگر ابزاری مانند apt-get در دبیان می خواهید، conda در خدمت شما است. البته برای نصب برخی از بسته ها مجبور(!) می شوید از pip یا easy_install استفاده کنید، اما هر چه باشد، نصب از روی کد منبع کابوس است و کابوس! علی الخصوص هنگامی که سرتان هم درد می کند! بگذریم ...

برای نصب کتابخانه textblob برای anaconda، می توانید از یکی از دو راه زیر استفاده کنید. اولی برای افرادی است که از MacOS استفاده می کنند (ما که کاری به MacOS نداریم!) و دومی برای بنده و امثال بنده است که عمده وقتشان را با ترمینال لینوکس پر می کنند و شاید هم ویندوز (رو سیاهم خجالتی )!

خوب، اول اولی را می گویم که ساده است!

$ conda config --add channels https://conda.binstar.org/sloria
$ conda install textblob
$ python -m textblob.download_corpora

حال نوبت به دومی می رسد که بازهم ساده است! فقط یک نکته! اگر مثل بنده از چندین توزیع مختلف پایتون مثل anaconda و python.org یا نسخه های مختلف استفاده می کنید، لازم است تا به جای استفاده از دستور pip، مسیر کامل توزیع مورد نظر را بدهید و یا با استفاده از دستور update-alternatives توزیع مورد نظر را در اولویت قرار دهید (بیان بهتر است ویرایشگر متن خود را به auto-completion مجهز کند!). بقیه ساده است:

$ pip install -U textblob
$ python -m textblob.download_corpora

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

$ python -m textblob.download_corpora lite

تمام است! از پایتون خود لذت ببرید!

۰ نظر موافقین ۰ مخالفین ۰ ۲۱ آذر ۹۳ ، ۰۰:۲۹
علی شکیبا

امروز عصر یکی از نزدیکان با من تماس گرفت و راهکاری رو برای حل مشکلش می خواست. ایشون تمایل داشت تا چندتا سرویس که خدمات ویدئو کنفرانس را ارائه می کنند، نظیر Skype، GoogleHangout و مانند این ها رو از لحاظ کیفیت خط ارتباطاتی و مولفه های کیفیت شبکه ای مورد بررسی قرار بدهند. همه کارها رو انجام داده بودند، ولی استخراج داده‌ها براشون دردسر شده بود. کلیت کار این بود که یکی از کاربران یک Stopwatch رو با دقت صدم ثانیه اجرا می کرد و فیلمش رو ذخیره می کرد. حالا یک طرف فیلم رو پخش می کرد و طرف دیگه همون فیلم رو دریافت می کرد و با یه ترفندی دوباره به فرد مقابل ارسال می کرد!!!! از این ها بگذریم ...

این بنده خدا می خواست از میز کارش یه اسکرین شات مثلا هر یک ثانیه یه بار و برای مثلا 10 دقیقه بگیره و بعد بشینه دونه به دونه داده ها رو وارد Excel کنه! یعنی 600 تا عکس! من این اسکریپت پایتون رو برای ایشون، البته خیلی کد تمیز و بهینه‌ای نیست و فقط هدفم انجام کار بوده!، نوشتم که ابتدا عکس‌ها رو می‌گیره و بعد از اون، دونه به دونه اون ها رو با استفاده از موتور متن باز OCR به نام tesseract پردازش می کنه و در یه فایل ذخیره می کنه.

پی نوشت: توضیحات اصلا کافی نیست! فقط برای این هست که یادم نره چه کار کردم و بعدا سر فرصت تکمیلش می کنم.

#!python

import subprocess
import Image
import ImageGrab
import time
import os
name = 'screen2'
path = r'D:\temp\ali'
os.chdir(path)
i = 0
n = 60 * 10# 60 SECONDS * 10 MINUTES
dead = 1 # sleep for dead seconds
list = []
out = []
x = 166
y = 40
h = 1108
w = 65
while (i < n) :
  img = ImageGrab.grab()
  s = os.path.join(path, name + '_' + str(i) + '.jpg')
  list.append(name + '_' + str(i) + '.jpg')
  i = i + 1
  img.crop((x,y,h,w)).save(s)
  time.sleep(dead)
 
temp = "temp" #os.path.join(path, "temp")
for item in list :
  p = subprocess.Popen(["tesseract", item, temp , "-psm 7"], cwd=path)
  p.wait()
 
  print ["tesseract", item + " " + temp + " " + "-psm 7"]
  f = open(os.path.join(path, "temp.txt"))
  for line in f.readlines():
    out.append(line)
  f.close()

outf = open(os.path.join(path, name + "_output.txt"), "a+")
for item in out:
  outf.write(item + "\n")
outf.close()
۰ نظر موافقین ۰ مخالفین ۰ ۲۸ آذر ۹۲ ، ۲۳:۰۲
علی شکیبا