2010-09-04 14 views
47

मैं इसलिए विशेष रूप से Foursquare's guys से हाल ही में Scala के बारे में अच्छी बातें की एक बहुत कुछ और Lift वेब ढांचे में सुना है,, मैं अपने अगले प्रोजेक्ट में इस तकनीक का उपयोग हो सकता है।स्कैला/लिफ्ट में आपके अनुभव क्या विकसित हो रहे हैं?

  • क्या आप में से कोई भी स्कैला/लिफ्ट डेवलपर्स है?
  • इस मंच पर विकास के लिए आपके अनुभव क्या हैं और रुबी ऑन रेल या पायथन/डीजेगो पर इसके क्या फायदे हैं?
  • क्या आप इसे अगले व्यवहार्य वर्षों के लिए एक व्यवहार्य तकनीक और "नजर रखने के लिए कुछ" के रूप में देखते हैं?

यह इसके लायक है? स्कैला/लिफ़्ट प्लेटफॉर्म पर अपने अनुभव साझा करें।

+7

दिलचस्प सवाल। व्यक्तिगत रूप से मैं उन डेवलपर्स से सुनना चाहता हूं जिन्होंने अतीत में रेल/डीजेगो के साथ काम किया है और अब लिफ्ट के साथ काम कर रहे हैं। (मेरा मतलब है, जो लोग वास्तव में तुलना करने के लिए योग्य हैं) – jvdneste

+8

@jvdneste: लिफ्ट खुद के लेखक डेविड पोलाक एक रेल डेवलपर थे और विशेष रूप से रेल के प्रति प्रतिक्रिया के रूप में लिफ्ट बनाया। –

उत्तर

27
  1. मैं वर्तमान में अभी स्काला में मेरी बातों का सबसे कर रहा हूँ। (मैं मुझे लगता है कि कि स्काला पहिये के आविष्कार के बाद से कुछ समय पहले सबसे अच्छी बात है उल्लेख करना चाहिए। :-D)

    मेरी विनम्र राय में यह केवल भाषा है जो सही मायने में लोगों के लिए सबसे अच्छा तरीका चुनने की अनुमति देता है (अधिक) ऑब्जेक्ट उन्मुख और (अधिक) कार्यात्मक दृष्टिकोण के बीच कुछ अनावश्यक विभाजन के बिना एक कार्य।

    भाषाओं जो पहले कुछ इस तरह का दावा किया को देखते हुए, मैं मूल रूप से देख सकते हैं दो प्रतिस्पर्धी भाषा डिजाइन शिविरों: जो देखा कि कार्यात्मक प्रोग्रामिंग कुछ कर्षण हाल ही में प्राप्त की वस्तु उन्मुख ओर से

    • लोगों और सोचा "ठीक है, हम वास्तव में उस कार्यात्मक चीज़ को नहीं समझते हैं, लेकिन चलिए अपनी भाषा में कुछ फैंसी वाक्य रचनात्मक चीनी जोड़ते हैं, इसलिए हम दावा कर सकते हैं कि यह कार्यात्मक भी है!" (उदाहरण: जावा, पायथन)

    • फिर कार्यात्मक की ओर से लोगों को, जो सोचा था कि "ठीक है, हमारे कार्यात्मक दृष्टिकोण दूर कुछ और और उस वस्तु उन्मुख बकवास कष्टप्रद है से बेहतर है, लेकिन कुछ अतिरिक्त डाल देना हमारी भाषा में कीवर्ड, जो निश्चित रूप से हमारी भाषा से बचने के लिए अकादमिक बना देगा! " (उदाहरण: एफ #, OCaml)

    स्काला के डिजाइनरों एकीकृत कई दृष्टिकोण दोनों तरफ से आ रहा है और कुछ अच्छी तरह से डिजाइन भाषा है, जो है बनाया - मेरी विनम्र राय में - अन्य भाषाओं के लिए सबसे बड़ा अंतर है, जो निर्णय लिया प्रोग्रामिंग भाषा डिजाइन के लिए "फ्रेंकस्टीन" दृष्टिकोण लेने के लिए।

  2. अभी तक और रेल और Django के साथ केवल सतही अनुभव लिफ्ट के साथ ही छोटे बातें किया, मैं स्वीकार करने के लिए उस समय जब मैं सोचा है कि लिफ्ट में कुछ मेरी अपेक्षा से अलग ढंग से काम किया के अधिकांश, इस की वजह से था है तथ्य यह है कि मेरी अपेक्षाएं त्रुटिपूर्ण थीं और लिफ्ट का दृष्टिकोण बेहतर था।

    लिफ्ट निश्चित रूप से नहीं "स्काला करने के लिए आसान परिचय" है, लेकिन सीखने कैसे काम करता है लिफ्ट लगभग के रूप में यह पहले स्काला सीखने के रूप में पुरस्कृत किया गया था।

    में यह अन्य व्यवस्थाएं करने के लिए एक महान सुधार है जो एक ही दावा किया है, लेकिन इसके बारे में कम गिर गया है किसी भी तर्क के बिना एक "क्लीन" दृश्य करने की क्षमता।स्कैला का एक्सएमएल शाब्दिक समर्थन आपकी प्रतिक्रिया की अच्छी तरह से गठितता को सत्यापित करना संभव बनाता है: संकलक संकलन समय पर साबित होगा कि आप केवल क्लाइंट को अच्छी तरह से गठित एक्सएमएल उत्सर्जित करते हैं।

  3. लिफ्ट व्यवहार्य तकनीक है और फिलहाल एकमात्र असली दृष्टिकोण है यदि आप वेब अनुप्रयोगों को बनाना चाहते हैं जो "वास्तविक" डेस्कटॉप अनुप्रयोगों की तरह लगते हैं, महसूस करते हैं और व्यवहार करते हैं, बिना कोड की पागल मात्रा लिखने के।

7

मैं 6 महीने से अधिक के लिए लिफ्ट में उद्यम वित्तीय आवेदन के विकास कर रहा हूँ और मैं जावा प्रोग्रामर पूर्व किया गया था।

  1. मैं कोड (great example) की नजर कम पंक्तियां लिखें

  2. आसपास लिफ्ट नहीं है मजबूत एक बहुत कृपया community: मैं कुछ बिंदुओं, जो आप मदद कर सकता है पर ध्यान दिया है। वे हमेशा एक वास्तविक उत्तर प्रदान करने का प्रयास करते हैं। मुझे कोई बुरा अनुभव नहीं है। यहां तक ​​कि वे लिफ्ट में नई सुविधाओं के लिए नए सुझावों के लिए भी खुले हैं। उन्होंने मेरे दो सुझावों को मंजूरी दे दी!

  3. लिफ्ट का नया स्थिर मामूली संस्करण हर 6-8 सप्ताह के बारे में घोषित किया जाता है। नया मील का पत्थर हर दो हफ्तों में नियमित होता है।

  4. लिफ्ट वेब अनुप्रयोगों के लिए एक महान ढांचा है। आप लिफ्ट के बारे में सात main features पढ़ सकते हैं।

  5. लिफ़्ट डिफ़ॉल्ट ओआरएम मॉड्यूल - मैपर बड़े और उन्नत डेटाबेस मॉडल के लिए नहीं है, जिसमें बहुत सी विदेशी कुंजी और बाधाएं हैं। हमें स्क्वायरल का उपयोग करना पड़ा।

मैं कल्पना नहीं कर सकते मैं जावा कोड को अब वापस जाने के लिए है। लेकिन मेरी छोटी सलाह कुछ सरल एप्लिकेशन को कोड करने का प्रयास करना है और आप देखेंगे।

9

मैं इस समय अपने दूसरे लिफ्ट ऐप पर काम कर रहा हूं - यह लिफ्ट के मीठे स्थान पर बहुत दृढ़ता से है - बहुत वास्तविक समय, समेकन।

पहली बार हम डीबी परत के साथ कुश्ती के कुछ दिनों के बाद बाहर निकल गए (यह अब बेहतर है, मुझे विश्वास है), और इसके बजाय Play/Scala पर चला गया। इसने हमारी टीम के मौजूदा ज्ञान को अधिकतम किया और समय सीमा तय करना संभव बना दिया। लेकिन हमारे प्रोजेक्ट को मामूली रूप से बड़ा होने के बाद हॉट कोड रीलोडिंग बहुत अधिक हो गई (पर्मजेन से बाहर चल रही है - यह स्कैला संकलन के साथ कहीं भी चल रही समस्या है), और विभिन्न स्थानों पर विधि कॉल पैरामीटर और स्थान सुरक्षा जैसी चीजों की मैन्युअल जॉगलिंग वेबसाइट में काफी बोझिल हो गया। जब हम इसे पूरा करते थे तो हम खुश थे - उसी तरह जैसे मैंने रेल 1 खोजने के लिए प्रयास किया था, इसलिए परियोजना का आकार बढ़ने के साथ ही गति बढ़ जाती है, और अंत में यह एक वेग/त्रुटि में काम करने के रूप में कठिन और त्रुटि-प्रवण था। वसंत/एक्सएमएल ++ जो भी हो)।

इस बार हम यह काम करने के लिए प्रतिबद्ध हैं कि लिफ्ट क्या करता है, और चीजों को करने के सही तरीके। इसका मतलब मेलिंग सूची के माध्यम से बहुत सारी अनौपचारिक ब्राउज़िंग है (चर्चाएं जो कि कई संस्करण पुराने हैं, अक्सर प्रासंगिक हैं), और सबसे महत्वपूर्ण बात यह है कि टीम के लिए एक नया आचार। बहुत दृढ़ता से आदर्श वाक्य को आंतरिक बनाना आवश्यक है:

"यह कठिन और दोहराव महसूस कर रहा है। मुझे लगता है कि उन्होंने ऐसा करने का एक आसान तरीका बनाया है।"

अब तक लिफ्ट ने हमें कभी निराश नहीं किया है। मैं साइटमैप और सूची कॉन्सटेनेशन सिंटैक्स जैसी चीजों के बारे में बात नहीं कर रहा हूं - आपके पास कार्यात्मक स्कैला पर एक बहुत अच्छा संभाल होना चाहिए, या आप स्रोत कोड को पढ़ने या यहां तक ​​कि अपने ऐप को कॉन्फ़िगर करने में सक्षम नहीं होंगे।

ने कहा कि यह पागल आईओ monads या कुछ भी नहीं है, बस कुछ सामान्य मुहावरे जो आप स्कैला के कुछ हफ्तों में उठाएंगे।

हमारे लिए सबसे बड़ी समस्या धीमी संकलन चक्र रही है। जेटी में लगभग 20 सेकंड लगते हैं: हमारी परियोजना चलाएं, जो खेलने के लिए एक अलग भावना है (जब यह काम कर रही है) गर्म आपकी सारी सामग्री को संकलित करता है। दूसरी तरफ, हम वास्तव में उस दिन का समय लगाते थे जब दूसरे देवताओं ने इसके बारे में शिकायत की थी, और यह काम करता था कि हालांकि तकनीकी रूप से इसे गर्म संकलित करें, पृष्ठ को अभी भी देव मोड में लोड होने में 12 सेकंड लग गए हैं। इसलिए कोई बड़ी हानि नहीं है, यह कमांड लाइन पर आने के लिए थोड़ा धीमा लगता है।

लिफ्ट आपको एक बड़ा सौदा करने देता है, और हमारे ऐप में कई जगहें हैं (क्योंकि यह उपलब्ध है), हमने कहा है "हाँ, हम वास्तव में उस पृष्ठ के सभी दर्शकों को तुरंत अपडेट करना पसंद करेंगे , उनके बजाय बाद में खोज कर रहे हैं कि वे पुराने हैं (उसी समय के बारे में सोचें कि आपने एसओ पर किसी के साथ एक ही उत्तर के साथ पोस्ट किया है)। कॉमेट हर जगह है, यह पता चला है - यह एक विशेषज्ञ उपयोग केस नहीं है, इस तरह चीजें काम करना चाहिए। और लिफ्ट इसे वास्तव में आसान बनाता है।

हम मजबूत, प्रोग्रामेटिक रूप से कॉन्फ़िगर करने योग्य, सुरक्षा मॉडल से भी प्यार करते हैं - एक बार जब हमने अपने दिमाग को स्विच किया "हमें हर स्थान को श्वेतसूची में रखना है, और आवश्यक प्रवेश शर्तों को निर्दिष्ट करना है ", हमने कभी एक और सत्र की समस्या नहीं देखी - आप जानते हैं, वे लोग जहां आप हैं समझाया गया कि उपयोगकर्ता एक निश्चित पथ को पार कर गया होगा, और इस प्रकार पैरामीटर का पूरा समूह पता होगा? जैसे, एक वैध उपयोगकर्ता नाम, और ब्याज का क्षेत्र या जो भी हो? (मैं जानबूझकर अस्पष्ट हूँ)। यह एक राज्यव्यापी ढांचे के बारे में अजीब बातों में से एक हो सकता है, कि जब उपयोगकर्ता एक पृष्ठ पर हिट करता है, तो उदाहरण के लिए (उदाहरण के लिए) सिर्फ यह मांग करनी होगी कि सभी राज्य प्रत्येक अनुरोध पर साथ ही साथ जाएं।

मेरे लिफ्ट में इस नए सिरे से शॉट से टेकअवे:

यह इसके लायक है। न केवल उस ऐप को बनाने के लिए जिसे आप बनाने की कोशिश कर रहे हैं, लेकिन उस ऐप को बनाने के लिए जिसे आप नहीं जानते थे, आपको इसकी आवश्यकता थी।

बहुत सारे सिर खरोंच हैं, लेकिन बहुत सारे कोड नहीं हैं। और जब यह काम करता है यह वास्तव में काम करता है। यह तेज़ और साफ है, और ब्राउज़र और सर्वर के बीच काम कर रहे सभी चमत्कारों के लिए, मैंने कभी इसे भ्रमित नहीं किया है।

संबंधित मुद्दे