اذهب إلى المحتوى

E.Nourddine

الأعضاء
  • المساهمات

    1458
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    18

كل منشورات العضو E.Nourddine

  1. من الأشياء التي يجهلها البعض أن هذه الطابعات لا تتوفر على مداد، فهي تعتمد على تقنية الكتابة على الورقة باستخدام تقنية الحرارة، وتنتشر مثل هذه الماكينتات داخل المقاهي ومحلالت الأكلات السريعة، حيث تعطي الفاتورة محتوية المحتويات، مع إظهار المجموع في ذيل الورقة. بالاضافة إلى ما قدمه خليل، أرفق كود مصدري لتطبيق يطبع بطابعة حرارية. الكود كالتالي: public class printnow { public static void printCard(final String bill ){ final PrinterJob job = PrinterJob.getPrinterJob(); Printable contentToPrint = new Printable(){ @Override public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException { Graphics2D g2d = (Graphics2D) graphics; g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); g2d.setFont(new Font("Monospaced", Font.BOLD, 7)); if (pageIndex >0){return NO_SUCH_PAGE;} //Only one page String Bill [] = bill.split(";"); int y = 0; for (int i = 0; i < Bill.length; i++) { g2d.drawString(Bill[i], 0, y); y = y + 15; } return PAGE_EXISTS; } }; PageFormat pageFormat = new PageFormat(); pageFormat.setOrientation(PageFormat.PORTRAIT); Paper pPaper = pageFormat.getPaper(); pPaper.setImageableArea(0, 0, pPaper.getWidth() , pPaper.getHeight() -2); pageFormat.setPaper(pPaper); job.setPrintable(contentToPrint, pageFormat); try { job.print(); } catch (PrinterException e) { System.err.println(e.getMessage()); } } } الكود من شأنه أن يطبع ورقة واحدة فقط، ويبقى لك مهمة تغيير المحتوى المطبوع حسب الحاجة. Printsupport Java Printing reciepts with thermal printer in java Printing example with Java
  2. إضافة إلى ما جاد به هشام، أضع بين يديك هذه اللائحة لبيئة تطوير #C: Project Rider: مبني بـ IntelliJ platform وَ ReSharper. omnisharp يمكنك الاستفادة من المقال التالي، حيث أن مايكروسوفت قامت باصدار نسخ مفتوحة المصدر من العملاق Visual Studio في سنة 2015، حيث أصبح من الممكن البرمجة على لينكس، ماك بالاضافة إلى نسخة ويندوز المتاحة منذ أول إصدار.
  3. هناك العديد من الطرق المتبعة لذلك، أي لتشغيل تطبيقات أندرويد على حاسوبك الشخصي، فأظن أنه من غير المعقول تثبيث نظام تشغيل أندرويد و هناك إمكانية للعمل بتطبيقاته من خلال عدة اختيارات، من أهمها -على سبيل المثال -: bluestacks لا يُعوض نظام التشغيل بل يشغل تطبيقات Android على ويندوز اعتبارها كباقي التطبيقات على النظام. Android Studio المحاكي الرسمي لشركة جوجل، فبالاضافة إلى تخصصه في برمجة تطبيقات أندرويد، يمكن عمل run للتطبيقات على الحاسوب. Android-x86 هو مشروع مجموعة من المبرمجين، حيث يتيح امكانية تشغيل تطبيقات أندرويد. Android on Intel Architecture How to Run Android Apps on Your PC or Mac How to run Android apps in Windows
  4. يتضح لنا من خلال رابط الموقع الرسمي لـ#C بخصوص إمكانية عمل run لسكريبت بلغة Python أن ذلك ممكن، بل ويقدم الموقع أيضا شروحات حول الموضوع، لكن سأقتصر عليك الطريق، مبرزا بمثالٍ توضيحي كيفية عمل ذلك. نعتبر السكريبت التالي المكتوب بـ Python: if __name__ == '__main__': f = open(sys.argv[1], 'r') s = f.read() f.close() print s لتشغيل السكريبت وإعادة قيمةs المطبوعة، بلغة #C نستخدم الكود التالي: private void run_cmd(string cmd, string args) { ProcessStartInfo start = new ProcessStartInfo(); start.FileName = "my/full/path/to/python.exe"; start.Arguments = string.Format("{0} {1}", cmd, args); start.UseShellExecute = false; start.RedirectStandardOutput = true; using(Process process = Process.Start(start)) { using(StreamReader reader = process.StandardOutput) { string result = reader.ReadToEnd(); Console.Write(result); } } } مع الاشارة إلى المتغير cmd هو مسار تواجد ملف السكريبت -Python file-. للاستفادة أكثر: قسم دروس سي شارب &nbsp;على أكاديمية حسوب. Two ways to run Python programs from C# [Python.NET] Issues with running a phyton script from c#
  5. الطريقة الصحيحة التي ستمكنك من إظهار الصور العائدة إليك من Json هي بتكوين وسوم من نوع img وإعطائها القيمة scr من خلال رابط الصور بتقنية json. أُرفق لك هذا المثال التوضيحي، حيث عمدنا إلى استخدام JavaScricpt لتصفح محتوى json وإدراج الصور داخل الصفحة: var data = { "images": [{ "bannerImg1": "http://i.stack.imgur.com/HXS1E.png?s=32&g=1" }, {"bannerImg1" : "http://i.stack.imgur.com/8ywqe.png?s=32&g=1" }] }; data.images.forEach( function(obj) { var img = new Image(); img.src = obj.bannerImg1; img.setAttribute("class", "banner-img"); img.setAttribute("alt", "effy"); document.getElementById("img-container").appendChild(img); }); وسم Div المًستقبل للصور -داخل الصفحة: <div class="banner-section" id="img-container"> </div> أدعوك لزيارة قسم الدروس الخاص بـJavaScript على موقع أكاديمية حسوب. مصادر: Displaying image from URL contained in JSON Retrieve data from JSON file and display images in a gallery Get image from JSON file using JavaScript and display in HTML img tag
  6. يقع بعض المبرمجين في هذا الخطأ، وذلك أن دالةInsert في جملة الاستعلام بامكانها ضم العديد من القيم أثناء عملية الادخال، على سبيل التوضيح، إليك الشكل المقدم من الموقع الرسمي لـ Sqlite: حيث يبدو إمكانية أدراج قيم عديد أثناء عملية Insert واحدة. فمثلا على Mysql تكون طريقة ادخال العديد من القيم بالشكل: INSERT INTO 'tablename' ('column1', 'column2') VALUES ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'), ('data1', 'data2'); بينما علىSqlite، نجد الوسيلة التالية: INSERT INTO 'tablename' SELECT 'data1' AS 'column1', 'data2' AS 'column2' UNION ALL SELECT 'data1', 'data2' UNION ALL SELECT 'data1', 'data2' UNION ALL SELECT 'data1', 'data2' SQL As Understood By SQLite-Insert Statment
  7. لابد أنك على اطلاع بمدى أهمية منصة ووردبريس بين مختلف منصات إدارة المحتوى على مستوى برمجة الويب، ذلك أن هذا النظام يعرف إقبالا كبيراً وانتشارا يكاد يكون الأول من حيث المنافسين، حيث يمكن للمبرمج الاستفادة من عدة امتيازات تيسر عليه العمل، من كثرة القوالب، توفر سكريبتات بعدد كبير تفي بجل أغراضه البرمجية وكذا من ناحية الشكل الجمالي للموقع... فيما يلي أحيلك إلى عدة مصادر تعلمية مهمة تعينك على اتقان نظام إدار المحتوى ووردبريس: سلسلة دروس على أكاديمية حسوب. موقع ووردبريس الرسمي. موقعwpbeginne wordpress.tv دورةLearn WordPress - A Quick and Easy Guideبـ20دولار دورةWordPress Training and Tutorialsمن موقع Lynda دورات ووردبريس على موقعTursPlus
  8. بالنسبة للتحزيم ملفات Python على مختلف أنظة التشغيل، إليه بعض البرامج المساعدة في ذلك، مع الاشارة أن كل برنامج خاص بنطام تشغيل معين: على ويندوز: برنامج pyinstaller هذا البرنامج متوفر على جميع أنظمة التشغيل برنامج .py2exe. برنامج Cython مبني بلغة C++ على لينكس: يكفي فقط أن تغيير اسم الملف من filename.py إلى filename (ولا حاجة لتحزيمه بصيغة دبيانية) على الأندرويد -ملف apk-: مكتبة Cython المكتبة توفر امكانية تحول ماف بايثون إلى العديد من الصيغ وخاصة ملفات apk. https://www.youtube.com/watch?v=TCWC4kWOoiI
  9. عند حدوث خطأ أثناء محاولة اضافة حقل من نوع foreign key هذا يعني أن نوع الحقل المُضاف غير مطابق لنوع حقل Primary Key، لذا سأقدم لك الطريقة الصحيحة التي ينصح بها أثناء عمل Foreign Key على قواعد Mysql: بواسطة الكود: CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB; * لاحظ أن حقل parent_id هو من نوع INT وهو نفس نوع Id في جدول parent. SQL FOREIGN KEY Constraint Using FOREIGN KEY Constraints
  10. يمكنك الاعتماد على css لتغيير لون أو شكل الرابط عند الضغط عليه، وذلك عن طريق خاصية active المخصصة للوسوم المفعلة active، وكمثال لما تبحث عنه: .nav li a:active{ background-color: yellow; } حيث سيصبح الرابط بعد الضغط عليه باللون الأصفر كما هو مبين في الصورة: مثال عملي: CSS: body { background-color: #ffffc9; } a:link { color: blue; } /* unvisited links */ a:visited { color: purple; } /* visited links */ a:hover { font-weight: bold; } /* user hovers */ a:active { color: lime; } /* active links */ HTML: <body> <p>Le lien suivant deviendra vert clair pendant le clic : <a href="#">Mozilla Developer Network</a>. </p> </body> إطار عمل Bootstrap
  11. اسم cisco لمن لا يعلم، هو اسم شركة عملاقة وجد مشهورة في مجال الشبكات، وتوفر أجهزة رواتر احترافية: حيث تقدم هذه الشركة دورات في مدى اتقان المختصين في مجال الشبكات، وتسلم شهادات بعد اجتيازهم لامتحانات مقسمة حسب عدة مراحل. بخصوص دورة أو دروس حول سيسكو، إليك هذه القائمة ، وهي تعتبر جيدة في هذا المجال: على الأكاديمية: شهادات سيسكو Cisco Is Easy How to study Cisco and Networking tuto Formation Cisco بـ 49دولار
  12. تحويل تصميم PSD إلى HTMLوCSS هي مهارة تستلزم العديد من الخطوات المتتابعة للحصول في آخر المطاف على صفحة من موقع مبرمجة بشكل صحيح: كمرحلة أولى يجب عليك استخراج الصور التي ستستعملها أثناء البرمجة، كخلفية لوسم div أو صور لأشخاص، شعار الموقع، الخلفية... بناء البنية الأساسية لملف html: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Chris Spooner Design Portfolio</title> <link href="style.css" rel="stylesheet" type="text/css" media="screen" /> </head> <body> <div id="container"> </div> </body> </html> برمجة الوسوم بداخل وسم body بشكل مرتب ومتتابع، حتى تنتج عملاً منظما. ملف css، وهو ملف التنسيق المسؤول عن تنظيم مظهر العناصر داخل الصفحة. يمكنك بعد ذلك التطرق إلى جعله متجاوبا مع أغلب الأجهزة : أجهزة لوحية، شاشات كبيرة. مصادر: كيفية تحويل تصميم فوتوشوب إلى HTML/CSS دروس html5 على الأكاديمية دروس CSS على الأكايمية.
  13. نعم، فقاعدة البيانات جزء مهم في أي تطبيق سواء أكان لسطح المكتب، للويب أو على الهواتف الذكية، حيث توفر مهمة حفظ البيانات، وبالتالي جلبها مهما احتجنا لها، تحيينها، مسحها... كما جاء في جواب المحترف، أننا نجد الأشهر هما Sql وَ Oracle، أضيف إلى ذلك قواعد البيانات من نوع Mysql التي تستعمل بكثرة نظراً لمجانيتها وتوفر استضافات تدعمها. إليك بعض الدروس التي أرى أنها مفيدة: على أكاديمية حسوب: قواعد البيانات دروس في SQL على أكاديمية خان درس مجاني : Learn Database Design with MySQL على موقع Udemy SQL Tutorial على W3schools توجد أيضا قواعد بيانات access من قبل مايكرسوفت : Database in Microsoft Access 2013 for Beginners
  14. كما جاء في جواب الأخ المحترف غالبا ما ينتج هذا الخطأ عن عدم توافق في بيئة الإصدار وأقصد بذلك هل هو 32بت أم 64؟ بمعنى آخر Provider الخاص بأوراكل، يمكنك تحميله حسب الإصدار الخاص بك: 64-bit Oracle Data Access Components (ODAC) 32-bit Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio مصدر:مصدر1
  15. الطريقة المُتبعة في مثل هذه الحالات هي كالتالي: قراءة الملف النصي. مقارنة كل كلمة داخل النص بالكلمة المبحُوث عنها. في حال وُجدت الكلمة المبحوث عنها، يتم استبدالها بالكلمة الجديدة. كود بلغة C: string line; size_t len = stringToReplace.length(); //replace is a string to be replaced. while (getline(in, line)) { while (true) { size_t pos = line.find(stringToReplace); if (pos != string::npos) line.replace(pos, len, stringToReplace); else break; } out << line << '\n'; } كود تعويض كلمة من داخل ملف نصي بشكل تفاعلي مع المُستخدم: /******************************************************************/ /* REPLACING A WORD IN A TEXT BY ANOTHER GIVEN WORD */ /******************************************************************/ #include <stdio.h> #include <string.h> #include<conio.h> void main() { char text[100],word[10],rpwrd[10],str[10][10]; int i=0,j=0,k=0,w,p; clrscr(); printf("PLEASE WRITE ANY TEXT.\n"); printf("GIVE ONLY ONE SPACE AFTER EVERY WORD\n"); printf("WHEN COMPLETE PRESS Ctrl-Z \n"); gets(text); printf("\nENTER WHICH WORD IS TO BE REPLACED\n"); scanf("%s",word); printf("\nENTER BY WHICH WORD THE %s IS TO BE REPLACED\n",word); scanf("%s",rpwrd); p=strlen(text); for (k=0; k<p; k++) { if (text[k]!=' ') { str[i][j] = text[k]; j++; } else { str[i][j]='\0'; j=0; i++; } } str[i][j]='\0'; w=i; for (i=0; i<=w; i++) { if(strcmp(str[i],word)==0) strcpy(str[i],rpwrd); printf("%s ",str[i]); } getch(); }
  16. من خلال تجربة شخصية، أنصحك بـ ووردبريس، ذلك أن بلوجر محدودة إلى حد ما، وقد تستغني عنها جووجل في أي لحظة لأنه توقف تطوير المنصة وتحديثها منذ زمن، بخلاف ووردبريس دائما ما أُطالع تحديثاتها التي تأسرني يوما بعد يوم، أما من الجانب العملي ورغم أن ووردبريس تحتاج معرفة وإلمام بلغةphp وكذا تقنيات javascrip،css.. إلا أنها تبقى احترافية إلى أبعد الحدود، ويكفي مُراجعة لوحة التحكم لتأخذ فكرة. ولعل في أغلب المواقع والمنتديات التي أَدرجت مواضيع تقارن فيها بين استخدامBlogger وّ Wordpress ستجد الأغلبية إن لم نقل الكل ينحاز إلى الاختيار الثاني، ألا وهو ووردبريس. Blogger vs. WordPress.com: A Complete Comparison Blogger Vs WordPress Comparison: Which One Should I Use?
  17. تتميز النسخةPro من ويندوز10 باحترافيتها وتوفر على العديد من المزايا غير المتواجدة في النسخة Home حيث خصصت هذه الأخيرة لاستعمال المستخدم العادية(تحرير نصوص، تصفح أنترنت..) وكذا هي مخصصة لهواتف ويندوز الجديد والأجهزة اللوحية، في حين النسخة Pro مخصصة لماهو عملي أكثر، ويلخص الجدول التالي أهم الاختلافات بين الإصدارين: أيضا الفيديو التالي، يوضح أغلب الاختلافات الموجودة بين نسختي Pro وَHome من ويندوز10 : الصورة التالي تبرز الاختلاف بين مختلف نسخ ويندوز10:
  18. بالاضافة إلى ما تطرّق له الأستاذ أحمد، برنامج DvdPlayer يدعم الكثير من صيغ الملفات سواء المسموعة أو المرئية، وإليك لائحة بمجمل الصيغ التي يدعمها هذا العملاق: ملفات الفيديو: ملفات الصوت: لعمل حرق burn للفيديو بشكل صحيح إليك الطريقة من خلال الرابط.
  19. لحذف جميع العناصر سنستعمل حلقة التكرار for، بحيث ستتصفح جميع العناصر وبالتالي تطبيق دالة delete: for (int i = 0; i < rows ; ++i){ delete [] results[i]; } في حال أردنا حذف عنصر واحد فقط-ذو الرقم الترتيبي 7-، سنستعمل الكود: delete [] results[7]; لحذف سطر في مصفوفة Dynamic نستخدم الشيفرة التالية: unsigned rowToDelete = 2; if (myVector.size() > rowToDelete) { myVector.erase( myVector.begin() + rowToDelete ); } حيث أن myVector يشير إلى المصفوفة و rowToDelete إلى السطر الذي تريد حذفه ولقد استخدمنا دالة erase() للحذف. نتيجة الحذف تكون كالآتي:
  20. نعم يمكننا فعل ذلك، أي يمكننا ترتيب الأرقام الموجودة بداخل الملف الثنائي، وللإشارة فالملف الثنائي هو ما يصطلح عليه بالانجليزية Binary file، حيث لن نستخدم مصفوفة كما يفعل البعض، بل سنتصفح الملف الثنائي وبالمقارنة مع آخر قيمة مقارنة فيه سيتم ترتيب قيمه-، ليتم إنشاء ملف مؤقت IndexTem لنقل القيم المرتبة بداخله، كما يوضح الكود التالي: void Sort() { int StructureSize, Idx1, Idx2; FILE * binaryFile; binaryFile = fopen("Index.txt","rb+"); index_type Index, IndexTemp; StructureSize = sizeof(Index); fseek(binaryFile, 0, SEEK_END); int fileSize = ftell(binaryFile); rewind(binaryFile); for (Idx1 = 0; Idx1 < fileSize; Idx1 += StructureSize) { for (Idx2 = 0; Idx2 < fileSize - StructureSize; Idx2 += StructureSize) { fread(&Index, StructureSize, 1, binaryFile); fread(&IndexTemp, StructureSize, 1, binaryFile); if (Index.id > IndexTemp.id) { fseek(binaryFile, -(StructureSize * 2), SEEK_CUR); fwrite(&IndexTemp, StructureSize, 1, binaryFile); fwrite(&Index, StructureSize, 1, binaryFile); fseek(binaryFile, -StructureSize, SEEK_CUR); } else { fseek(binaryFile, -StructureSize, SEEK_CUR); } } rewind(binaryFile); } fclose(binaryFile); } C program for bubble sort C Program to Implement Bubble Sort in C Programming
  21. لتمرير البيانات ببن الأكتفيتي -activities- سنحتاج إلى استعمال Intent حيث توفر لنا إمكانية الانتقال من activity1 إلى activity2 مع نقل أي بيانات سنتحتاجها في activity2، كاسم مستخدم، عنوانه البريدي...لغرض ما. في الكود التالي طريقة الانتقال مع نقل بيانات KeyName: للإشارة الكود ينقلنا من activity1 نحو AndroidTabRes: Intent intent = new Intent(current.this, AndroidTabRestaurantDescSearchListView.class); intent.putExtra("keyName","value"); startActivity(intent); بداخا كود AndroidTabRes: String data = getIntent().getExtras().getString("keyName"); ليتم استقبال البيانات داخل AndroidTabRes. أمثلة أخرى: Passing data between activities Android Tutorial – Transfer Data Between Activities Using Intent How to Pass Data between Activities using Intents
  22. لحد الساعة لا أعتقد أن امكانية ربط جهاز قراءة QR rcode متاحة على أجهزة أندرويد من خلال الأدوات البسيطة -حهاز قارئ QR و جهاز ببيئة أندرويد-، إلا إذا كنّا سنستخدم كاميرا الموبايل، حيث تتيح هذه الطريقة استعمال الكاميرا كأداة لمسح QR كود وبالتالي تحويل الصورة برمجيًا إلى شيفرة ليتم التعامل معها حسب الرموز المناسبة للشيفرة، ولعمل ذلك أضع بين أيديك -بالاضافة إلى ما قدمه الأخ هشام- بعض الدروس والمقاللات التي ارى أنها ستغني الموضوع لديك: Android SDK: Create a Barcode Reader How do I write a Java code for a barcode scanner? Tutorial how to create Barcode Reader app in Android Studio 1.4 Implement barcode scanner using ZXing in Android
  23. بعد بعض البحث وجدت أن الأمر يتعلق بنفس التأثير، حيث تزاح الأداة عند الضغط على الزر، ومن خلال الموقع الرسمي لمطوري أندرويد developer.android يجب توفر واجهةDraw Layout والتي ستتضمن القائمة المنزلقة Navigation Drawer بالشكل التالي: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- The navigation drawer --> <ListView android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp" android:background="#111"/> </android.support.v4.widget.DrawerLayout> لعمل Initialize القائمة: public class MainActivity extends Activity { private String[] mPlanetTitles; private DrawerLayout mDrawerLayout; private ListView mDrawerList; ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPlanetTitles = getResources().getStringArray(R.array.planets_array); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.left_drawer); // Set the adapter for the list view mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mPlanetTitles)); // Set the list's click listener mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); ... } } إنشاء حدث تحديد المستخدم وضغطه على أحد العناصر: private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { selectItem(position); } } /** Swaps fragments in the main content view */ private void selectItem(int position) { // Create a new fragment and specify the planet to show based on position Fragment fragment = new PlanetFragment(); Bundle args = new Bundle(); args.putInt(PlanetFragment.ARG_PLANET_NUMBER, position); fragment.setArguments(args); // Insert the fragment by replacing any existing fragment FragmentManager fragmentManager = getFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.content_frame, fragment) .commit(); // Highlight the selected item, update the title, and close the drawer mDrawerList.setItemChecked(position, true); setTitle(mPlanetTitles[position]); mDrawerLayout.closeDrawer(mDrawerList); } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } حدث فتح وغلق القائمة -عملية الازاحة-: public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... mTitle = mDrawerTitle = getTitle(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { super.onDrawerClosed(view); getActionBar().setTitle(mTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); } /* Called whenever we call invalidateOptionsMenu() */ @Override public boolean onPrepareOptionsMenu(Menu menu) { // If the nav drawer is open, hide action items related to the content view boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_websearch).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } } برنامج أندرويد ستوديو يوفر إمكانية إنشاء Navigation Drawer Activity: الدرس المقدم من خلال الرابط المُعنون تحت اسم How to Add a Navigation Drawer in Android، نحصل على النتيجة:
  24. يجب الانتباه إلى شيء مهم في هذه التقنية -ربط تطبيق أندرويد بقاعدة بيانات من نوع Mysql- وهو أن قاعدة البيانات ستتواجد على استضافة وأن التطبيق سيتواجد على هاتف المستخدم، وفي هذه الحالة ستحتاج إلى web service للقيام بالمهمة على أكمل وجه. أيضا سيكون من الأساسي استخدام لغة php وتقنية Json، إذ سنتبع الخطوات التالية: الجزء الخاص بـ PHP وَ Mysql: سنستعمل الموقع https://www.000webhost.com/ حيث يوفر إمكانية الحصول على استضافة مجانية. ننشئ بعد ذلك قاعدة البيانات الخاصة بنا: ستحصل على المعلومات الخاصة بك كمستخدم للتمكن من الاتصال بقاعدة البيانات. مثال: سنحتاج إلى ملف Php للاتصال بقاعدة البيانات: <?php $con=mysqli_connect("mysql13.000webhost.com","a2957838_anduser","mypassword123","a2957838_android"); if (mysqli_connect_errno($con)) { echo '{"query_result":"ERROR"}'; } $fullName = $_GET['fullname']; $userName = $_GET['username']; $passWord = $_GET['password']; $phoneNumber = $_GET['phonenumber']; $emailAddress = $_GET['emailaddress']; $result = mysqli_query($con,"INSERT INTO user (fullname, username, password, phone, email) VALUES ('$fullName', '$userName', '$passWord', '$phoneNumber', '$emailAddress')"); if($result == true) { echo '{"query_result":"SUCCESS"}'; } else{ echo '{"query_result":"FAILURE"}'; } mysqli_close($con); ?> باقي الخطوات يمكنك الاطلاع عليها من خلال الرابط. يمكنك أيضا مشاهدة الدرس التالي -غير مجاني-:https://teamtreehouse.com/library/build-a-weather-app مصدر:رابط لموقع أسئلة stackoverflow.
  25. إذا مان العمل على احدى منصات العمل الحر مثل مستقل وقام العميل بإلغاء المشروع، فالأفضل أن تراسل الدعم الفني ليقوموا بالعمل المنوط بهم، ذلك أن استلام 30 في المئة فقط من ثمن المشروع وعمل 80 في المئة منه غير منصف لك كمستقل، ويبقيى الحوار هو السبيل الأمثل لحل هذا المشكل، وستوجه أحد الوضعيات التالية: مطالبة العميل لك بإرسال المشروع مع رفضه إرسال أي مبلغ نقدي : في هذه الحالة لك الخيار في عدم ارساله أو ارساله، لأنه لم يتمم المشروع وبالتالي فالعملية لم تتم بشكل سليم، وكل من تخلف عن الالتزام بالمشروع يتحمل المسؤولية، وأظن أن 30 في المئة دون استلام أي شيء يعتبر كضريبة له على ذلك. تفهم العميل وتقديره للجهد المبذول من طرفك وأداؤه لـ 80 في المئو من المبلغ المتفق عليه مقابل الجزء المنجز من المشروع. حاول أن يكون أسلوبك في الحوار مع العميل راقي وبشكل لبق، حتى مع ارتفاع وثيرة الحديث، حاول دائما أن تعطيه انطباع التحكم في الذات، ومن الجيد أن تكون من ذوي هذه الطباع.
×
×
  • أضف...