• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

محمد رضى

المشرفون
  • عدد المشاركات

    1,439
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

140 جيد جدا

عن محمد رضى

  • الرتبة
    مشرف قسم Visual Basic.NET
  • تاريخ الميلاد 04/07/1979

طرق الإتصال

معلومات الملف الشخصي

  • الجنس ذكر
  • الدولة : مراكش الحمراء - المغرب
  • اهتمامات N/A

أحدث الزائرين لملفلك الشخصي

20,368 زياره للملف الشخصي
  1. السلام عليكم و رحمة الله تعالى و بركاته... كيف تفك برمجيا ضغط رابط مضغوط (التعرف على الرابط الأصلي)؟ عندما تنقر من على متصفحك على رابط مضغوط (bit.ly أو ow.ly...) أو تدخله مباشرة في شريط العناوين يقوم المتصفح بإرسال طلب تحميل الصفحة إلى الخادم الذي يرسل جوابا مفاده أن الصفحة المراد تحميلها قد تم تغيير مكانها (http://en.wikipedia.org/wiki/HTTP_301) المكان أو الرابط الأصلي للرابط المضغوط يبعته الخادم كجواب لطلب تحميل الصفحة في قيمة المفتاح Location للمتغير Headers لكائن الفئة HttpWebResponse و هذا ما يبينه الكود البسيط التالي : Console.Write("Type short url : ") ' نبعث بالرابط المضغوط إلى الخادم dim rq As HttpWebRequest = HttpWebRequest.Create(Console.ReadLine()) ' نحتاج للكذب حتى لا ترفض بعض الخوادم طلبنا rq.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)" ' نطلب من إطار الدوت نت ألا يقوم بالتتبع الأوتوماتيكي لجواب الخادم 301 rq.AllowAutoRedirect = false ' نستقبل جواب الخادم dim rs As HttpWebResponse = rq.GetResponse() ' نقرأ الرابط الأصلي للرابط المضغوط من خادم bit.ly or ow.ly or tinyurl.com etc. Console.WriteLine("Original url : " + rs.Headers("Location")) ' نحرر موارد النظام التي استعملناها rs.Close() أتمنى أن تروقكم هذه التلميحة التي تمكننا من تضمين مفكك ضغط الروابط في مشاريعنا...
  2. Fix VGA Resolution SIS 671/671 in ubuntu 11:04
  3. محاكاة الدالة setTimeout الخاصة بالـ JavaScript

    كود الفئة Timeout في حالته تلك يؤدي إلى حذف كائن Thread مباشرة بعد نهاية تنفيذ الكود أو الدالة الممررة إلى SetTimeout. جرب فتح Task manager و تنفيد مشروع للتجربة فيه كود محاكاة التايمر بثانية واحدة و سترى أن عدد Threads الذي يظهر بجانب الملف التنفيذي لا يتعدى 1 بالإظافة إلى المسالك الخاصة بإطار الدوت نت. الشيء الوحيد الذي يزيد عن الحد هو عدد Handles الذي قد يصل إلى مئات ثم يعود للصفر بعد دقيقة أو دقيقتين.
  4. محاكاة الدالة setTimeout الخاصة بالـ JavaScript

    استخدامها كمحاكاة لـ Timer أمر مقبول (و لا أنصح به) في حالة كانت الفترة الزمنية كبيرة شيئا ما أي ثانية فما فوق. أما الاستعمال المفرط لها فبالتأكيد سيؤثر على كفاءة و عمل الجهاز. أما الاستعمال الذي أراه الأمثل لها فهو القيام بتنفيذ كود يعمل في الخلفية تفاديا لتجميد واجهة المستخدم و كذلك لتبسيط الأمور.
  5. محاكاة الدالة setTimeout الخاصة بالـ JavaScript

    هذه آفة من آفات عملية النسخ/لصق بدون تفكير :P شكرا أخي على الملاحظة و قد قمت بتصحيح الكود :) ======= هناك إضافة صغيرة, هي أنه يمكننا محاكاة Timer بالدالة Timeout.SetTimeout و ذلك بالمناداة على نفس الدالة في آخر الكود المنفد. مثال : void MyMethod() { Console.WriteLine("Tick"); Timeout.SetTimeout(1000, MyMethod); } بمجرد تنفيد السطر التالي سيبدأ البرنامج بكتابة Tick كل ثانية و يمكن إيقاف العملية بوضع شرط لتنفيد الدالة Timeout.SetTimeout Timeout.SetTimeout(1000, MyMethod); مبرمجوا الجافاسكريبت متعودون على استغلال الدالة الأصلية setTimeout لعمل Animation على صفحات الويب.
  6. السلام عليكم و رحمة الله تعالى و بركاته... قد نحتاج في بعض مشاريعنا البرمجية تنفيد كود بعد انقضاء وقت محدد. هذا الكود لا يحتاج إلى إعادة التنفيذ مرات عديدة فنضعه داخل Timer. من هذا المنطلق يمكننا كتابة دالة بسيطة تحاكي الدالة setTimeout للـ JavaScript. هذه الدالة تستقبل معاملين الأول هو الدالة المراد المناداة عليها وقت انتهاء الوقت المحدد على المعامل الثاني. الدالة التي سنرى بعد قليل ستعمل بنفس المبدأ أي أنها سترجع بدون انتظار و بعض انقضاء الوقت المحدد سيتم تنفيذ الكود المحدد لها. // الفئة التي تحتوي الدالة public class Timeout { // تحديد تعريف الدوال التي يمكن المناداة عليها public delegate void TimeoutMethod(); // تمكن الدالة من المناداة على الدالة المحددة بـ method بعد انقضاء الوقت millis public static void SetTimeout(int millis, TimeoutMethod method) { // انشاء مسلك خاص لتنفيد العملية System.Threading.Thread thrd; thrd = new System.Threading.Thread(delegate() { // انتظار انتهاء الوقت المخصص System.Threading.Thread.Sleep(millis); // المناداة على الدالة المحددة method(); }); // لتفادي تجميد التطبيق وقت غلقه من طرف المستخدم thrd.IsBackground = true; // تنفيد الكود في مسلك خاص thrd.Start(); } } استخدام الدالة SetTimeout الخاصة بنا سهل جدا : انتظار ثانية ثم تنفيد كود : Timeout.SetTimeout(1000, delegate() { Console.WriteLine("Tick"); }); انتظار ثانية ثم المناداة على دالة مستقلة MyMethod حيث يكون تعريف الدالة من دون معاملات void MyMethod() { ... } : Timeout.SetTimeout(1000, MyMethod); ملاحظة : يجب الانتباه إلى أن كود الدالة Timeout.SetTimeout يتم تنفيذه في مسلك خاص و محاولة الوصول إلى مربعات تحكم عبر الكود المحدد للدالة سيرفع استثناء من نوع InvalidOperationException لأن إطار الدوت نت يمنع الوصول إلى مربعات التحكم من مسلك مغاير للمسلك الذي تم إنشاء المربع فيه و ذلك وقت تتبع الأخطاء DEBUG. مثلا الكود التالي سيرفع استثناء : Timeout.SetTimeout(5000, delegate { myForm.Text = "Tick"; }); للتمكن من استخدام الدالة Timeout.SetTimeout للوصول إلى مربعات التحكم, يجب أولا كتابة دالة خاصة لهذا الغرض بالشكل التالي : void SetMyFormText(string txt) { // إذا كان المسلك الحالي غير المسلك الذي إنشئ فيه النموذج if(this.InvokeRequired) { // استدعاء لنفس الدالة this.Invoke((MethodInvoker) delegate { SetMyFormText(txt); }); // خروج return; } // إذا وصلنا هنا, فنحن في المسلك الصحيح و يمكننا تحديد الخاصية بكل أمان this.Text = txt; } ثانيا, استخدام الدالة Timeout.SetTimeout للمناداة على الدالة SetMyFormText : Timeout.SetTimeout(5000, delegate { SetMyFormText("Set some text after 5 seconds."); }); يمكن و بكل سهولة زيادة امكانية المناداة على دوال تستقبل معاملات و لكن لتبسيط الموضوع تم تجاهل ذلك. تحياتي...
  7. هذا درس للمبتدئين به الشرح الكافي : http://www.arabteam2000-forum.com/index.php?showtopic=208690
  8. مشكلة في مصفوفة الصور

    ابدأ بزيادة التايمر من مربع الأدوات - حدد خاصيتها Enabled على true - حدد خاصيتها Interval على السرعة التي تريد مثلا 1000 - قم بحجز اشتراك في الحدث Tick للتايمر - عرف متغير i من نوع int على مستوى Form# و حدد قيمته على 0 - عرف مصفوفة الصور x على مستوى Form# - حدد الصور على المصفوفة في الحدث Load - في دالة الحدث Tick, زد كود مثل هذا : pictureBox7.Image = (x[i++]); if(i > 4) i = 0; بالتوفيق :)
  9. مشكلة في مصفوفة الصور

    إذا كان الخطأ هو أن الصور لا تظهر كما تحب فجرب تغيير اللوب بتايمر أو على الأقل Application.DoEvents() بعد تغيير الصورة مع توقف لمشاهدة الصورة الجديدة أما إذا كان يتم رفع استثناء فالمرجو ارفاق نص رسالة الخطأ حتى تتضح الأمور.
  10. تعديل فى كود حفظ فى الاكسل

    هذا مثال جميل عن كيفية تصدير بيانات من الداتاجريد إلى ملف إكسل : http://www.arabteam2000-forum.com/index.php?showtopic=194897&view=findpost&p=971431
  11. [تنبيه - عنوان غير مناسب : ]RichBox

    الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته مرحباً بكم في منتدى الفريق العربي للبرمجة نود تنبيهك أن العنوان غير مناسب. الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية. وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!! قواعد المشاركة http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  12. كيف اعمل نسخة احتياطية واسترجعها

    إذا كانت قاعدة البيانات مبنية في المجلد الافتراضي لـ SQL Server فهذه هي الطريقة بالـ VB.NET http://www.arabteam2000-forum.com/index.php?showtopic=201957 تحويل كود VB.NET إلى C#
  13. كود برنامج Duplicated Files Finder بسيط

    شكرا لكم على هذه الردود الطيبة :) بارك الله فيكم
  14. كود برنامج Duplicated Files Finder بسيط

    بارك الله فيك أخي محمد :) الجافا لغة برمجة رائعة خالية من التعقيدات الأمر الذي يجعلني دائما استمتع بتطوير مشاريع بسيطة بها في أوقات الفراغ حتى لا أنسى ما تعلمته.
  15. السلام عليكم و رحمة الله تعالى و بركاته... هذا كود برنامج بسيط من نوع Duplicated Files Finder يقوم بالبحث داخل مجلد(ات)/وحدات تخزين بحثا عن الملفات المكررة عن طريق حساب hash code لكل ملف يجده و تخزينها بطريقة تمكنه من التعرف على الملفات المكررة حتى لو كانت متواجدة في أماكن متفرقة في وحدة التخزين أو المجلد. البرنامج كتبته للتسلية فقط, و أضعه بين أيديكم عسى أن يفيد... الكود مكون من ثلاث فئات. الفئة الأولى AsyncFileFinder تقوم بالبحث عن الملفات... /** * @(#)AsyncFileFinder.java * * * @author Mohamed Rida */ import java.util.*; import java.io.*; public class AsyncFileFinder { private static final int FIFO_MAX = 10; private String startPath = ""; private String regex = ".*"; private int fifoMax = FIFO_MAX; private boolean aborted = false; private boolean subDir = false; private boolean running = false; private boolean finished = false; private boolean started = false; private boolean caseSens = false; private LinkedList<String> queue = new LinkedList<String>(); private Object synch = new Object(); /** */ public AsyncFileFinder(String path, String rgx) throws FileNotFoundException, UnsupportedOperationException { File file = new File(path); if(!file.exists()) throw new FileNotFoundException("Folder [" + path + "] not found!"); if(!file.isDirectory()) throw new UnsupportedOperationException("Path [" + path +"] must be a folder"); startPath = path; regex = rgx.toLowerCase(); } /** */ public AsyncFileFinder(String path, String rgx, boolean subDir) throws FileNotFoundException, UnsupportedOperationException { this(path, rgx); this.subDir = subDir; } /** */ public AsyncFileFinder(String path, String rgx, boolean subDir, boolean caseSens) throws FileNotFoundException, UnsupportedOperationException { this(path, rgx); this.subDir = subDir; this.caseSens = caseSens; if(caseSens) regex = rgx; } /** */ public void setQueueMaxLength(int length) throws IllegalArgumentException { if(length <= 0) throw new IllegalArgumentException("The new queue length must be greater than 0!"); fifoMax = length; } public int getQueueMaxLength() { return fifoMax; } public void abort() { aborted = true; } public boolean isRunning() { return running; } public boolean isAborted() { return aborted; } public boolean isFinished() { return finished; } public boolean hasNext() { return queue.size() > 0; } /** */ public void start() throws UnsupportedOperationException { boolean b = started || aborted || finished || running; if(b) throw new UnsupportedOperationException("Cannot start now! Please use a new AsyncFileFinder object."); started = true; new Thread() { @Override public void run() { running = true; FindIntoNextFolder(startPath); running = false; finished = true; synchronized(AsyncFileFinder.this) { // Wake up owner, we've finished... AsyncFileFinder.this.notifyAll(); } } }.start(); } /** */ private void FindIntoNextFolder(String path) { if(aborted) return; File dir = new File(path); File[] files = dir.listFiles(); if(files != null) { for(File f: files) { if(f.isFile()) { String name = f.getName(); if(!caseSens) name = name.toLowerCase(); if(name.matches(regex)) { // TODO : Add support for raising an event when a file is found while(queue.size() >= fifoMax) { synchronized(this) { // Notify owner to process new found files this.notifyAll(); } //System.out.println(System.currentTimeMillis() + " : Queue is full! Waiting on synch..."); try { synchronized(synch) { // Queue is full, wait... synch.wait(100); } } catch(InterruptedException ex) {} //System.out.println(System.currentTimeMillis() + " : synch is woken up."); } synchronized(queue) { queue.addFirst(f.getAbsolutePath()); } synchronized(this) { // Notify owner to process new found files this.notifyAll(); } } } } if(subDir) { for(File f: files) { if(f.isDirectory()) { FindIntoNextFolder(f.getAbsolutePath()); } } } } } /** */ public String peekFile() { String path = null; if(queue.size() > 0) { synchronized(queue) { path = queue.removeLast(); } } synchronized(synch) { // Notify search thread to continue synch.notifyAll(); } return path; } /** */ public static String fileFilterToRegEx(String filter) { return filter.replace(".", "\\.").replace("*", ".*").replace("?", ".").replace(";", "|"); } } الفئة الثانية تقوم بعملية التعرف على الملفات المكررة : /** * @(#)AsyncFileFinder.java * * * @author Mohamed Rida */ import java.util.*; import java.io.*; import java.security.*; public class DuplicateFinder extends Thread { private final int MAX_THREADS = 10; private int maxThreads = MAX_THREADS; private Hashtable filesSig = new Hashtable(); private int files = 0; // Processed files private int errors = 0; // Errors count private boolean started = false; private boolean running = false; private boolean aborted = false; private boolean finished = false; private AsyncFileFinder finder = null; private int threadsCount = 0; // Current threads count private Object freeThread = new Object(); // Wait on if threadsCount = maxThreads public boolean isStarted() { return started; } public boolean isRunning() { return running; } public boolean isAborted() { return aborted; } public boolean isFinished() { return finished; } public void abort() { aborted = started && running; } public int getProcessedFilesCount() { return files; } public int getErrorsCount() { return errors; } /** */ public DuplicateFinder(String folder) throws UnsupportedOperationException, FileNotFoundException { File f = new File(folder); if(!f.isDirectory()) throw new UnsupportedOperationException("[" + folder + "] is not a valid folder!"); if(!f.exists()) throw new FileNotFoundException("[" + folder + "] does not exist!"); finder = new AsyncFileFinder(folder, ".*", true); // Search for all files including sub directories } /** */ public DuplicateFinder(String folder, int threads) throws UnsupportedOperationException, FileNotFoundException { this(folder); maxThreads = threads; } /** */ @Override public void run() { started = true; running = true; finder.start(); while(!aborted && (!finder.isFinished() || finder.hasNext())) { if(finder.hasNext()) { final String path = finder.peekFile(); // Do we have a free thread while(threadsCount >= maxThreads) { synchronized(freeThread) { try { freeThread.wait(); } catch(InterruptedException ex) {} } } // Process peeked file threadsCount++; new Thread() { @Override public void run() { boolean b = processFile(path); files += b ? 1 : 0; errors += b ? 0 : 1; threadsCount--; synchronized(freeThread) { freeThread.notifyAll(); } } }.start(); } else { synchronized(finder) { // Wait for a new found files try { finder.wait(); } catch(InterruptedException ex) {} } } } while(threadsCount > 0) { // Wait for threads to terminate synchronized(freeThread) { try { freeThread.wait(); } catch(InterruptedException ex) {} } } running = false; finished = true; synchronized(this) { // Wake up owner this.notifyAll(); } } /** */ private boolean processFile(String fileName) { try { System.out.println(fileName); // Get file Hash string BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileName)); DigestInputStream dis = new DigestInputStream(bis, MessageDigest.getInstance("SHA1")); while(dis.read() != -1); byte[] h = dis.getMessageDigest().digest(); Formatter frmt = new Formatter(); for(byte b : h) frmt.format("%02x", b); String hash = frmt.toString(); // Check if it is duplicated synchronized(filesSig) { ArrayList al = (ArrayList)filesSig.get(hash); if(al != null) { // Duplicated synchronized(al) { al.add(fileName); } } else { // Not yet! We'll see if it is al = new ArrayList(); al.add(fileName); filesSig.put(hash, al); } } } catch(Exception ex) { ex.printStackTrace(); return false; } return true; } /** */ public void printScanResult() throws IllegalStateException { if(!finished) throw new IllegalStateException("DuplicateFinder scan is still running!.."); for(Enumeration e = filesSig.keys(); e.hasMoreElements(); ) { String hash = (String)e.nextElement(); ArrayList al = (ArrayList)filesSig.get(hash); if(al.size() > 1) { // Duplicated entry System.out.println(hash); // Hash for(int i = 0; i < al.size(); i++) { System.out.println((String)al.get(i)); // Duplicated file names } System.out.println("====================\n"); } } } } الفئة الثالثة هي فئة التطبيق : الكود الذي تم تحويله إلى تعليق هو لتجربة الفئة أعلاه في البحث عن ملفات. /** * @(#)test.java * * test application * * @author Mohamed Rida * @version 1.00 2011/3/25 */ public class test { public static void main(String[] args) throws java.io.FileNotFoundException { DuplicateFinder dupf = new DuplicateFinder(args[0]); dupf.start(); synchronized(dupf) { try { dupf.wait(); } catch(InterruptedException ex) {} } System.out.println("\n=========="); System.out.println("Scan result for : " + args[0]); System.out.println("=========="); dupf.printScanResult(); System.out.println("Files processed : " + dupf.getProcessedFilesCount()); System.out.println("Errors occured : " + dupf.getErrorsCount()); /* System.out.println("Path : " + args[0] + "\nFilter : " + args[1] + "\n"); AsyncFileFinder finder = new AsyncFileFinder(args[0], AsyncFileFinder.fileFilterToRegEx(args[1]), true); finder.start(); String path = ""; do { if(finder.hasNext()) { path = finder.peekFile(); // Work with the file... System.out.println(path); } else { //System.out.println(System.currentTimeMillis() + " : Queue is empty! Waiting on finder..."); synchronized(finder) { try { finder.wait(); // Wait for a new found file } catch(InterruptedException ex) {} } //System.out.println(System.currentTimeMillis() + " : finder is woken up."); } } while(!finder.isFinished()); System.out.println("\n====\nProgram successfully terminated."); */ } } أمضيت ساعة كاملة أكتب تعاليق باللغة العربية على الكود لكن اكتشفت بعد فوات الأوان أن JCreator LE لا يدعم UNICODE! test.rar