কম্পিউটার

উৎপাদনে RubyGems.org ব্যবহার করার বিরুদ্ধে মামলা

একটি স্ক্রীড + একটি স্ক্রিনকাস্ট আপনাকে দেখায় কিভাবে আপনার নিজের রত্ন হোস্ট করতে হয়

আসুন এটিকে দূরে সরিয়ে নেওয়া যাক:রত্নগুলি দুর্দান্ত, এবং RubyGems.org একটি দুর্দান্ত পরিষেবা৷

...কিন্তু ইদানীং যখনই আমি একটি অ্যাপে একটি নতুন রত্ন যোগ করি তখন আমি অস্বস্তি বোধ করছি৷ আমি এটি সম্পর্কে যত বেশি চিন্তা করি, তত বেশি মনে হয় যে আমরা যেভাবে রত্ন ব্যবহার করি তা কেবল ত্রুটিযুক্ত নয়। এটি একটি বিপর্যয় যা ঘটতে অপেক্ষা করছে।

সোশ্যাল ইঞ্জিনিয়ারিং FTW

কিছু দিন আগে RubyNation-এ, বেন স্মিথ হ্যাকিং উইথ জেমস নামে একটি দুর্দান্ত বক্তৃতা দিয়েছেন।

হ্যাকিং চালু নয়৷ রত্ন, কিন্তু হ্যাক করার উপায় হিসাবে রত্ন ব্যবহার করে... একটি আক্রমণ ভেক্টর হিসাবে।

তিনি একটি দুর্দান্ত পরীক্ষা করেছেন৷

আপনি যদি কনফারেন্সে থাকতেন, আপনি সম্ভবত গিথুব স্টিকার এবং অন্যান্য সোয়াগের পাশে সুন্দরভাবে মুদ্রিত কার্ডের স্তুপ দেখেছেন।

কার্ডটি একটি জিনিস বলেছিল:gem install rubynation . এবং প্রায় 10% উপস্থিত ছিলেন৷

উৎপাদনে RubyGems.org ব্যবহার করার বিরুদ্ধে মামলা

মণি কি করেনি

মণি কিছু দরকারী জিনিস করেছে. কিন্তু যা হয়নি তা আরও আকর্ষণীয়।

এটা হয়নি:

  • আপনার gemcutter ডটফাইল থেকে RubyGems.org শংসাপত্র চুরি করুন

  • প্লেইনটেক্সট পাসওয়ার্ড ইন্টারসেপ্ট করুন এবং সেগুলিকে আপনার রেল/পাবলিক ডিরেক্টরিতে সঞ্চয় করুন

  • আপনার সিস্টেমে একটি গোপন SSH অ্যাকাউন্ট যোগ করুন

কিন্তু এটা হতে পারে. আপনি আমাকে বিশ্বাস না করলে বেনকে জিজ্ঞাসা করুন৷

এটি আপনাকে ভয় দেখাবে

আমাকে ব্যাক আপ করতে দিন এবং এটি আবার বলতে দিন, তাই এটি ডুবে যাবে৷

প্রায় 25 জন লোক - কম্পিউটার প্রোগ্রামার - তাদের ডেভেলপমেন্ট মেশিনে নির্বিচারে কোড চালানোর জন্য ম্যানিপুলেট করা হয়েছিল। এমনকি কয়েকজন এটিকে রুট হিসাবে চালান৷

আমি এই লোকেদের বাছাই করতে চাই না। এটি রুবি সম্প্রদায়ের আদর্শ।

এটা কেন হল?

মানুষ রত্ন বিশ্বাস.

  • কারণ তারা সাধারণত কাজ করে।

  • কারণ রেল একটি রত্ন।

  • কারণ অ্যারন প্যাটারসন, স্টিভ ক্ল্যাবনিক এবং ইয়েহুদা কাটজের মতো সুপরিচিত লোকেরা তাদের বজায় রাখে।

কিন্তু এটা একটা সমস্যা যখন আপনি যাদেরকে আপনি জানেন না তাদের বিশ্বাস করতে শুরু করেন।

আপনি যখন gem install rubynation টাইপ করেন তখন এটি একটি সমস্যা আর কোন দ্বিধা ছাড়াই আপনি gem install rails টাইপ করবেন .

এবং আসুন সৎ হতে দিন। কে এটা অন্তত একবার করেনি? আমরা অলস এবং রত্ন সহজ।

Rubygems.org দায়ী নয়

এটা শুধু ভুল কাজ করা অত্যন্ত সহজ করে তোলে। আপনার সার্ভারে অবিশ্বস্ত কোড চালানোর জন্য. পরিবর্তন সম্পর্কে অবহিত হতে আপনার সার্ভারে কোড চালানো হয়।

সেজন্য আমি পরামর্শ দিচ্ছি যে আমরা সবাই এটাকে উৎপাদনে ব্যবহার করা বন্ধ করি।

সমাধান

স্বাক্ষর যথেষ্ট নয়

প্রত্যেকেরই তাদের রত্ন স্বাক্ষর করা উচিত। কিন্তু স্বাক্ষর যথেষ্ট নয়। একটি স্বাক্ষর শুধুমাত্র প্রকাশকের পরিচয় যাচাই করে। তারা ভাল, মন্দ, বা বিশৃঙ্খল নিরপেক্ষ কিনা তা আপনাকে বলে না।

কেউ উদ্ধারে আসছে না

একটি নিখুঁত বিশ্বে, আমাদের একটি বিশ্বস্ত সংস্থা থাকবে যা ভাল বলে পরিচিত রত্নগুলির সংস্করণগুলি বিতরণ করে৷

যদি এটি আপনাকে ভুলভাবে ঘষে, তাহলে ডেবিয়ানের মতো সংস্থাগুলি কীভাবে লিনাক্সের জন্য অনুরূপ কিছু করে সে সম্পর্কে চিন্তা করুন। যদি এটি এখনও আপনাকে ভুল পথে ঘষে....ঠিক আছে আমি সম্মানিত যে আপনি আমার ব্লগ পড়ছেন, মিঃ স্টলম্যান।

নিখুঁত পৃথিবীতে কেন বলি? ঠিক আছে, কারণ অন্যান্য বিকল্পগুলি অনেক বেশি কাজ, এবং আমি এটি করতে চাই না।

...আপনাদের মধ্যে একজন YC আশাবাদী দয়া করে এটি পেতে পারেন?

একমাত্র আসল বিকল্প:DIY

দুর্ভাগ্যবশত আমাকে এই দুর্গন্ধযুক্ত পুরানো বাস্তব জগতে বাস করতে হবে। আপনার রত্নগুলির উপর সম্পূর্ণ নিয়ন্ত্রণ করার একমাত্র আসল উপায় হল।

  • বিশ্বাসঘাতকতার জন্য কোড পর্যালোচনা করুন

  • রত্নগুলি নিজে হোস্ট করুন

ভাগ্যক্রমে, আপনার নিজের রত্ন হোস্ট করা সহজ। আমি আপনাকে দেখাব কিভাবে.

কিভাবে আপনার নিজের রত্ন হোস্ট করবেন

উৎপাদনে RubyGems.org ব্যবহার করার বিরুদ্ধে মামলা

এটি জাদু নয়

একটি রত্ন "সার্ভার" হল ওয়েবে সমতল ফাইলগুলির একটি গুচ্ছ। আপনি এগুলিকে যে কোনও জায়গায় হোস্ট করতে পারেন, এমনকি S3 বা ড্রপবক্সেও৷

টেস্টবেঞ্চ হিসাবে একটি রেল অ্যাপ তৈরি করুন

আমি এখানে রেল ব্যবহার করার একমাত্র কারণ হল এটি আমাদের সাথে খেলতে একটি প্রিমমেড জেমফাইল দেয়। এই অ্যাপটি কিছুই করে না৷

`$ rails new myapp
$ cd myapp
`

.gem ফাইলগুলি ডাউনলোড করুন

এই বান্ডলার কমান্ডটি Gemfile.lock দ্বারা উল্লেখ করা সমস্ত .gem ফাইল ডাউনলোড করবে এবং সেগুলিকে /vendor/cache-এ রাখবে।

`$ bundle package
$ mkdir /tmp/gem_server
$ mv vendor/cache/ /tmp/gem_server/gems
`

'সার্ভার' ফাইল তৈরি করুন

.gem ফাইলগুলির একটি ডিরেক্টরি নিতে এবং সেগুলি পরিবেশনের জন্য প্রস্তুত করতে, আপনি gem generate_index চালান .

`$ gem generate_index -d /tmp/gem_server/
`

এটি সব অনলাইনে রাখুন

এখন আমি উৎপাদনে এটি সুপারিশ করব না, কিন্তু...

`$ mv /tmp/gem_server /Users/snhorne/Dropbox/Public/
`

আপনার জেমফাইল এবং বান্ডেল আপডেট সম্পাদনা করুন

রুবিজেমসের পরিবর্তে আপনার নতুন হোস্টের দিকে নির্দেশ করতে "উৎস" লাইন আপডেট করুন

`# Gemfile

source 'https://dl.dropboxusercontent.com/u/12345/gem_server'
...
gem 'rails', '3.2.13'
`

শান্ত! এটা আমার ড্রপবক্স থেকে রত্ন টানছে।

`$ bundle update
Fetching gem metadata from https://dl.dropboxusercontent.com/u/12345/gem_server/.
Fetching full source index from https://dl.dropboxusercontent.com/u/12345/gem_server/
Using rake (10.1.0)
Using i18n (0.6.1)
Using multi_json (1.7.7)
Using activesupport (3.2.13)
`

বোনাস:ব্যক্তিগত রত্নগুলি HTTP মৌলিক প্রমাণীকরণের মাধ্যমে সুরক্ষিত করা যেতে পারে

শুধু আপনার জেমফাইলটিকে এই রকম করুন:

`# Gemfile

source 'https://username:password@example.com/'
`

বিকল্প

এই পদ্ধতি আপনার জন্য কাজ করে না? কিছু বিনামূল্যের এবং বাণিজ্যিক রত্ন হোস্টিং সমাধান রয়েছে যা আপনাকে আরও কয়েকটি ঘণ্টা এবং শিস দেয়৷

জেমিনাবক্স হল একটি ওপেন সোর্স অ্যাপ্লিকেশান যা কমান্ড লাইনের অনেক কাজ বাদ দেয়৷

Gemfury একটি ব্যক্তিগত রত্ন হোস্টিং কোম্পানি. আমি অতীতে এগুলি ব্যবহার করেছি একটি ক্লায়েন্টের জন্য কিছু মালিকানাধীন রত্ন হোস্ট করতে। এটি সেট আপ করা সহজ ছিল এবং কোন সমস্যা হয়নি৷


  1. ম্যাটপ্লটলিব ব্যবহার করে এক্স-অক্ষে নির্দিষ্ট তারিখের বিরুদ্ধে ডেটা কীভাবে প্লট করবেন?

  2. ভিউ কম্পোনেন্ট রত্ন একটি ভূমিকা

  3. রুবি কেস স্টেটমেন্টের অনেক ব্যবহার

  4. কাজ শুরু করুন:ইনবক্স জিরোর বিরুদ্ধে মামলা