لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 12/21/23 في كل الموقع
-
هل من شارح لي كيف يمكنني برمجة تسجيل الدخول والخروج في React؟ كيف ستكون الآلية؟ إذا تصورنا أن هناك API تأتي مني بيانات مع JWT فكيف علي حفظ ال token في React؟ هل ممكن تبسيط الأمر باستخدام مكتبات جاهزة مثلا؟ مشكورين من قبل2 نقاط
-
يمكنك تنفيذ ذلك باستخدام Redux , هذا مثال كامل يوضح ما ترديه تماماً : أولاً نقوم بإنشاء actions لتعريف login و logout apis و استخدام jsonwebtoken لنقوم بعمل decode للتوكين المستقبل من api . أيضاً لاحظ لاستخدامنا لdispatch لنتمكن من حفظ التوكين في redux slice الذي سوف نقوم بإنشاءها بملف reducer: // actions.js File import axios from 'axios'; import jwtDecode from 'jsonwebtoken'; export const login = (username, password) => async (dispatch) => { try { const response = await axios.post('/api/login', { username, password }); const token = response.data.token; const decodedToken = jwtDecode(token); dispatch({ type: 'LOGIN', payload: { token, user: decodedToken }, }); } catch (error) { console.log(error); } }; export const logout = () => (dispatch) => { dispatch({ type: 'LOGOUT', }); }; ومن ثم نقوم بإنشاء ملف reducer : // reducer.js File const initialState = { isAuthenticated: false, token: null, user: null, }; const reducer = (state = initialState, action) => { switch (action.type) { case 'LOGIN': return { ...state, isAuthenticated: true, token: action.payload.token, user: action.payload.user, }; case 'LOGOUT': return { ...state, isAuthenticated: false, token: null, user: null, }; default: return state; } }; export default reducer; ومن ثم نقوم بإنشاء store الخاص بredux. // store.js File import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; import reducer from './reducers'; const store = createStore(reducer, applyMiddleware(thunk)); export default store; والان بعد انشاء redux وحفظ التوكين , يمكننا استخدامها في ملفات login و logout. Login : import React, { useState } from 'react'; import { useDispatch } from 'react-redux'; import { login } from '../redux/actions'; const Login = () => { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const dispatch = useDispatch(); const handleLogin = () => { dispatch(login(username, password)); }; return ( <div> <h2>Login</h2> <input type="text" placeholder="Username" value={username} onChange={(e) => setUsername(e.target.value)} /> <input type="password" placeholder="Password" value={password} onChange={(e) => setPassword(e.target.value)} /> <button onClick={handleLogin}>Login</button> </div> ); }; export default Login; Logout : import React from 'react'; import { useDispatch } from 'react-redux'; import { logout } from '../redux/actions'; const Logout = () => { const dispatch = useDispatch(); const handleLogout = () => { dispatch(logout()); }; return ( <div> <h2>Logout</h2> <button onClick={handleLogout}>Logout</button> </div> ); }; export default Logout;1 نقطة
-
1 نقطة
-
من الأفضل حذف نسخة Node.js القديمة تمامًا uninstall ثم تثبيت النسخة الجديدة والتي يمكنك تحميلها من هنا: https://nodejs.org/en ودائمًا اختر النسخة المستقرة وهي LTS وهي إصدار 20 حاليًا. لكن هناك طريقة أفضل والتي يستخدمها مطوري Node.js لكن البعض قد يجدها معقدة قليلاً، وهي استخدام مدير إصدارات وهو NVM بمعنى أنه يمكنك تحميل أكثر من إصدار لـ Node والتنقل بينهم بكل سهولة باستخدام أمر بسيط. والأمر يتم كالتالي حذف أي إصدار Node.js لديك على حاسوبك من لوحة التحكم Control panel ثم تحميل وتثبيت NVM من: https://github.com/coreybutler/nvm-windows/releases/download/1.1.12/nvm-setup.exe وبعد التثبيت قم بتنفيذ الأمر التالي في منفذ الأوامر: nvm install lts وذلك من أجل تثبيت أحدث إصدار مستقر متوفر. أو يمكنك تحميل إصدار معين من خلال: nvm install 18 ثم قم بعرض الإصدارات الذي تم تثبيتها من خلال: nvm ls ولتفعيل إصدار معين اكتب رقمه فقط كالتالي: nvm use 18 والآن أنت على إصدار 18 وتستطيع التأكد من خلال: node --version وإذا أردت التنقل إلى أي إصدار اكتب nvm use ورقم الإصدار بجانبه.1 نقطة
-
الطريقة الأبسط والأسهل هي تنزيل النسخة الموزعة الأخيرة من الموقع الرسمي وتثبيتها بطريقة اعتيادية. قم بتنزيل أحدث إصدار من Node.js من الموقع الرسمي: Node.js Downloads. اختر إصدارا مستقرا (LTS) إذا كنت ترغب في الحصول على إصدار يتم دعمه لفترة طويلة، أو اختر أحدث إصدار إذا كنت ترغب في استخدام أحدث الميزات. أما كطريقة أخرى، هي باستخدام مدير حزم Node أو بما يعرف بـ NVM، وهو مكتبة تنفيذية تساعدك في التبديل بين نسخ Node ببساطة. وهو بشكل أساسي متوفر لأنظمة Linux ولكن يوجد اصدار منه للويندوز يمكنك الوصول إليه من هنا. ولتثبيته ما عليك إلا اتباع الخطوات: قم بتنزيل ملف التثبيت من على الموقع الرسمي أو من هنا. قم بتشغيل ملف التثبيت واتبع خطوات التثبيت حتى آخرها. الآن يمكنك التبديل بين نسخ Node بشكل عادي: nvm use 14.0.0 .1 نقطة
-
الأمر بسيط، عملية تسجيل الدخول والخروج في رياكت متعقلة بإرفاق رمز token في الطلبيات المرسلة الى الخادم، فمتى ما غاب هذا الرمز عن الطلبيات تم رفض اتمام الطلبية، نفس المنطق وراء حجب او اظهار بعض الصفحات أو المكونات في رياكت. ولهذا سوف يمكن التحكم في عملية تسجيل الدخول والخروج بناء على حضور هذا الرمز في التطبيق أو مرفقا في ترويسات الطلبيات المرسلة للخادم. لنقل أنه يتم استقبال رمز jwt عند ارسال طلبية تسجيل الدخول الى الخادم، بعد ذلك سيتم حفظ هذا الرمز في التخزين المحلي localeStorage لتطبيق رياكت. لاحقا، سيتم التحقق مما ان كان رمز jwt موجودا في localeStorage أو لا، فإن كان: تم عرض الصفحة أو قبول التوجيه اليها. وفي حال ما لم يكن، لم يتم عرضها ولم يتم قبول التوجيه اليها. في نفس الوقت، يتم اضافة رمز jwt المخزن في localeStorage الى كل طلبية مرسلة الى الخادم في ترويسة Authorization ليتم توثيق الطلبيات من قبل الخادم. وبالنسبة لتسجيل الخروج، فستكون العملية أبسط. اذ سنقوم فقط بمحو هذا الرمز من على التخزين المؤقت، ولن يمكن للمستخدم اعادة تسجيل واحد جديد إلا لما يعيد عملية تسجيل الدخول من جديد.1 نقطة
-
المشكلة هنا تحدث بسبب وجود قيم None في الأعمدة المراد مقارنتها. عندما تحاول مقارنة None مع رقم عن طريق > فإنه لن يسمح بذلك لأن None ليست قيمة رقمية. هناك عدة طرق لحل هذه المشكلة: 1- استبدال قيم None بقيمة أخرى مثل 0 قبل عملية المقارنة: Table.fillna(0, inplace=True) 2- تجاهل الصفوف التي تحتوي على None: Table = Table[Table[col1].notna() & Table[col2].notna()] نعم يمكن تعديل الكود لتطبيق الشرط المطلوب: # ايجاد اكبر قيمة بين العمودين 14 و 15 max_col = Table.iloc[:, [14,15]].max(axis=1) # تطبيق الشرط Table['3أكبر_قيمة'] = max_col.apply(lambda x: Table.iloc[:, 14] if 0 < x < 50 else x ) نقوم بإيجاد أكبر قيمة بين العمودين رقم 14 و 15 في DataFrame المسمى `Table`. ثم نقوم بإضافة عمود إلى DataFrame يسمى '3أكبر_قيمة'. ثم نطبق دالة (function) على كل قيمة في `max_col`. الدالة هنا هي `lambda x: Table.iloc[:, 14] if 0 < x < 50 else x`. إذا كانت القيمة `x` بين 0 و50، فإن القيمة المطلوبة تكون `Table.iloc[:, 14]` (قيمة في العمود 14). إذا لم تكن تلبي هذا الشرط، يتم استخدام القيمة الأصلية `x`.1 نقطة
-
لقد قمت بشراء دورة ال PYTHON ولا اجدها في الدورات الخاصة بي1 نقطة
-
حسنا اخي يمكنك استخدام داله apply في مكتبه pandas بمساعده داله lambda وتعديل سطر الكود لهذا df['أكبر_قيمة'] = df.iloc[:, 2:5].max(axis=1).apply(lambda x: 50 if x > 50 else x) نحن هنا اضفنا شرط لو كانت القيمه الكبري اكبر من 50 ستظل 50, لكن لو اصغر سياخذ القيمه الكبري حل اخر يمكنك استخدام for loop سيتكرر هذا الكود لكل صف في الداتا يقوم أولاً بحساب القيمه الكبري مثل الكود السابق وتخزينها في عمود "أكبر_قيمة". ثم يتكرر فوق هذا العمود ويستبدل أي قيمة أكبر من 50 بـ 50. يمكنك اضافه هذا الكود بعد مباشره تكوين عمود 'أكبر_قيمة' for i in range(len(df['أكبر_قيمة'])): if df['أكبر_قيمة'].iloc[i] > 50: df['أكبر_قيمة'].iloc[i] = 501 نقطة
-
رائع أخي لو سمحت لدي سؤال أخر بنفس النمط السابق أحتاج أن أستخدم دالة if حيث مثلا عند استخدام max بين عمودين ووجدت القيمة أكبر من 50 مثلا أريد أن يتجاهل القيمة الكبرى ويطبع مكانها 501 نقطة
-
تتعرف نواة Kernel نظام التشغيل سواءً كان Mach، أو BSD، أو لينكس Linux، أو NT على كافّة التجهيزات والعتاد المتصلة بالحاسوب عند إقلاعه باستخدام برنامج رئيسي، وتمكّنها من التواصل مع بعضها بعضًا، كما تضمن عملها على نحوٍ متناغم؛ إذ تؤدّي مجموعة التعليمات الرئيسية هذه مجموعةً من المهام، مثل إبقاء الحاسوب في حالة تشغيل وبوضعٍ آمن من خلال تشغيل مراوح التبريد دوريًا لتجنّب زيادة درجة الحرارة مثلًا، إضافةً لاستخدامها أنظمةً فرعيةً مسؤولةً عن مراقبة مساحة القرص الصلب أو التنبّه عند وصل أجهزة جديدة بالحاسوب وغيرها من العمليات. ولكن ليس هذا جلّ ما يفعله الحاسوب، وإلا كانت أهميته مثل أهمية الفرن في المنزل. أدرك علماء الحواسيب مبكرًا أهمية جعل البشر قادرين على التفاعل مع الحاسوب متى أرادوا ذلك، لذا طوروا صدفةً Shell خاصّةً بالحواسيب العاملة على نظام يونكس Unix؛ إذ تعمل هذه الصدفة خارج النواة أو حولها مثل مبدأ الصدفة في الطبيعة، وقد شكّلت هذه الصدفة تطورًا مهمًا في الوقت الذي كان الناس فيه يوجهون الأوامر للحواسيب باستخدام البطاقات المثقبّة، وتعدّ Bash واحدةً من أكثر الصدفات shells شعبيةً وأكثرها فعاليةً وسهولةً. باش Bash هو تطبيق عندما تفتح طرفيةً Terminal تُشغِّل صدفة باش، مثل GNOME Terminal، أو Konsole في نظام لينكس، أو iTerm2 في نظام ماك، أو إس macOS، فسُيرَحب بك غالبًا من خلال محث prompt؛ والذي يكون عادةً رمزًا وهو إشارة ($)، والذي يعني أن الصدفة بانتظارك لإدخال أمر. ولا بُد بالتأكيد من معرفة ما عليك كتابته من أوامر، وهذه الأوامر موضوعٌ مستقلٌ تمامًا كما سنرى. قد يكون التعبير التالي غير لطيف، إلّا أنّه يمثّل بدقة عدّة دلالاتٍ متعلقّة بمصطلح باش؛ إذ لا يميز كثيرٌ من المستخدمين الجدد بين مفهوم باش ومفهوم لينكس أو يونكس؛ فبالنسبة لهم باش هو الشاشة السوداء ذات الكتابة الخضراء التي تُكتب فيها الشيفرة اللازمة لإعطاء الأوامر للحاسوب. هذا المفهوم فيه خلطٌ ما بين صدفة باش والأوامر التي نكتبها داخل الصدفة، ومن المهم فهم أنهما مفهومان مستقلان؛ إذ أنّ باش مجرّد تطبيقٍ مهمته الرئيسية تشغيل التطبيقات الأخرى ضمن نفس النظام (من خلال أوامر). إذًا، يمكنك تعلّم باش في سياق تعلّم نظام التشغيل الذي يعمل عليه، ولكن لا يمكنك استخدامه فعليًا ما لم تتعرف على الأوامر. أوامر نظام لينكس تُخزَّن معظم الأوامر افتراضيًا في مجلدات النظام في الأنظمة المعتمدة على يونكس ولينكس (نظام BSD و macOS) في مساراتٍ، مثل "usr/bin/" و "bin/"، ولا تتعدى معرفة باش بهذه الأوامر لمعرفتك باللغة السنسكريتية، ولكن كما بإمكانك البحث وترجمة أي كلمة من اللغة السنسكريتية، يمكن لـلغة باش البحث عن الأوامر؛ فعند كتابتك لأمرٍ ما يبحث باش ضمن مسارات مجلدات محدّدة في نظامك ليرى ما إذا كان هذا الأمر موجودًا وعندها ينفذّه. تمثّل كلمة Bash بحد ذاتها أحد الأوامر، وهو الأمر الذي ينفّذ افتراضيًا عندما تفتح الطرفية أو عند دخولك إلى محرر نصوص الطرفية Console (وهو جهازٌ حقيقي أو وهمي يستقبل الرسائل والتنبيهات من النواة ويسمح بتسجيل الدخول بوضع المستخدم الوحيد). يمكنك معرفة مكان تخزين أي أمرٍ بما في ذلك الأمر Bash على نظامك باستخدام الأمر which في الطرفية على النحو التالي: $ which bash /usr/bin/bash $ which ls /usr/bin/ls تُبنى بعض الأوامر داخليًا ضمن باش نفسه، وتكون معظم الأوامر داخلية البناء خاصّةً بالبرمجة النصيّة لباش أو لإعدادات البيئة منخفضة المستوى، إلّا أنّ استخدام بعضٍ منها مفيدٌ في الوظائف العامّة، مثل الأمر cd الخاص بتغيير مسار المجلدات change directory. لا تظهر الأوامر داخلية البناء عندما تبحث عنها لأنّها غير موجودةٍ في مسار التنفيذ الاعتيادي: $ which bash which: no cd in (/usr/local/bin:/usr/bin:/bin: [...] إلّا أنّ عدم العثور عليها في البحث لا يعني عدم توفرها، فهي مبنيةٌ ضمن باش الذي تشغلِّه أصلًا. تشغيل باش توفّر معظم توزيعات لينكس ويونكس صدفة باش افتراضيًا، نظرًا لكون باش معروفٌ وشعبي جدًا، إضافةً لامتلاكه كثيرًا من الوظائف المريحة التي لا توفرّها الصدفات الأخرى؛ إلّا أنّ بعض الأنظمة توفّر حافظةً أُخرى افتراضيًا؛ ولمعرفة فيما إذا كانت الحافظة لديك من نوع باش، ما عليك سوى استخدام الأمر echo مع متغير variable خاص يُظهر اسم العملية المنفّذة حاليًا: $ echo $0 bash إذا كان باش غير متوفّر لديك ورغبت بتجربته، فمن الممكن تنزيله وتثبيته من مركز إدارة البرمجيات لديك، أو بإمكانك استخدام مدير الحزم Chocolatey إذا كان نظام التشغيل لديك ويندوز Windows؛ أو Homebrew في حال كان نظامك ماك أو إس؛ وفي حال فشل كل الطرق السابقة، فلا بُد من زيارة الصفحة الرئيسية لباش على الإنترنت للحصول على مزيدٍ من المعلومات. العمل في باش واجهة باش متوفرّةٌ في حاسوبك، فهي ليست حكرًا على مديري الخوادم أو المبرمجين، كما أنها قادرةٌ على أن تحل محل سطح مكتبك وتطبيقات تحرير النصوص والرسوميات وغيرها؛ إذ يستخدم الأشخاص باش أكثر من استخدامهم لتطبيقات سطح المكتب. يوجد المئات من التعليمات المتاحة لأنظمة لينكس ويونكس التي ستفاجئك بتنوعها؛ إذ يمكنك مثلًا باستخدام باش اقتصاص وإعادة تعيين حجم صورة دون فتح الصورة ضمن عارضٍ أو محرر صور: $ mogrify -geometry 1600^x800 \ -gravity Center \ -crop 1600x800+0+0 myphoto.jpg يمكنك تشغيل الموسيقى باستخدام أمرٍ، مثل ogg123، أو mpg321؛ أو تحويل الصوت باستخدام الأمر sox؛ أو تعديل وتحرير الفيديوهات باستخدام ffmpeg؛ أو تحرير النصوص باستخدام emacs، أو vim؛ أو التحقق من رسائل البريد الإلكتروني باستخدام pine أو mutt؛ أو تصفّح الإنترنت باستخدام elinks؛ وكذلك تصفّح الملفات باستخدام ranger أو midnightcommander، وغيرها، إذ يوفِّر باش كل هذه الإمكانات باستخدام الأوامر التي ستجدها في نظامك أو في مستودع البرمجيات الخاص بك. برمجة باش النصية أحد أهم أسباب كون باش ونظام لينكس ككل فعّالًا هو كونه قابلًا للبرمجة والتوسع إذ يمكنك كتابة تعليمات جديدة ضمن باش يدويًا، أو من خلال إنشاء قائمةٍ ضمن ملف نصي عادي وسيشغلها باش؛ فبدلًا من قضاء ساعات في كتابة وتنفيذ مئات التعليمات، يمكنك كتابة التعليمات في ملف نصي عادي وترك الأمر لحاسوبك لتنفيذها مرارًا وتكرارًا. ونظرًا لتنفيذ معظم العمليات في لينكس ضمن صدفة باش، فمن الممكن تقريبًا تنفيذ أي أمرٍ في لينكس باستخدام البرمجة النصية (سكربتات) في باش، مع وجود بعض الاستثناءات (فمثلًا قد يكون لدى تطبيقات الرسومات لغة برمجةٍ نصيةٍ خاصّةٍ بها، أو قد لا تمتلك لغة برمجة نصية أصلًا). سيفتح استخدام البرمجة النصية في نظام التشغيل الخاص أمامك آفاقًا لتنفيذ عشرات آلاف الإجراءات على حاسوبك دون تكبُّد عناء تنفيذ ذلك يدويًا. من غير الممكن إذًا تخمين التوفير في كمية العمل الذي يقدمه لينكس لمستخدميه؛ إذ أن هذا التوفير الكبير لا يأتي من فكرة أتمتة الأعمال التقليدية، وإنمّا من أتمتة أعمال لم يعتقد أحد سابقًا أنها بحاجة للأتمتة، مثل إمكانية إنشاء منهجية عمل مفصّلة خاصّة بك. عندما يقول المستخدمون المتمرسّون أنّهم يريدون تعلّم باش دون تعلّم أوامر لينكس، فهم يقصدون غالبًا أنّهم يريدون تحسين طريقة كتابة الأوامر. ينقل النص البرمجي التالي مثلًا ملفًا مؤقتًا (وهو ملف مُنشأ بعملية أخرى منفصلة) إلى مسار محدّد: #!/usr/bin/bash cp tmp.png ~/public_html/`date +%Y%m%d`.png يمكنك التحقّق من هذا الأمر من خلال نسخ السطر الأخير (الأمر الذي يبدأ بـ cp) إلى طرفية، حيث سيعمل هذا الأمر في حال وجود ملفٍ يُدعى tmp.png ومسار مجلد يُدعى ~/public_html. إذًا، يعتمد تعلُّم باش على فهم كيفية تحويل أمرٍ بسيط كهذا إلى عملية أتمتة فعلية؛ فلن يعمل النص البرمجي مثلًا في حال عدم توفّر الملف "tmp.png"؛ وعلى فرض أنّ هذا النص البرمجي مكوّنٌ أساسيٌ لمدونةٍ تتطلب صورةً جديدةً يوميًا لإنشاء صورة ترويسة مخصّصة، ففي هذه الحالة سيكون عدم تنفيذ النص البرمجي ذا تأثيرٍ كارثي على كل أجزاء المدونة. يستطيع المُستخدم الذي يعرف باش إضفاء المرونة على نصه البرمجي باستخدام بناء التعليمات في باش. #!/usr/bin/bash IMG="tmp.png" [[ -e tmp.png ]] || IMG="generic.png" cp ~/"${IMG}" ~/public_html/`date +%Y%m%d`.png يُعَد هذا مجرّد مثالٍ وحيد لعملية تعلّم كتابة النصوص البرمجية في باش، إلّا أنّه يوضّح حقيقة كون تعلّم كل من باش ولينكس مفيدًا بنفس الدرجة، وهي عملية متكاملة ولا يمكن عدُّ كلٍ منهما مهمّةً مستقلة. نقاط قوة باش تُعَد باش صدفةً فعّالةً مثل غيرها، إلّا أنها تمتاز بوجود عدة دوالٍ مريحة، مثل استخدام الأقواس المزدوجة ([[ و]]) في الترميز البرمجي، وهذه التفاصيل الخاصّة بـها هي المفضّلة لدى مستخدميها، لأنّهم يتجنبون بناء الجمل الطويل المُربك كما في الصدفات الأُخرى، مثل tcsh أو ash؛ إلّا أنّ هذه التعليمات الخاصّة بباش قد تسبّب مشاكل في التوافق عند استخدامها على الأنظمة التي لا تستخدمه، ولكن بما أنّ باش مجاني ومفتوح المصدر، فبإمكان أي مستخدمٍ تثبيته عند الحاجة لاستخدامه، وتفرض مشكلة عدم التوافق هذه فقط اعتمادًا إضافيًا على باش دون منع أي أحدٍ من استخدام البرمجة النصية. ترجمة -وبتصرف- للمقال What is Bash? من موقع opensource.com. اقرأ أيضًا إذا أردت تعلّم باش يمكنك الاطلاع على توثيقها التفصيلي في موسوعة حسوب، كما ننصحك بالإطلاع على المقالات التالية: ما هو سطر الأوامر؟ دليل ميَسَّر لكتابة سكربتات Shell سلسلة مدخل إلى كتابة سكربتات الصدفة كيفية استعمال ميزة التحكم بالوظيفة (Bash's Job Control) لإدارة عمليات الخلفية وعمليات المقدمة في لينكس1 نقطة
-
بينما يستخدمُ الأفراد البرمجيات المرتبطة بإنتاجية الشركة، مثل معالِج النصوص وجداول البيانات وبرامج الرسوميات لتنفيذ مجموعة متنوعة من المهام، .يقعُ العمل المرتبط بإدارة معلومات الشركة ضمن نطاق نُظُم المعلومات الإدارية Management Information Systems، ويُقصَد بها المستخدمون، والأجهزة، والبرمجيات، التي تدعم جميعُها عمليةَ اتخاذ القرارات، حيث تجمعُ نُظُم المعلومات البيانات الرئيسة للشركة، وتُخزِّنُها، وتُنتِجُ المعلوماتِ التي يحتاج إليها المديرون لأغراض التحليل، والرقابة، واتخاذ القرارات. تستخدم المصانعُ نُظُمَ المعلومات الحاسوبية لأتمتة عمليات الإنتاج، وتنظيم المخزون ومراقبته، كما تستعين معظمُ الشركات بتلك النُظُم لمعالجة طلبات الزبائن، وللتعامل مع إعداد الفواتير والمدفوعات التي تُمنَح للمورِّدين أو البائعين. أما البنوك، فتستخدم مجموعة متنوعة من نُظم المعلومات لمعالجة المعاملات المصرفية، مثل الإيداعات وعمليات السحب من الصرافات الآلية ومدفوعات القروض، كما تتضمن معظمُ التعاملات الاستهلاكية نُظُمَ معلوماتٍ، فعندما تشتري من سوبر ماركت، أو تحجز غرفةً فندقية، أو تُحمِّل موسيقى، من على الإنترنت، تُسجِّل نُظمُ المعلوماتِ تلك المعاملات التجارية، وتتعقَّبُها، وتحوِّلُ البيانات إلى الجهات أو الأماكن ذات الصلة. تمتلك الشركاتُ -عادةً- أنواعًا متعددة من نُظُمِ المعلومات، بدءًا بالنُظم التي تُعالج المعاملاتِ التجارية، وتُعدُّ نُظُم الدعم الإداري Management Support Systems ذات طبيعة مرنة (ديناميكية) تتيح للمستخدمين تحليل البيانات لإجراء توقُّعات، وتحديد التوجهات التجارية الحديثة، ونمذجة استراتيجيات العمل التجاري، وتعزز نُظُمُ أتمتة المكاتب Office Automation Systems انسيابيةَ التواصل عبر المؤسسة، ويختص كل نوع من نُظُم المعلومات بمستوى معين من مستويات اتخاذ القرارات: العملياتي، والتكتيكي، والاستراتيجي، وتُظهِر الصورة 13.6 العلاقة ما بين معالجة المعاملات التجارية Transaction Processing ونُظم الدعم الإداري Management Support Systems، إلى جانب مستويات الإدارة التي تُخدِّمها تلك النظمُ. فلنلقِ نظرةً تفصيلية على كيفية استخدام الشركات والمديرين، نُظُمَ معالجة المعاملات ونظم الدعم الإداري لإدارة المعلومات. نظم معالجة المعاملات يبدأ نظامُ المعلومات المتكاملة Integrated Information System لشركةٍ ما بنظام معالجة المعاملات Transaction Processing System. ويتلقى هذا النظام بياناتٍ أولية من مصادر داخلية وخارجية، وُيحضِّرُها للتخزين ضمن قاعدة بيانات مشابهة لتلك الموجودة في الحواسيب الدقيقة Microcomputers، ولكنها أكبر منها بكثير، وفعليًا، يجري تخزين بيانات الشركة الرئيسة ضمن قاعدة بيانات واحدة ضخمة، تُصبح مصدرَ معلومات الشركة المركزي، ومثلما أشرنا سابقًا، يسمح نظامُ إدارة قاعدة البيانات Database Management System للمستخدمين باستعلام قاعدة البيانات بشأن المعلومات التي يحتاجون إليها، كما إنه يتعقّبُ البيانات. الصورة 13.6: نظام المعلومات المتكاملة لشركة ما (حقوق الصورة محفوظة لجامعة رايس Rice، أوبن ستاك OpenStax). ويمكن تحديثُ قاعدة البيانات بإحدى طريقتين، هما: المعالجة بالدفعات Batch Processing، التي تُجمَع البياناتُ وفقًا لها على مدى فترة زمنية محددة، والمعالجة عبر الإنترنت، أو في الوقت الحقيقي Online, Real-Time Processing، التي تعالج البيانات حالَ توفُّرِها، وتستخدمُ المعالجةُ بالدفعات مصادرَ الحاسوب بفاعلية كبيرة، وتناسب جيدًا تطبيقاتٍ مثل معالجة كشوف الرواتب التي تتطلب معالجةً على فترات محددة، وليس معالجة مستمرة، أما المعالجة عبر الإنترنت Online Processing، فُتبقي بياناتِ الشركة في حالة تدفُّقٍ، فعندما تحجز عبر الإنترنت لرحلة في الطائرة، تُدخَلُ المعلوماتُ إلى نظام المعلومات الخاص بشركة الطيران ذات الصلة، وعادة ما يُجرى ذلك عبر البريد الإلكتروني، وتُعدّ المعالجةُ عبر الإنترنت أكثر تكلفة من المعالجة بالدفعات، وهذا ما يفرض على الشركات أن توازن بين التكلفة والمزايا التي تحصل عليها لاختيار ما يناسبها. فعلى سبيل المثال: قد يستخدم مصنعٌ يعمل على مدار الساعة المعالجةََ في الوقت الحقيقي Real-Time Processing (أي المعالجة عبر الإنترنت Online Processing) بالنسبة للمخزون وسواها من المتطلباتِ المستعجَلة، أوِ الحساسة للوقت؛ ولكنه قد يعالجُ البياناتِ المحاسبية في الدفعات الليلية. قرارات وقرارات: نظم الدعم الإداري تؤتمِتُ نُظُمُ معالجة المعاملات التجارية عملياتِ معالجة المهام الروتينية المكتبية، مثل: المحاسبة ومعالجة الطلبات وإعداد التقارير المالية؛ وهي بذلك توفر النفقات التي تُصرَف على الموظفين، وتوفِّرُ المعلومات العملياتية الأساسية بسرعة، وتستخدمُ نُظُم الدعم الإداري Management Support Systems قاعدةَ البيانات الداخلية الأساسية لإجراء تحليلاتٍ ذات مستوىً عالٍ، تساعد المديرين في اتخاذ قراراتٍ أفضل. وتعد تقنياتُ المعلومات، مثل تخزين البيانات Data Warehousing، جزءًا من نُظُم دعمٍ إداريّ أكثر تطوُّرًا، ويضم مستودعُ البيانات Data Warehouse العديدَ من قواعد البيانات من الشركة برُمّتها إلى قاعدة بياناتٍ مركزية تدعمُ اتخاذ القراراتِ الإدارية، فبوجود مستودع بيانات، يمكن للمديرين الوصول إلى البيانات، ومشاركتها، بسهولة عبر المؤسسة، للحصول على لمحة عامة واسعة بدلًا من مجرد معلوماتٍ متفرقة عن بعضها، وتتضمن مستودعاتُ البيانات برمجياتٍ لاستخراج البيانات من قواعد البيانات العملياتية Operational Databases، والحفاظ على البيانات الموجودة ضمن قاعدة البيانات، وتوفير البيانات للمستخدمين، وبوسع مستودعات البيانات تحليل البيانات أسرع بكثيرٍ من نُظُم معالجة المعاملات Transaction-Processing Systems، وقد يضم مستودعُ البيانات عدةَ أسواق بيانات Data Marts، وهي مجموعات فرعية خاصة من مستودعات البيانات، تتعامل كلُّ واحدة منها مع مجال بياناتٍ واحد، وتُنظَّمُ أسواقُ البيانات لغرض التحليل السريع. تستخدمُ الشركاتُ مستودعاتِ البيانات لجمع البيانات، وتأمينها، وتحليلها، وذلك لأغراضٍ عديدة من ضمنها: نُظُمُ إدارة علاقات العملاء Customer Relation Management Systems، وكشف الاحتيال، وتحليل خط المنتجات Product-Line Analysis، وإدارة أصول المؤسسة، وقد يرغب تجار التجزئة في تحديد الخصائص السكانية الاستهلاكية، وأنماط التسوق لتعزيز الاستجابة الخاصة بالبريد المباشر، ويمكن للبنوك أن تكتشف الاحتيال عبر البطاقة الائتمانية بسهولة أكبر، إلى جانب تحليل أنماط الاستخدام الاستهلاكي. ووفقًا لشركة أبحاث السوق فورستر ريسرتش Forrester Research، يستخدم 60% من الشركات التي تبلغ عائداتُها مليارَ دولار فما فوق مستودعاتِ البيانات بوصفها أداةً إدارية، فشركة يونيون باسيفيك Union Pacific، وهي شركة سكك حديد تبلغ قيمتها 19 مليار دولار، تحوَّلت إلى استخدام تقنية مستودع البيانات لتسهيل عملياتها التجارية، وتمكنت عبر دمج عدة برامج منفصلة من تحقيق نظام سلسلة إمداد موحَّد، أدى -أيضًا- إلى تعزيز خدمة العملاء التي تقدِّم. يقول روجر بريسناهان Roger Bresnahan، وهو كبير المهندسين لدى شركة يونيون باسيفيك: "قبل إنشاء مستودع البيانات الخاصة بنا، كان لدينا أنظمة مشاركة بيانات منفصلة عن بعضها ويغيب أيُّ تنسيقٍ فيما بينها…لم نتمكن من الحصول على صورةٍ كاملة لقطاع السكك الحديدية". لقد تطلَّب إنشاءُ نظام مستودع البيانات الخاص بشركة يونيون باسيفيك سنواتٍ عديدة، وانخراطَ 26 قسمًا فيها لذلك الغرض، أما النتائج، فكانت على قدر الجهد المبذول: إذ باتَ بوسع تلك الشركة اليوم القيام بتنبؤاتٍ أكثر دقة، وتحديد أفضل مسارات المرور، وتعيين أكثر قطاعات السوق ربحيةً. إنَّ القدرة على التنبؤ بأنماطٍ موسمية أو فصلية، وإدارة نفقات الوقود بدقة، قد وفّرت على تلك الشركة ملايين الدولارات، وذلك عبر الاستخدام الأمثل لقاطرات النقل وسواها من أصول الشركة وموجوداتها، وإدارةِ طاقمٍ أكثرَ فاعلية. يقول بريسناهان، كبيرُ المهندسين لدى شركة يونيون باسيفيك: إن نظام مستودع البيانات قد غطى النفقات التي ترتبت على إنشائه خلال مدة ثلاث سنوات. يأتي في المستوى الأول من نظام الدعم الإداري MSS نظام تقارير المعلومات Information-Reporting System، الذي يستخدم بيانات موجزة تُجمَع بواسطة نظام معالجة المعاملات TPS لإعداد تقارير مُجدوَلة جدولةً منتظمةً، وتقارير خاصة، ويعتمد مستوى التفاصيل على المستخدِم، فقد يتلقى موظفو كشوف الرواتب لدى إحدى الشركات تقريرًا أسبوعيًا بكشوف الرواتب، تبيّنُ كيف جرى تحديد الراتب الخاص بكل موظف، أما المديرون في المستوى الأعلى، فقد يتلقون تقريرًا موجزًا حول كشوف الرواتب، يُظهِرُ التكلفة الكلية للعمالة والعمل الإضافي الخاص بكل قسم في الشركة على حِدة، كما يحتوي على موازنة بين تكلفة العمالة الحالية وتلك العائدة للسنة الماضية، أما تقارير الاستثناءات Exception Reports، فتُظهِر الحالاتِ التي لم تستوفِ معايير معينة. إنَّ من شأن تقريرِ استثناءٍ خاص بالحسابات مستحقة القبض، الذي يُظهر جميع العملاء أو الزبائن أصحاب الحسابات متأخرة الدفع، من شأنه مساعدة موظفي التحصيل (تحصيل الأموال) في التركيز على عملهم تركيزًا أفضل، ويجري إعدادُ التقارير الخاصة -فقط- عندما يطلبها المدير، فعلى سبيل المثال: يمكن أن يُظهر تقريرٌ حول المبيعات -وفقًا للمنطقة ونوع المستهلك- الأسبابَ الكامنة وراء انخفاض المبيعات. نظم دعم القرار يساعد نظامُ دعم القرار Decision Support System المديرين في اتخاذ قراراتٍ باستخدام نماذج الحاسوب التفاعلية؛ Interactive Computer Models التي تصف العمليات التي تحدث واقعيًا، كما يستخدم نظامُ دعم القرار البياناتِ من قاعدة البيانات الداخلية، ولكنه يبحث عن بيانات محددة تتعلق بالمشكلة الماثلة، فهو أداةٌ للإجابة عن أسئلة "ماذا لو؟" حول الذي سيحدث عندما يجري المدير تغييراتٍ محددة، وفي الحالات البسيطة، يمكن للمدير إنشاء جدول بيانات ومحاولة تغيير بعض الأرقام. فعلى سبيل المثال: يمكن للمديرِ إنشاء جداول بيانات لإظهار كمية العمل الإضافي المطلوبة، في حال ازدياد عدد العمال أو تناقصه، وبواسطة النماذج، يُدخِلُ المدير إلى جهاز الحاسوب القِيَمَ التي تصفُ موقفًا ما، ثم يقوم الحاسوب بحساب النتائج، كما يمكن لمديري التسويق لدى شركة أثاث تشغيل نماذج نظام دعم قرار RSS تستخدم البياناتِ الخاصة بالمبيعات والافتراضات السكانية، للخروج بتنبؤاتٍ حول أنواع الأثاث التي ستنال إعجاب المجموعات السكانية الأسرع انتشارًا. ويمكن للشركات الاستعانةُ ببرنامج تحليلاتٍ تنبؤية، لتحسينِ نظام إدارة المخزون لديها، واستخدامِ البيانات الضخمة لاستهدافِ فئات المستهلكين بخصوصِ المنتجات الجديدة وتوسيع خطوط منتجاتها. الصورة 13.7: تساعد أنظمةُ دعم القرار الشركاتِ عبر توفير بياناتٍ كمية، ونماذج تنبّؤية، تساعد في عملية حل المشاكل واتخاذ القرارات، وحاليًا، يحتاج قطاع الرعاية الصحية إلى تلك التقنية في المشافي لتعزيز ممارسة الطب، ومن الجهات الرائدة في مجال الجهود المتعلقة بنظام دعم القرار السريري (الطبي)؛ الجمعية الأمريكية للمعلوماتية الصحية American Medical Informatics Association؛ التي تعتقد أنَّ دعم نظام قرارٍ وطنيٍ، قد يساعد الأطباء في تشخيص الأمراض وعلاجها. ما هي مزايا وسلبيات اعتماد المتخصصين الطبيين على نظام دعم قرار للمساعدة في علاج المرضى؟ (حقوق الصورة محفوظة لــ: أكسيل غيلين Axelle Geelen/ فليكر). نظم المعلومات التنفيذية على الرغم من تشابهها مع نظام دعم القرار DSS، فنظام المعلومات التنفيذي Executive Information System مخصصٌ لمديرٍ تنفيذيٍّ فرد، وتوفر أنظمةُ المعلومات التنفيذية معلوماتٍ محددةً للقرارات الاستراتيجية. فعلى سبيل المثال: قد يتضمن نظام المعلومات التنفيذي لرئيسٍ تنفيذي CEO جداولَ بياناتٍ خاصة تعرضُ بياناتٍ ماليةً تُوازن بين الشركةَ ومنافسيها الرئيسين، ورسومياتٍ بيانية تُظهِر التوجهاتِ الحديثةَ في مجال الاقتصاد والقطاع التجاري ذي الصلة. النظم الخبيرة يُعطي النظامُ الخبير Expert System مشورةً للمديرين، شبيهة بتلك التي يحصلون عليها من مستشارٍ بشريّ؛ إذ يُمكِّنُ الذكاءُ الصناعي الحواسيبَ من استيعاب المشاكل، وتعلُّمِ حلِّها بمستوىً يقترب إلى حد كبير من المستوى البشري، وذلك باستخدام المحاكمة المنطقية الافتراضية، أي المبنية على سؤال: "ماذا لو؟" ومع من كون النظم الخبيرة باهظة الثمن وصعبة الإنشاء، إلا أنها تُستخدم من قبل عدد متزايد من الشركات حاليًا، بالتوازي مع إنشاء مزيد من التطبيقات، ويمكن تشغيل النظم الخبيرة الأقل تكلفة وتطورًا حتى على الهواتف الخلوية، أما النظم الخبيرة الأعلى ثمنًا والأكثر تطورًا، فتُمكِّنُ شركاتِ الطيران من نشر طائراتها وطواقمها، ولاغنىً عنها بالنسبة لفاعلية عمليات شركات النقل، وستكون تكلفة توظيف عدد كافٍ من الأشخاص، لتنفيذ تلك المهام التحليلية المستمرة، باهظةً إلى حدٍّ يَحُول دون التمكُّن من دفعها، كما تُستخدَم النظم الخبيرة -أيضًا- في المساعدة على استكشاف النفط، وجدولة ورديات دوام الموظفين، وتشخيص الأمراض، وهناك بعض النُظُم الخبيرة التي تحلّ محل الخبراء البشريين، بينما يقتصر دورُ بعضِها الآخر على مساعدة البشر. ترجمة -وبتصرف- للفصل Using Technology to Manage Information من كتاب introduction to business. اقرأ أيضًا دورة علوم الحاسوب المقال السابق: اتصال الشركات باستخدام شبكات الحاسوب تغيير الشركات بواسطة المعلوماتية اتخاذ القرارات الإدارية1 نقطة