المعرفة من قبل المستخدم البيانات المستمدة في جانغو

StackOverflow https://stackoverflow.com/questions/847201

سؤال

كيف يمكنني السماح للمستخدمين تطبيق المخصصة الخاصة بهم الصيغة إلى جدول البيانات لاستخلاص حقول جديدة ؟

أنا أعمل على جانغو التطبيق الذي هو ذاهب لتخزين ومعالجة الكثير من البيانات عن المستخدمين المشتركين على شبكة الانترنت مفتوحة.أعتقد 100-10,000 قراءات أجهزة الاستشعار في صفحة الطلب.وانا ذاهب الى أن رسم الرسوم البيانية باستخدام هذه البيانات أيضا تبين الجداول التي تحتوي عليه.أتوقع مجموعات من أجهزة الاستشعار التي يمكن تعريفه من قبل المستخدمين ، الذين سجلوا أنفسهم على موقع الويب الخاص بي (أنا.e أنها تتوافق مع جانغو نموذج).

أود أن تسمح للمستخدم لتكون قادرة على إنشاء الحقول التي هي مستمدة من بيانات الاستشعار الخاصة بهم (كجزء من عملية الإعداد).على سبيل المثال, المستخدم قد يعرف أن منزل متوسط درجة الحرارة (درجة الحرارة sensor1 + درجة حرارة sensor2) / 2 و تريد أن تظهر على الرسم البياني.كما قد تريد شيئا أكثر إثارة للاهتمام مثل الطاقة الشمسية الماء الساخن هو (temp بها - درجة الحرارة) * التدفقات * التحويل المستمر.ثم حفظ هذه المعرفة الصيغ بالنسبة لهم وكل شخص آخر من هذه الصفحة من بيانات الاستشعار.

السؤال الرئيسي هو كيف يمكنني تحديد الصيغة في مركز النظام.هل لدي المستخدم-تعريف السلسلة إلى تحديد صيغة (أقول 100 حرف طويل) و تحليل نفسي - استبدال تعريف المستخدم مع إدخال العينة يسمونه نخب ؟

التحديث

في النهاية أنا فقط حصلت على الجواب لقد طلبت :طريقة آمنة لتقييم المستخدمين المخزنة تعمل على الخادم.تقييم نفس الوظيفة أيضا على العميل عندما الوظيفة المحددة سوف تكون طريقة رائعة لجعل واجهة المستخدم بديهية.

هل كانت مفيدة؟

المحلول

يعتمد على الذين العملاء.

إذا كان هذا هو "علنية" على شبكة الاتصالات العالمية ، تحتاج إلى تحليل تعبيرات نفسك.يمكنك استخدام بيثون مترجم ترجمة جملة الثعبان.يمكنك أيضا ابتكار الخاصة بك مترجم لمجموعة فرعية من جملة الثعبان.وهناك الكثير من الأمثلة ؛ نبدأ مع رقائق المشروع.

إذا كان هذا هو في المنزل ("خلف جدار الحماية") السماح بنشر قطعة من كود بايثون و exec هذا الرمز.

نوفر لهم بيئة from math import * الوظائف المتاحة.

أضعاف التالية حول الموردة سطر من التعليمات البرمجية:

def userFunc( col1, col2, col3, ... ):
   result1= {{ their code goes here }}
   return result1

ثم يمكنك exec تعريف الدالة و استخدام دالة معرفة من قبل دون حدوث الأشياء السيئة.

في حين أن بعض الناس مثل الغراب الذي exec هو "مشكلة أمنية" أنه لا مشكلة أمنية من المستخدم مشاركة كلمات المرور المشرف يفعل عمدا أشياء غبية مثل حذف الملفات الهامة أو تحويل التيار الكهربائي بشكل عشوائي في حين أن البرمجة الخاصة بك قيد التشغيل.

exec هي فقط مشكلة أمنية إذا كنت تسمح لأي شخص الوصول إليها.في التطبيقات الداخلية ، تعرف المستخدمين.تدريب لهم.

نصائح أخرى

أنا ستعمل ما العمليات التي تريد دعم [+,-,*,/,(,),الخ] و تطوير جانب العميل (جافا سكريبت) لتحرير تطبيق تلك القيم إلى مجالات جديدة من البيانات.أنا لا أرى بحاجة إلى أن تفعل أي من هذا من جانب الخادم و سوف ينتهي بك الأمر مع أكثر استجابة و تجربة المستخدم ممتعة نتيجة لذلك.

إذا كنت تسمح للمستخدم حفظ الصيغ و إعادة تحميلها عند النظر في الموقع, يمكنك الحصول على المتصفح للقيام بكل العمليات الحسابية.مجرد توفير بعض العامة طرق لإضافة أعمدة البيانات التي يتم إنشاؤها من خلال تطبيق واحد من forumla إلى البيانات الخاصة بك.

أتصور ستكون الخطوة التالية هي السماح لهم بتطبيق تلك العمليات التي تم إنشاؤها حديثا الأعمدة.

هل فكرت في نشر هذه البيانات في جدول بيانات جوجل?وهذا سيوفر الكثير من أعمال التطوير لأنها بالفعل تسمح لك لتحديد الصيغ.... الخوتطبيقه على البيانات.أنا لست متأكدا جدا من البيانات الحد (كمية البيانات التي يمكن بعد و تعمل على) العقل.

مستخدم آخر طلب مثل هذا السؤال في C.في هذا المنصب ، وارن اقترح الصيغة يمكن أن يكون تحليل و تحويلها من

(a + c) / b 

في عكس تدوين البولندية

a c + b / 

وهو أسهل عملية.

في هذه الحالة, هل يمكن اعتراض صيغة نموذج حفظ وتوليد postfix التدوين من المستخدم-تعريف الصيغة.مرة واحدة كنت قد postfix التدوين ، فمن واضحة إلى حد ما أن أكتب حلقة التي يقيم الصيغة من اليسار إلى اليمين.

كما للتنفيذ في جانغو ، جوهر السؤال هو كيفية خريطة مختلف حقول الإدخال في الصيغة.الحل بسيط سيكون نموذجا تمثل مشتقة مجال استخدامات عديدة لكثير العلاقة مع الرمز اسم ("a", "b" أو "c") المحددة لكل إدخال.

إذا كان الأداء بالغ الأهمية حقا, ربما بطريقة أو بأخرى في زيادة ما قبل عملية صيغة postfix قبل تطبيقه على البيانات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top