-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
عليك فهم السلسلة النصية كترميز من المعلومات، كل محرف فيها يمثل معلومة، لاختصار طول السلسلة يمكن أن تقوم بإعادة ترميز للمحارف فقط، وهي عملية ضغط النص. لا يمكن احتواء نفس المعلومات ضمن سلسلة نصية أخرى أقصر بدون عمل ضغط و فك ضغط لمنع خسارة المعلومات. وفي حال قمت بترميز نص طوله 15 كنص طوله 4 سيحدث تصادم collision أي نفس النص القصير سوف يرمز لنصين أو أكثر من الطويل الأبجدية لديك فيها حرف وهو B مثلاً ، فلا يمكن توسيعها لعدم وجود محارف غير أرقام وحروف أي base 64. محاولة أخرى، جرب عمل القصر ل 36 محرف SELECT cast(column as char(36)) as char36
-
الأمر يتكون من جزأين، إضافة timestamp طابع زمني لكل منتج في قاعدة البيانات، يمثل تاريخ الإضافة و الذي سوف نحسب منه الوقت تتم هذه إما من قاعدة البيانات أو من خلال PHP تضيف الوقت الفعلي للسيفر عند إضافة منشور حساب الفرق بين الوقت الحالي ووقت إضافة المنتج ومن ثم تحويله لنص سهل القراءة يمكن عمله في BackEnd قبل إعادة بيانات المنتج (مستحسن) أو حسابه في التطبيق ( هنا ربما المنطقة الزمنية لساعة هاتف مستخدم التطبيق ستعطي وقت غير متوافق مع الخادم وبالتالي خطأ في الحساب) يمكنك استخدام مكتبة carbon فهي مكتبة قوية تدعم تعدد اللغات وسوف نستخدم دالة diffForHumans التي تعيد الوقت المنقضي بتنسيق قابل للقراءة البشرية بسهولة <?php $date = Carbon::now()->locale('ar'); echo $date->diffForHumans(); يمكنك مراجعة التوثيق لمزيد من المعلومات كما يمكن حساب الفرق بين توقيتين، ثم عمل منطق بسيط لحساب الأشهر - الساعات .. <?php // دالة تستقبل الفرق بين وقتين function format_interval(DateInterval $interval) { // بناء الوقت كنص $result = ""; // كل متغير له قيمة نضيفه مع واحدته الزمنية if ($interval->y) { $result .= $interval->format("%y years "); } if ($interval->m) { $result .= $interval->format("%m months "); } if ($interval->d) { $result .= $interval->format("%d days "); } if ($interval->h) { $result .= $interval->format("%h hours "); } if ($interval->i) { $result .= $interval->format("%i minutes "); } if ($interval->s) { $result .= $interval->format("%s seconds "); } return $result; } // حساب تاريخين $first_date = new DateTime("2012-11-30 17:03:30"); $second_date = new DateTime("2012-12-21 00:00:00"); // حساب الفرق بين التاريخين $difference = $first_date->diff($second_date); // طباعة الوقت المنقضي echo format_interval($difference); الاستخدام، تجلب وقت إضافة المنتج لقاعدة البيانات أو الحقل الذي يمثل القيمة الزمنية التي تريدها ولنفترض أن اسمه هو created_at. تطرح الوقت الفعلي من created_at ثم تمرره للدالة formate_interval مثال مع كاربون: $carbondate = Carbon::parse($post->created_at); $past = $carbondate->diffForHumans(); echo($past); مقالة:
- 1 جواب
-
- 1
-
في حال لم يتوفر ترجمة API للغة مهينة، يمكن التواصل مع جهة رسمية لتزودك بالأسماء أو تقوم بالبحث بنفسك أو تستعين بمهارات برمجية و تجربك حلول بنفسك.. حاولت مساعدتك، قمت بعمل برنامج web scraping بلغة بايثون، يعتمد على ويكيبيديا، يجلب قائمة المدن السعودية، ثم يفتح الصفحة الخاصة لكل مدينة ويجلب الاسم العربي لها، بعض المدن تحتاج لتعديل مكتوب جانبها غير متوفر.. 17 من 128 يمكنك إكمالهم المدن: { "Abha": "أَبْهَا", "Asir": "عَسِيرٌ", "Ad-Dilam": "غير متوفر", "Al-Abwa": "ٱلْأَبْوَاء", "Al Artaweeiyah": "الأرطاوية", "Al Bukayriyah": "غير متوفر", "Badr (city)": "بَـدْر", "Baljurashi": "بَـلْـجُـرَشِي", "Bisha": "بيشة", "Bareq": "بارق", "Buraydah": "بريدة", "Al Qasim": "منطقة القصيم", "Al Bahah": "ٱلْبَاحَة", "Al Bahah Province": "ٱلْبَاحَة", "Ha'il Province": "مِنْطَقَة حَائِل", "Dammam": "الدمّام", "Persian Gulf": "اَلْخَلِيْجُ ٱلْعَرَبِيُّ", "Eastern Province, Saudi Arabia": "المنطقة الشرقية", "Dhahran": "الظهران", "Dhurma": "ضرما", "Dahaban": "ذهبان", "Diriyah": "الدرعية", "First Saudi State": "الدولة السعودية الأولى", "Duba, Saudi Arabia": "ضبا", "Dumat Al-Jandal": "دُومَة ٱلْجَنْدَل", "Dawadmi": "الدوادمي", "Farasan (city)": "فرسان", "Gerrha": "جرهاء", "Ghawiyah": "غير متوفر", "Jizan": "جازان", "Al-Gwei'iyyah": "القويعية", "Hautat Sudair": "حوطة سدير", "Sudair": "سدير", "Hajrah": "الحجرة", "Haql": "مَدِيْنَة حَقْل", "Al-Hareeq": "الحريق", "Harmah": "حَرْمَة", "Ha'il": "حَائِل", "Hotat Bani Tamim": "حوطة بني تميم", "Hofuf": "ٱلْهُفُوف", "Huraymila": "غير متوفر", "Hafr Al-Batin": "حفر الباطن", "Jabal Umm al Ru'us": "جبل أم الرؤوس", "Jalajil": "غير متوفر", "Jeddah": "جِدَّة", "Red Sea": "البحر الأحمر", "Jizan Province": "جيزان", "Jazan Economic City": "مدينة جيزان الاقتصادية", "Jubail": "الجبيل", "Khafji": "رأس الخفجي", "Saudi Arabia": "ٱلْمَمْلَكَة ٱلْعَرَبِيَّة ٱلسُّعُوْدِيَّة", "Kuwait": "دولة الكويت", "Khaybar": "خَيْبَر", "King Abdullah Economic City": "مدينة الملك عبدالله الإقتصادية", "Khamis Mushait": "خميس مشيط", "Al-Saih": "الخرج", "Knowledge Economic City, Medina": "غير متوفر", "Khobar": "ٱلْخُبَر", "Al-Khutt": "غير متوفر", "Layla (town)": "لیلى", "Lihyan": "مملكة لحيان", "Al Lith": "الليث", "Al Majma'ah": "المجمعة", "Mastoorah": "غير متوفر", "Al-Mubarraz": "غير متوفر", "Medina": "مدينة النبي", "Islam": "الإسلام", "Al Madinah": "مدينة النبي", "Mecca": "العاصمة المقدسة", "Makkah Province": "مِنْطَقَة مَكَّة", "Muzahmiyya": "المزاحمية", "Najran": "نجران", "Najran Province": "نجران", "Al-Namas": "النماص", "Umluj": "أملج", "Al-Omran": "ٱلْحَسَا", "Al-Oyoon": "ٱلْحَسَا", "Qadeimah": "غير متوفر", "Qatif": "ٱلْقَطِيف", "Qaisumah": "القيصومة", "Al Qunfudhah": "القنفذة", "Qurayyat, Saudi Arabia": "القريات", "Al Jawf Province": "منطقة الجوف", "Rabigh": "رَابِغ", "Rafha": "رفحاء", "Ar Rass": "الرس", "Ras Tanura": "رأس تنورة", "Ranyah": "رنية", "Riyadh": "الرياض", "Ar Riyad Province": "منطقة الرياض", "Second Saudi State": "الدولة السعودية الثانية", "Rumailah, Saudi Arabia": "غير متوفر", "Al-Ahsa Governorate": "ٱلْحَسَا", "Sarat Abidah": "غير متوفر", "Saihat": "سيهات", "Safwa city": "صفوى", "Sakakah": "سَكَاكَا", "Sharurah": "شرورة", "Shaqraa": "شقراء", "Shaybah": "غير متوفر", "As Sulayyil": "السليل", "Taif": "الطائف", "Tabuk, Saudi Arabia": "تَبُوْك", "Tabuk Province": "مِنْطَقَة تَبُوْك", "Tanomah": "تنومة", "Tarout": "جزيرة تاروت", "Tayma": "تيماء", "Thadiq": "ثادق", "Thuwal": "ثُوَل", "Ath Thuqbah": "الثقبة", "Turaif": "طريف", "Tabarjal": "غير متوفر", "Udhailiyah": "غير متوفر", "Al-'Ula": "ٱلْعُلَا", "Um Al-Sahek": "غير متوفر", "Unaizah": "عنيزة", "Al-Qassim Province": "منطقة القصيم", "Uqair": "غير متوفر", "Uyayna": "العيينة", "Uyun AlJiwa": "محافظة عيون الجواء", "Wadi Al-Dawasir": "وادي الدواسر", "Najd": "نَجْدٌ", "Al Wajh": "الوجه", "Yanbu": "ينبع", "Al Madinah Province": "ٱلْمَدِيْنَة ٱلْمُنَوَّرَة", "Az Zaimah": "الزيمة", "Zulfi": "محافظة الزلفي", "Riyadh Province": "منطقة الرياض" } شيفرة بايثون: # import required modules from bs4 import BeautifulSoup import requests import json # get URL page = requests.get( "https://en.wikipedia.org/wiki/List_of_cities_and_towns_in_Saudi_Arabia") # scrape webpage soup = BeautifulSoup(page.content, 'html.parser') # create object cities_links = soup.table.find_all('a') # قاموس بأسماء المدن و ترجمتها dictionary = {} for city_link in cities_links: city_name = city_link.get('title') city_page = requests.get( 'https://en.wikipedia.org' + city_link.get('href')) city_soup = BeautifulSoup(city_page.content, 'html.parser') try: city_arabic_name = city_soup.find('span', {'lang': 'ar'}).text dictionary[city_name] = city_arabic_name except: dictionary[city_name] = 'غير متوفر' #print('...') with open("List_of_cities_and_towns_in_Saudi_Arabia_En_Ar.json", "w", encoding='utf-8') as outfile: json.dump(dictionary, outfile, ensure_ascii=False).encode('utf-8') index.py List_of_cities_and_towns_in_Saudi_Arabia_En_Ar.json
- 4 اجابة
-
- 1
-
هل يمكنك مشاركة ما تعيده SELECT CAST('101-01-21-4192B' as varbinary(max)) FOR XML PATH(''), BINARY BASE64
- 21 اجابة
-
- 1
-
المصممون لايكتبون أكواد HTML، بل يستعينون ببرامج التصميم Photoshop - Figma وغيرها لأن هذه البرامج قوية في عمل الرسوميات و تعديل الصور والتلاعب بالنصوص، هي اختصاصية لعمل تصاميم جميلة بطريقة سهلة ويقومون بتصدير الموقع على شكل ملف psd مثلاً. أنت كمطور واجهات أمامية مهمتك تحويل تصميم أو مخطط عام لموقع إلى شيفرات برمجية، لن تحتاج لمصمم دوماً، أغلب المواقع لها تصميم بسيط يمكنك تقليد أي تصميم موجود أو يوفر لك صاحب المشروع شرح لكيف ستبدو واجهة مشروعه، يمكن أن يرسم لك الهيكلية العامة للتصميم بيده على أقل تقدير، و تتفقون على الألوان و كيفية توزعها في الواجهة. المهم أن تتفق مع صاحب المشروع على متطلبات التصميم، وإن رأيت أن التصميم معقد يمكن أن يتم الإتفاق بجلب مصمم (أغلبها في المشاريع الكبيرة و حسب ميزانية صاحب العمل) يمكنك الإستفادة من تصاميم المواقع في الدورة التي تدرسها فإن معظم الأمور الأساسية متشابهة يتم التعديل عليها وإضافة ميزات حسب المشروع. لاحظ أن جميع مواقع الويب، مهما كان احترافياً و معقداً و جميلاً . غيرها من الصفات هو 100% مكتوب بلغتي HTML - CSS وفي حال الحاجة للتفاعلية و التحريك نستخدم جافاسكربت. الموضوع يحتاج منك للتدريب و البحث عن أمثلة لمواقع تصميمها جميل و الاستفادة من الأكواد و فهم كيف تم تنفيذ فكرة ما، ويمكن أن تبحث عن طريقة تصميم شيء ما بلغات الويب على يوتيوب إن أعجبك شيء. دورة واجهات المستخدم فيها أمثلة عن كيفية قراءة القيم من ملف فوتوشوب عن طريق البرنامج نفسه و كيفية جلب المسافات و الألوان و الخطوط وغيرها، مما يسرع في عمل مطور الواجهات الأمامية، يمكنك عمل التصاميم كما تريد، ولكن مع إشراف صاحب العمل ليكون موافقاً على النتيجة.
- 1 جواب
-
- 1
-
يمكن إعادة ترميز النص لنمط آخر، مثل Base64 وهو يحوي أحرف و أرقام .. باستعمال الطريقة التالية --String to Base64 SELECT CAST('string' as varbinary(max)) FOR XML PATH(''), BINARY BASE64 ^^^^^^ النص --Base64 to String SELECT CAST( CAST( 'c3RyaW5n' as XML ).value('.','varbinary(max)') AS varchar(max) ) ^^^^^^^^ ناتج الجزء الأول المشفر أو الشيفرة التالية: declare @source varbinary(max), @encoded varchar(max), @decoded varbinary(max) -- مدخلات و مخرجات set @source = convert(varbinary(max), 'Hello From Hsoub') -- نص نريد تشفيره set @encoded = cast('' as xml).value('xs:base64Binary(sql:variable("@source"))', 'varchar(max)') -- نص مشفر set @decoded = cast('' as xml).value('xs:base64Binary(sql:variable("@encoded"))', 'varbinary(max)') -- فط التشفير -- استعلام يعمل على جدوللترميز و فك الترميز select convert(varchar(max), @source) as source_varchar, @source as source_binary, @encoded as encoded, @decoded as decoded_binary, convert(varchar(max), @decoded) as decoded_varchar في حال أردت ضغط النص: تقدم SQL server دالتين لضغط و فك ضغط النصوص وهما بالشكل العام التالي COMPRESS ( expression ) DECOMPRESS ( expression ) مثال للتنفيذ: SELECT COMPRESS ('WELCOME To Hsoub') AS Compressed_Value سوف تنتج التعليم السابقة نص مشفر مضغوط. لفك الضغط، نستعمل الدالة المعاكسة مع تمرير ناتج الدالة الأولى لها SELECT DECOMPRESS (0x1F8B0800000000......) AS Decompressed_Value // ^^^^^^^^^^^^^^^^^^^^^ Compressed_Value WELCOME To Hsoub سوف يتم إعادة النص الأول وهو WELCOME To Hsoub كناتج فك الضغط. يمكنك تجريب هذه الدالة تستخدم خوارزمية GZIP لضغط السلاسل النصية. إن مفهوم ضغط النصوص أمر يتعلق بخوارزمية الضغط و تكرار المحارف ضمن النص نفسه حيث كلما زاد تكرار الحروف يزداد معدل الضغط و ينقص حجم النص المضغوط الناتج يمكن ألا يكون النص المضغوط دوماً أصغر من النص الأصلي
-
عليك ذكر أي تفاصيل تساع على اختيار الحل الأمثل للمشكلة، ماذا سوف يفيدك النص المختصر؟ وضعه على باركود فقط؟ لأي هدف؟ تصويره من هاتف و جلب بيانات ما أو ماذا
-
هل الغرض هو الحماية و تشفير معرف المنتجات؟
-
طيب ما لغة البرمجة التي تعمل BackEnd أرجو ذكر تفاصيل أكثر
-
أين تريد استخدام هذا المنطق ولأي لغة برمجة؟
-
هل يمكنك تحديد الهدف من الخوارزمية؟ وهل تقصد أنك تريد ضغط النص و جعل منه نص أصغر و بإمكان النص الصغير الدلالة على النص الكبير؟
-
من الأفضل التحقق من أن الحقول التي أرسلها التطبيق أو HTML FORM تحوي بيانات وغير فارغة، نستعمل الدالة isset للتحقق من وجود بيانات ضمن الحقل., وأن القيمة نفسها غير فارغة نعمل trim لحذف الفراغات التي من الممكن أن يرسلها المستخدم أو تمر عن طريق الخطأ <?php $id = $_GET['id']; $IDCat = $_GET['IDCat']; if ( isset($id) && trim($id)!= "" && isset($IDCat) && trim($IDCat)!= "" ) { // code } else { // error بيانات ناقصة } ملاحظة: يمكن استعمال الدالة empty ولكنها تعتبر 0 مثلاً قيمة فارغة و أحيانا نريد تمرير 0 أو False لذلك نتوخى الحذر و نتأكد لكل قيمة حسب نوعها أيضاً empty, تعتبر كل شيء من التالي فارغ empty: "" (an empty string) 0 (0 as an integer) 0.0 (0 as a float) "0" (0 as a string) NULL FALSE array() (an empty array) var $var; (a variable declared, but without a value in a class) في حال عدم تمريرك لأي من القيم السابقة يمكن عمل التالي: <?php $id = $_GET['id']; $IDCat = $_GET['IDCat']; if ( !empty($id) && !empty($IDCat) ) { // code } else { // error بيانات ناقصة } مع العلم استخدام IF في مثالك يتحقق من قيمة واحدة وهو كاف
- 2 اجابة
-
- 1
-
مرحبا أحمد، يمكن استخدام الجملة الشرطية IF حيث نقوم بإسناد قيمة لخانة الحالية في حال تحقق شرط ما وإلا نضع قيمة فارغة مثال للشرط: =IF(H6>=I6,H6-I6,"") التنفيذ و الملف: المصنف1.xlsx
- 45 تعليقات
-
- if
- الدالة الشرطية
-
(و 3 أكثر)
موسوم في:
-
من الصورة لم يتعرف على الأمر، يتوجب عرض الملفات المضافة بعد نهاية الأمر. للتأكد من الملفات المضافة للمستودع المحلي اكتب الأمر git ls-files أو git ls-tree --full-tree -r --name-only HEAD ولم يتعرف على هذه حاول إضافة الملفات بالاامر git add --all * ثم commint -m حرف صغير للتجريب
- 3 اجابة
-
- 1
-
تمام، إذاً يمكنك عمل watermark على الصور من التطبيق أو الخادم، ضمن التطبيق يمكن الاعتماد على حزم برمجية لتعديل الصور مثل stamp_image void generate() { StampImage.create( context: context, image: imageFile, // الصورة children: [ Positioned( bottom: 0, right: 0, child: _watermarkItem(), // العلاقمة المائية ), Positioned( top: 0, left: 0, child: _logoFlutter(), // لوغو تطبيقك مثلاً ) ], onSuccess: (file) => resultStamp(file), // تصدير الملف ); } أو مكتبة image_watermark يوجد أمثلة في التوثيق، مثلاً إن كنت تريد إضافة نص كالتالي: var watermarkedImg = await image_watermark.addTextWatermarkCentered( imgBytes, // صورة 'watermarkText', // نص ); وطريقة إضافة صورة watermarkedImgBytes = await image_watermark.addImageWatermark( imgBytes, //image bytes صورة أصلية imgBytes2,//watermark img bytes صورة مائية أو لوغو imgHeight: 200, //watermark img height imgWidth: 200, //watermark img width dstY: 400, dstX: 400);
- 3 اجابة
-
- 1
-
أرجو مشاركة صورة للخطأ الذي يظهر ومزيد من التفاصيل يمكنك الاطلاع على المقالة التالية و اتباع خطوات التنصيب وطرح سؤال مع تفاصيل الخطأ إن ظهر مشكلة مشابهة يمكنك الاستفادة منها:
-
أرجو مشاركة كيف تظهر النتيجة و كيف تريدها أن تظهر مع طباعة المتغير $d1 لأنه حسب تشكليه يمكن تحويل النص لمصفوفة يمكن أن تستخدم الدالة explode إن كانت السللسة عبارة عن أرقام بينها فاصلة مثلاً DELIMITER هو المرحف الفاصل بين القيم explode("DELIMITER", STRING); $d1 = explode(",", $d1); أو json_decode إن كانت على شكل عنصر JSON أو مصفوفة جافاسكربت $d1 = json_decode($d1);
-
أرجو مشاركة الحل ليستفيد من يقرأ هذا السؤال. هل قمت بتغيير نمط ترميز قاعدة البيانات لتصبح داعمة لترميز utf8 ؟ أو ضمن Excel من تبويب Data نختار utf8
- 16 اجابة
-
- 1
-
سبب المشكلة هو تحديد طول افتراضي لحقل الإيميل بشكل كبير، فهذا يؤثر على عمل الفهرسة و اختبار تكرار السلاسل النصية للبريد الإلكتروني عند إضافة بريد جديد خاصة مع إضافة القيد unique لمنع التكرار (البحث ضمن القاعدة يأخذ وقتاً ونريد تقليله قدر الإمكان) وهذا يعمل فهرسة لقاعدة البيانات و زيادة الحجم غير محبذة و يسبب بطئ في عملية المعالجة.. حيث أن الفهارس يفترض أن تزيد سرعة المعالجة وليس تقليلها. يمكن لأي تعديل في المشروع أن يظهر أخطاء جديد لأن الكثير من الأمور مرتبطة ببعضها، لا مشكلة بذلك يمكن حل المشكلة في تعديل الملف بزيادة الطول المسموح للنوع String /app/Providers/AppServiceProvider.php نضيف التضمين التالي: use Illuminate\Support\Facades\Schema; وضمن دالة boot: public function boot() { Schema::defaultStringLength(191); } ثم يمكنك إعادة عمل التهجير و بذر البيانات. كما يوجد حلول أخرى يمكنك البحث عن رسالة الخطأ وتجريبها. من هذه الحلول تغيير ترميز البيانات ل utf8 config/database.php نعدل 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', to 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', أو تعديل محرك قواعد البيانات: config/database.php تبديل 'engine' => null', مع 'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', ثم للحلين السابقين تنفيذ الأمر php artisan config:cache لسبب تعديل ملف ضمن الإعدادات config. والتوثيق الرسمي يشرح نفس الحل من: laravel migrations creating-indexes
-
في لغة جافاسكربت عند عمل render ل object أي تحويله لسلة نصية سيتم طباعة العبارة [object Object] الحل هو استخلاص القيمة من كائن الحدث v بالشكل <textarea value={value} onChange={(v)=>setValue(v.target.value)}> // ^^^^^^^^^^^^^ </textarea> في حال أردت زيادة تعقيد دالة إسناد القيمة و عمل تعديلات على القيمة و فلترتها مثلاً، يمكنك فصل دالة المعالجة إلى handler منفصل، وتصبح الشيفرة أكثر قابلية للقراءة const handleChange = (event) => { setValue(event.target.value); }; /* */ <textarea value={value} onChange={handleChange}> // ^^^^^^^^^^^^^ </textarea>
- 1 جواب
-
- 1