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

E.Nourddine

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

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

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

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

    18

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

  1. استعمل هذه المكتبة في الرابط، بهذه الطريقة: NSString *path = @"/System/Library/Audio/UISounds/photoShutter.caf"; NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; NSData *data = [NSData dataWithContentsOfFile:path]; [data writeToFile:[docs stringByAppendingPathComponent:@"photoShutter.caf"] atomically:YES];ثم افتح ملف photoShutter.caf في برنامج Audacity واعكس التأثير ليصبح كما في الشكل -تامنحنى رقم 2-: واحفظ التغيرات في ملف photoShutter2.caf وإعدادات الصوت بالشكل التالي: static SystemSoundID soundID = 0; if (soundID == 0) { NSString *path = [[NSBundle mainBundle] pathForResource:@"photoShutter2" ofType:@"caf"]; NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID); } AudioServicesPlaySystemSound(soundID); [self.stillImageOutput captureStillImageAsynchronouslyFromConnection: ...ومن تجربة قد عمل البرنامج بشكل جيد، يمكنك تحميل الملف من photoShutter2.caf .
  2. عليك باستعمال مكتبة ExcelLibrary الموضوعة في موقع Google Code : excellibrary إليك الكود المصدري مرفوق بمجموعة من التعليقات ليسهلَ عليك فهمه: //إنشاء الجدول DataSet ds = new DataSet("New_DataSet"); DataTable dt = new DataTable("New_DataTable"); ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture; dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture; //فتح الاتصال مع قاعدة البيانات OleDbConnection con = new OleDbConnection(dbConnectionString); con.Open(); //إنشاء جملة استعلام string sql = "SELECT Whatever FROM MyDBTable;"; OleDbCommand cmd = new OleDbCommand(sql, con); OleDbDataAdapter adptr = new OleDbDataAdapter(); adptr.SelectCommand = cmd; adptr.Fill(dt); con.Close(); // data set اضافة الجدول إلى ds.Tables.Add(dt); //انطلاقا من البيانات المًستخرجة من قاعدة البياناتexcel إنشاء جدول ExcelLibrary.DataSetHelper.CreateWorkbook("MyExcelFile.xls", ds);
  3. الطريقة الفعالة لفعل ذلك وهي بحساب المدة الزمنية المُنقضية منذ وقت النشر إلى الآن، ووضع عدة معايير للتحكم في الشكل النهائي الظاهر على شاشة المستخدم، مثلا عند انقاء 24 ساعة نكتب منذ يوم، بعد 60 دقيقة أي منذ ساعة وهكذا... // تعريف متغيرات الزمن دقيقة، ساعة، يوم... const int SECOND = 1; const int MINUTE = 60 * SECOND; const int HOUR = 60 * MINUTE; const int DAY = 24 * HOUR; const int MONTH = 30 * DAY; // حساب المدة المنقضية ووضعها في متغير var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks); double delta = Math.Abs(ts.TotalSeconds); //If التأكد من قيمة المدةالمُنقضية عن طريق دالة if (delta < 1 * MINUTE) { return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " منذ ثانية"; } if (delta < 2 * MINUTE) { return "منذ دقيقة"; } if (delta < 45 * MINUTE) { return ts.Minutes + " منذ دقائق"; } if (delta < 90 * MINUTE) { return "منذ ساعة"; } if (delta < 24 * HOUR) { return ts.Hours + " ساعة"; } if (delta < 48 * HOUR) { return "الأمس"; } if (delta < 30 * DAY) { return ts.Days + " يوم"; } if (delta < 12 * MONTH) { int months = Convert.ToInt32(Math.Floor((double)ts.Days / 30)); return months <= 1 ? "one month ago" : شهر+ " months ago"; } else { int years = Convert.ToInt32(Math.Floor((double)ts.Days / 365)); return years <= 1 ? "one year ago" : years + " years ago"; }الأمر غير معقد، فقط يحتاج إلى بعض التركيز- وقد أرفقت المثال بالتعليقات ليسهل فهمه- .
  4. أولا عليك بتحديد المنطقة التي تريد تقصيضها عن طريق أحد الأشكال، كم في الصورة: بعض الاختصارات للأشكال: (R):لإدراج الأشكال المربعة. (E):لإدراج الدائرة. (F):لإدراج اليد لتحديد شكل معين. (U):لتحديد اللون الموجود في منطقة ما. بعد ذلك إلى القائمة menu>select crop Selection option * هناك طريقة ثانية للوصول إلى نفس النتيجة وذلك من خلا ل أداة Crop Tool كما توضح الصورة: بعد تحديد الأداة نحدد الجزء المُراد تقصيصه.
  5. تختلف Objective-C قليلا عن C في هذه الجزئية، فـ enum لا يعرّف بنفس الطريقة متل C، حيث نجد: enum tagname x; // enum tagname من نوع x تعريف متغير tagname x; //C++ بينما يعتبر صحيحاً على Objective-C سيحدث خطأ في ويمكن أيضا تعريف متغير بنفس اسم متغير enum على الشكل: enum tagname { ... }; typedef enum tagname tagname; // enum tagname كنوع من 'tagname'تعريف متغير ويمكن اختصاره على في سطر واحد بالشكل التالي: typedef enum tagname { ... } tagname; وفي الأخير في حال كنت لا تريد ربط enum tagname بـ tagname : typedef enum { ... } tagname; https://www.binpress.com/tutorial/objectivec-lesson-7-enumerated-types-and-typedefs/72
  6. أضف المكتبة المسؤولة عن مسح barcode: ثم أضف الإعدادات التالية في ملف AndroidManifest/xml: <!-- ZXing activities --> <activity android:name="com.google.zxing.client.android.CaptureActivity" android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden"> <intent-filter> <action android:name="com.phonegap.plugins.barcodescanner.SCAN"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> <activity android:name="com.google.zxing.client.android.encode.EncodeActivity" android:label="@string/share_name"> <intent-filter> <action android:name="com.phonegap.plugins.barcodescanner.ENCODE"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application>في ملف Index.html: <a href="#" class="btn" onclick="scanCode();">Scan Code</a> <a href="#" class="btn enc" onclick="encodeText();">Encode Text</a> <a href="#" class="btn enc" onclick="encodeEmail();">Encode Email</a> <a href="#" class="btn enc" onclick="encodePhone();">Encode Phone</a> <a href="#" class="btn enc" onclick="encodeSMS();">Encode SMS</a> يمكنك التوسع في الموضوع عن طريق الدرس التالي : TMT3 Add the PhoneGap Barcode Scanner Plugin to a Project, Write an App using Barcode Scanner Technology
  7. بالنسبة لملف التنسيق css أضفه بالشكل التالي: wp_register_style( 'namespace', 'http://locationofcss.com/mycss.css' ); بالنسبة لـ jquery سنستعمل enqueue لربط pluging به، بهذا الشكل: wp_enqueue_script('jquery');كما يمكننا أيضا ربط ملف javascript مع jquery معاً في حال كنا سنستخدم الاثنين معاً: wp_enqueue_script('namespaceformyscript', 'http://locationofscript.com/myscript.js', array('jquery'));Using jQuery in own Plugins
  8. الخطوة الأولى هي تنفيذ productAllFeatures من بين لائحة الإعدادات، بالشكل التالي: var bind = productsDoc.Descendants("products").Select(product => new { ... productAllFeatures = product.Element("productFeatures") .Descendants("Feature") .Select(x => x.Value) .ToList() }).OrderBy(product => product.productName).ToList();ثم نظهر العناصر في الواجهة بالشكل التالي: <Columns> ... <TemplateField HeaderText="Features"> <ItemTemplate> <!-- xml تتم هما عملية جلب المعلومات من ملف --> <asp:Repeater runat="server" DataSource='<%# Eval("productAllFeatures") %>'> <ItemTemplate> <!-- عرض البيانات--> <%# Container.DataItem.ToString() %> </ItemTemplate> </asp:Repeater> </ItemTemplate> </TemplateField>
  9. يوفر إطار العمل sinatra الوظيفة request والتي تمكن من استعمال عنوان Ip الخاص بالمستخدم الحالي للتطبيق، وذلك باستخدام request.ip: get '/' do "Your IP address is #{request.ip}" endIntro to Sinatra - Make an IP Checker Get client's IP address in Sinatra?
  10. من خلال الموقع الرسمي لـsinatra يمكن أن نستخلص: ثبت rerun إن لم تكن قد ثبّتها من قبل. $ gem install rerun شغّل تطبيق sintra بالشكل التالي: $ ruby app.rbالآن سيتم إعادة تخصيص التطبيق بعد كل تغيير من خلال: $ rerun 'ruby app.rb'
  11. sinatra من أطر العمل التي لا تلقى إقبالاً كبيراً في العالم العربي مع الأسف، لكن كمثيلتها Rails المبرمجة بلغة روبي، حيث يمكننا تشغيل التطبيق المبرمج بـ sinatra عن طريق الأمر التالي: thin -R config.ru start # قبل إنشاء المشروع ننفذ الأمر التالي monk add riblits git://github.com/Phrogz/riblits.git #داخل الملف الفارغ المنشأ monk init -s riblitsملف الواجهة: config.ru app.rb helpers/ init.rb partials.rb models/ init.rb user.rb routes/ init.rb login.rb main.rb views/ layout.haml login.haml main.hamlconfig.ru: root = ::File.dirname(__FILE__) require ::File.join( root, 'app' ) run MyApp.newapp.rb: # encoding: utf-8 require 'sinatra' require 'haml' class MyApp < Sinatra::Application enable :sessions configure :production do set :haml, { :ugly=>true } set :clean_trace, true end configure :development do # ... end helpers do include Rack::Utils alias_method :h, :escape_html end end require_relative 'models/init' require_relative 'helpers/init' require_relative 'routes/init' helpers/init.rb: # encoding: utf-8 require_relative 'partials' MyApp.helpers PartialPartials require_relative 'nicebytes' MyApp.helpers NiceByteshelpers/partials.rb: # encoding: utf-8 module PartialPartials def spoof_request(uri,env_modifications={}) call(env.merge("PATH_INFO" => uri).merge(env_modifications)).last.join end def partial( page, variables={} ) haml page, {layout:false}, variables end endhelpers/nicebytes.rb: # encoding: utf-8 module NiceBytes K = 2.0**10 M = 2.0**20 G = 2.0**30 T = 2.0**40 def nice_bytes( bytes, max_digits=3 ) value, suffix, precision = case bytes when 0...K [ bytes, 'B', 0 ] else value, suffix = case bytes when K...M then [ bytes / K, 'kiB' ] when M...G then [ bytes / M, 'MiB' ] when G...T then [ bytes / G, 'GiB' ] else [ bytes / T, 'TiB' ] end used_digits = case value when 0...10 then 1 when 10...100 then 2 when 100...1000 then 3 else 4 end leftover_digits = max_digits - used_digits [ value, suffix, leftover_digits > 0 ? leftover_digits : 0 ] end "%.#{precision}f#{suffix}" % value end module_function :nice_bytes # Allow NiceBytes.nice_bytes outside of Sinatra endmodels/init.rb: # encoding: utf-8 require 'sequel' DB = Sequel.postgres 'dbname', user:'bduser', password:'dbpass', host:'localhost' DB << "SET CLIENT_ENCODING TO 'UTF8';" require_relative 'users'models/user.rb: # encoding: utf-8 class User < Sequel::Model # ... endroutes/init.rb: # encoding: utf-8 require_relative 'login' require_relative 'main'routes/login.rb: # encoding: utf-8 class MyApp < Sinatra::Application get "/login" do @title = "Login" haml :login end post "/login" do # Define your own check_login if user = check_login session[ :user ] = user.pk redirect '/' else redirect '/login' end end get "/logout" do session[:user] = session[:pass] = nil redirect '/' end end routes/main.rb: # encoding: utf-8 class MyApp < Sinatra::Application get "/" do @title = "Welcome to MyApp" haml :main end endviews/layout.haml: !!! XML !!! 1.1 %html(xmlns="http://www.w3.org/1999/xhtml") %head %title= @title %link(rel="icon" type="image/png" href="/favicon.png") %meta(http-equiv="X-UA-Compatible" content="IE=8") %meta(http-equiv="Content-Script-Type" content="text/javascript" ) %meta(http-equiv="Content-Style-Type" content="text/css" ) %meta(http-equiv="Content-Type" content="text/html; charset=utf-8" ) %meta(http-equiv="expires" content="0" ) %meta(name="author" content="MeWho") %body{id:@action} %h1= @title #content= yield
  12. أولا عليك بكتابة كود صفحةjsp على الشكل: <!DOCTYPE html> <html lang="en"> <head> <title>SO question 4112686</title> <script src="http://code.jquery.com/jquery-latest.min.js"></script> <script> $(document).on("click", "#somebutton", function() { // When HTML DOM "click" event is invoked on element with ID "somebutton", execute the following function... $.get("someservlet", function(responseText) { // Execute Ajax GET request on URL of "someservlet" and execute the following function with Ajax response text... $("#somediv").text(responseText); // Locate HTML DOM element with ID "somediv" and set its text content with the response text. }); }); </script> </head> <body> <button id="somebutton">press here</button> <div id="somediv"></div> </body> </html>ثم servlet باسم doGet: @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String text = "some text"; response.setContentType("text/plain"); // Set content type of the response so that jQuery knows what it can expect. response.setCharacterEncoding("UTF-8"); // You want world domination, huh? response.getWriter().write(text); // Write response body. }الآن نضيف اسم servlet إلى ملف الخريطة map للموقع: <servlet> <servlet-name>someservlet</servlet-name> <servlet-class>com.example.SomeServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>someservlet</servlet-name> <url-pattern>/someservlet/*</url-pattern> </servlet-mapping>سنغير في كود servlet وذلك باضافة كود ajax: @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String foo = request.getParameter("foo"); String bar = request.getParameter("bar"); String baz = request.getParameter("baz"); boolean ajax = "XMLHttpRequest".equals(request.getHeader("X-Requested-With")); if (ajax) { // Handle ajax (JSON) response. } else { // Handle regular (JSP) response. } }
  13. إليك هذا المثال في الرابط، ثم سأقدم لك المتال التالي: ملف التنسيق:a.selected { background-color:#1F75CC; color:white; z-index:100; } .messagepop { background-color:#FFFFFF; border:1px solid #999999; cursor:default; display:none; margin-top: 15px; position:absolute; text-align:left; width:394px; z-index:50; padding: 25px 25px 20px; } label { display: block; margin-bottom: 3px; padding-left: 15px; text-indent: -15px; } .messagepop p, .messagepop.div { border-bottom: 1px solid #EFEFEF; margin: 8px 0; padding-bottom: 8px; }ملف javascript مع الاستعانة بمكتبة Jquery:function deselect(e) { $('.pop').slideFadeToggle(function() { e.removeClass('selected'); }); } $(function() { $('#contact').on('click', function() { if($(this).hasClass('selected')) { deselect($(this)); } else { $(this).addClass('selected'); $('.pop').slideFadeToggle(); } return false; }); $('.close').on('click', function() { deselect($('#contact')); return false; }); }); $.fn.slideFadeToggle = function(easing, callback) { return this.animate({ opacity: 'toggle', height: 'toggle' }, 'fast', easing, callback); }; And finally the html: <div class="messagepop pop"> <form method="post" id="new_message" action="/messages"> <p><label for="email">Your email or name</label><input type="text" size="30" name="email" id="email" /></p> <p><label for="body">Message</label><textarea rows="6" name="body" id="body" cols="35"></textarea></p> <p><input type="submit" value="Send Message" name="commit" id="message_submit"/> or <a class="close" href="/">Cancel</a></p> </form> </div> <a href="/contact" id="contact">Contact Us</a>رابط إظهار النافذة تامنبثقة:<div> <div class="messagepop pop"></div> <a href="/contact" id="contact">Contact Us</a> </div> كود إظهار النافذة عن طريق jquery:$("#contact").on('click', function() { if($(this).hasClass("selected")) { deselect(); } else { $(this).addClass("selected"); $.get(this.href, function(data) { $(".pop").html(data).slideFadeToggle(function() { $("input[type=text]:first").focus(); }); } } return false; });
  14. نعم يمكنك فعل ذلك دون اللجوء إلى jquery، وذلك باستخدام vanilla script بالشكل التالي: <script type="text/javascript"> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == XMLHttpRequest.DONE ) { if(xmlhttp.status == 200){ document.getElementById("myDiv").innerHTML = xmlhttp.responseText; } else if(xmlhttp.status == 400) { alert('There was an error 400') } else { alert('something else other than 200 was returned') } } } xmlhttp.open("GET", "ajax_info.txt", true); xmlhttp.send(); } </script>أما الطريقة الاعتيادية فهي باستخدام jquery: $.ajax({ url: "test.html", context: document.body, success: function(){ $(this).addClass("done"); } }); وهذه بعض المقارنات بين jquery و vanila: Events:// jQuery $(document).ready(function() { // code }) // Vanilla document.addEventListener('DOMContentLoaded', function() { // code }) // jQuery $('a').click(function() { // code… }) // Vanilla [].forEach.call(document.querySelectorAll('a'), function(el) { el.addEventListener('click', function() { // code… }) }) Selector:// jQuery var divs = $('div') // Vanilla var divs = document.querySelectorAll('div') // jQuery var newDiv = $('<div/>') // Vanilla var newDiv = document.createElement('div') A Guide to Vanilla Ajax Without jQuery
  15. أولا، علينا معرفة أن الحقول والوسوم بشكل عام على صفحات html يمكن تعريفها وإعطائها قيم ليتم التعرُف عليها من خلال css أو Jquery، حتى نتمكن من الوصول إليها وجلب محتواها، تغيره، تغير خصائص الحقل... وهذا التعريف يكون إما بـ Id الذي لا يجب أن يتكرر عند وسمين مثل "id="myTextforName أوclass التي عادة ما نعطيها لمجموعة من الوسوم لها نفس التنسيق "class="post. مثال على ملف html: <html> <head> <title>id - class مثال توضيحي لـ</title> </head> <body> <!-- class لاحظ الخاصية --> <div><div class="ads-in-post hide_if_width_less_800"> </div></div><h2>TextBox value : <label id="msg"></label></h2> <div style="padding:16px;"> TextBox : <input type="textbox" value="Type something"></input> </div> <!-- idلاحظ الخاصية --><input type="texte id="txtname" > <button id="Get">Get TextBox Value</button> <button id="Set">Set To "ABC"</button> <button id="Reset">Reset It</button> </body> </html>ويمكننا الوصول للحقل المقصود من خلال Id الخاص به أو class، وذلك من خلال كود الجافسكريبت التالي: var myInput =document.getElementById('txtname').value; // الآن قيمة الحقل مخزنة في المتغير، يمكننا استعمالها حسب الحاجة alert(myInput);
  16. بالنسبة لتغيير model/tabel فقط عليك بالأمر التالي: ./manage.py schemamigration yourapp rename_foo_to_bar --empty وفي حال كنت تستعمل نسخة قديمة، استبدل startmigration عوضschemamigration. ليكون التغيير اليدوي للكود بالشكل التالي: class Migration(SchemaMigration): def forwards(self, orm): db.rename_table('yourapp_foo', 'yourapp_bar') def backwards(self, orm): db.rename_table('yourapp_bar','yourapp_foo') يمكنك إنجاز هذه العملية -تغيير الاسم- باستخدام db_table من Model الخاصة بالجدول، لكن في كل مرة تفعل ذلك سيبقى مشكل الاحتفاظ بالاسم القديم في بعد مواضع الموقع، لذا تستحب الطريقة الأولى لتفادي أي مشكل. مما يدعو إلى ظهور هذه الرسالة : The following content types are stale and need to be deleted: yourapp | foo Any objects related to these content types by a foreign key will also be deleted. Are you sure you want to delete these content types? If you're unsure, answer 'no'.
  17. أولا لنجعل القائمة داخل مصفوفات، بهذا الشكل: <?php $menu_name = 'main_nav'; $locations = get_nav_menu_locations(); $menu = wp_get_nav_menu_object( $locations[ $menu_name ] ); $menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) ); ?>لتصفح القوائم عن طريق حلقات التكرار وإظهارها في كود داخل وسم <nav>: <nav> <ul class="main-nav"> <?php $count = 0; $submenu = false; foreach( $menuitems as $item ): // set up title and url $title = $item->title; $link = $item->url; // item does not have a parent so menu_item_parent equals 0 (false) if ( !$item->menu_item_parent ): // save this id for later comparison with sub-menu items $parent_id = $item->ID; ?>كتابة أول عنصر بداخل وسم <li>: <li class="item"> <a href="<?php echo $link; ?>" class="title"> <?php echo $title; ?> </a> <?php endif; ?>التأكّد من أن العنصر يقع داخل القائمة الأم: <?php if ( $parent_id == $item->menu_item_parent ): ?>القوائم الفرعية: <?php if ( !$submenu ): $submenu = true; ?> <ul class="sub-menu"> <?php endif; ?>كتابة القوائم الفرعية: <li class="item"> <a href="<?php echo $link; ?>" class="title"><?php echo $title; ?></a> </li>القائمة التالية لا يجب أن تتوفر على نفس parent_id: <?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ): ?> </ul> <?php $submenu = false; endif; ?> <?php endif; ?>في حالة كان للقائمة parent_id مختلف نغلق وسم <li>: <?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ): ?> </li> <?php $submenu = false; endif; ?> <?php $count++; endforeach; ?> </ul> </nav>wp_custom_nav
  18. للتأكد من أن المستخدم الحالي للموقع هو الأدمن، فقط بسطر واحد يمكننا فعل ذلك: if(is_admin()) { /* *يمكنك إنجاز الأمر أو الأوامر البرمجية هنا في حالة كان المستخدم يملك صفة أدمن الموقع */ }كما يمكنك التأكد من أن المستخدم قد ولج إلى الموقع عن طريق login او هو مستخدم زائر فقط: <?php $current_user = wp_get_current_user(); if ( 0 == $current_user->ID ) { // مستخدم زائر غير مسجل على الموقع } else { // login مستخدم مسجل على الموقع، ولجه عن طريق } ?>User is Adminwp get current user
  19. هذه الدالة من شأنها مساعدتك: function admin_default_page() { return '/new-dashboard-url'; } add_filter('login_redirect', 'admin_default_page');بينما يمكنك التأكد من صلاحيات المستخدم وتتم إحالته للصفحة المناسبة حسب ما تمكّنه صلاحياته، بهذا الشكل: <?php /** *هذه الدالة تحيل المستخد بعد عملية الولوج إلى صفحة معينة حسب صلاحياته */ function my_login_redirect( $url, $request, $user ){ if( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) { if( $user->has_cap( 'administrator' ) ) { $url = admin_url(); } else { $url = home_url('/members-only/'); } } return $url; } add_filter('login_redirect', 'my_login_redirect', 10, 3 );كما يمكن الاعتماد على custom user meta لتحديد وجهة المستخدم: <?php function my_login_redirect( $url, $request, $user ){ if( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) { if( 'cool' == get_user_meta( $user->ID, '_is_cool', true ) ) { $url = home_url('/cool-people-only/'); } } return $url; } add_filter('login_redirect', 'my_login_redirect', 10, 3 );
  20. html5 توفرإمكانية رفع الملفات باستخدام تقنية Ajax ومكتبة Jquery، بل وأكثر من هذا تُمكن من تحديد معاير الملف (name,size...). كود html: <form enctype="multipart/form-data"> <input name="file" type="file" /> <input type="button" value="Upload" /> </form> <progress></progress>يمكن التأكد من نوع الملف وخصائصه عن طريق ملف javascript: $(':file').change(function(){ var file = this.files[0]; var name = file.name; var size = file.size; var type = file.type; //تأكد من خصائص لملف، حسب المعايير التي تريده });تقنية Ajax لإرسال الملف: $(':button').click(function(){ var formData = new FormData($('form')[0]); $.ajax({ url: 'upload.php', //رابط ملف رفع الملف type: 'POST', xhr: function() { // XMLHttpRequest var myXhr = $.ajaxSettings.xhr(); if(myXhr.upload){ // التأكد من وجود خاصية رفع الملفات myXhr.upload.addEventListener('progress',progressHandlingFunction, false); } return myXhr; }, //Ajax beforeSend: beforeSendHandler, success: completeHandler, error: errorHandler, // dataالبيانات data: formData, // في حالة عدم نجاح عملية الرفع cache: false, contentType: false, processData: false }); });التأكد من تقدم رفع الملف حتى الانتهاء: function progressHandlingFunction(e){ if(e.lengthComputable){ $('progress').attr({value:e.loaded,max:e.total}); } }
  21. الأمر ليس متعلقاً بكبر العدسة، فدقّة الصورة ودرجة وضوحها لا يتعلقان فقط بهذا، فقد نجد عدستين لهما نفس البعد البؤري ونفس كبر الفتحة، إلا أن الصور مختلفة، ويعود كبر قطر العدسة إلى استخدام عناصر خاصة بالعدسة الكبيرة والتي تتيح مزايا مخصصة لذلك كـ دخول أكبر قدر ممكن من الضوء، وحواف الصورة.. في العموم تتسم العدسات كبيرة القطر بالتقاطها للصور ذات المسافات البعيدة، ولعلّك تدري سبب اختلاف العدسات من حيث القطر، نطراً لاختلاف ضرورة الاستعمال. مما يعطينا تصورا ونتيجة مقنعة، وهي أن كِبَرَ العدسة لا يتعلق بدقة وجودة الصور المُلتقطة. وفي الحالة التي وصفتها بأنه رغم اختلاف قطر العدستين لم تلاحظ الفرق، لاحظ من خلال ما سبق أني قلت أن كل قطر مخصص لوضعية معينة، أي أن الفرق ستلاحظه عند استعمالك للعدستين بمسافة بعيد، حاول التقاط صورة منظر طبيعي بعيد شيئاً ماـ عندها ستلاحظ الفرق في دقة الصورتين. comparing-6-cameras
  22. Algorithm أو الخوارزميات وهو اسم نسبة إلى محمد بن موسى الخوارزمي عالم الرياضيات العربي، ويقصد بالخوارزميات في مجال علوم الحاسب مجموعة من الخطوات والإجراءات تنفذ بشكل متسلسل لحل مشكل ما، انطلاقا من معطيات يمكن الاعتماد عليها لإيجاد الحل في آخر البرنامج. ويعتبر Algorithm من أساسيات البرمجة ، سواء على الحاسوب أو الهواتف الذكية، وحتى برمجة الآلات الكبيرة، و يعتبر هذا العلم من أهم المفاهيم التي يتلقاها المبرمج أثناء دروسه الأولى. ليتم بعد ذلك الانتقال إلى لغة برمجة من لغات البرمجة، كـ php، #،.Java... حيث تختلف كل لغة عن الأخرى فقط في طريقة كتابة الشيفرة، لكن يبقى منطق التحليل وتتابع الإجراءات البرمجية واحد. فهم خوازميات البرمجة أمر مهم لكل مبرمج. يكتب كود الخوارزمية بلغة مفهومة لبني البشر، وفي أغلب الأحيان باللغة الانجليزية، مثل هذه الصورة: حيث يتوفر الكود على علامة البداية والنهاية تحدان من شيفرة الخوارزمية. https://www.youtube.com/watch?v=DF2XAc07eI0
  23. سأضع التصور التالي لصفحة html الخاصة بك، متضمنةً الجدول، كما يلي: <table id="myTable"> <tbody> <tr>...</tr> <tr>...</tr> </tbody> </table>عند استعمالك للكود السابق المُدرج في سؤالك: $('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');سيتم إضافة السطر- الصف- الجديد بعد الجدول أي بعد غلق الوسم <body> بهذا الشكل: <table id="myTable"> <tbody> <tr>...</tr> <tr>...</tr> </tbody> <tr>...</tr>الصف الجديد،بعد محتوى الجدول </table>وقد يتجه بك التفكير إلى استعمال خاصية last وتستعملها بالشكل: $('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');مما يجعلك تقع في نفس الخطأ، لأنك حددت آخر صف، وعليه سأرشدك للحل الأمثل وهو استعمال الوسم body مع تحديد آخر عنصر بداخل ثم تضيف بعده الصف الجديد، بهذه الطريقة: $('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');
  24. تمكننا دالة splice من تغيير محتوى مصفوفة على javascript وذلك إما بإضافة، حذف أو تغيير عناصر في أماكن محددة، وهذه هي طريقة كتابتها من الموقع الرسمي: array.splice(start, deleteCount[, item1[, item2[, ...]]]) في حالتنا هذه، سنستعملها هكذا: باعتبار لدينا المصفوفة التالية:var arr = []; arr[0] = "Jani"; arr[1] = "Hege"; arr[2] = "Stale"; arr[3] = "Kai Jim"; arr[4] = "Borge"; سنُظهر محتواها:console.log(arr.join()); //Jani,Hege,Stale,Kai Jim,Borgeنُضيف لها القيمة:ملاحظة أن القيمة 'Lene' مُدرجة في الرتبة 3 أي في index 2. arr.splice(2, 0, "Lene");نُظهر محتوى المصفوفة من جديد:console.log(arr.join()); //Jani,Hege,Lene,Stale,Kai Jim,Borge
  25. إليك الكود التالي: function isScrolledIntoView(elem) { var $elem = $(elem); var $window = $(window); var docViewTop = $window.scrollTop(); var docViewBottom = docViewTop + $window.height(); var elemTop = $elem.offset().top; var elemBottom = elemTop + $elem.height(); return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); }الوظيفة السابقة، تقبل elem عنصر كمُدخل لها، أي العنصر الذي نريد التأكد من ظهوره على الشاشة في صفحة html، وبعملية المقارنة بين مكان تواجد هذا العنصر والجزئية المرئية من صفحة html، يمكن التعرف على حالة العنصر بالمقارنة مع الشاشة، يعني هل هو مرئي أم لا. وفي الأخير تُرجع الوظيفة حالة العنصر true في حالة كان ظاهراً وfalse في حالة كان العكس.
×
×
  • أضف...