দয়া করে, ব্যাখ্যা করুন কেন এবং কোন ভাষাগুলির (ভুল) বৈশিষ্ট্যটি কার্যকর করা হয়েছে তার তালিকা করুন যতদূর আপনি জানেন।
আপনি যা ক্ষতিকারক বৈশিষ্ট্য হিসাবে বিবেচনা করেন তা পোস্ট করুন, যা আপনি অপছন্দ করেন তা নয়
a = 1/0
- মৌলিক প্রকাশ, ক্ষতিকারক। ;-)
দয়া করে, ব্যাখ্যা করুন কেন এবং কোন ভাষাগুলির (ভুল) বৈশিষ্ট্যটি কার্যকর করা হয়েছে তার তালিকা করুন যতদূর আপনি জানেন।
আপনি যা ক্ষতিকারক বৈশিষ্ট্য হিসাবে বিবেচনা করেন তা পোস্ট করুন, যা আপনি অপছন্দ করেন তা নয়
a = 1/0
- মৌলিক প্রকাশ, ক্ষতিকারক। ;-)
উত্তর:
তথ্য: http://php.net/manual/en/security.globals.php
পঠনযোগ্যতার কারণে এবং সুরক্ষার কারণে এটি এখন পর্যন্ত সবচেয়ে খারাপ বৈশিষ্ট্যটি প্রয়োগ করা হয়েছে। মূলত প্রাপ্ত সমস্ত জিইটি প্যারামিটারগুলি ভেরিয়েবলগুলিতে রূপান্তরিত হয়।
উদাহরণস্বরূপ এই URL টি দিয়ে: /index.php?value=foobar
আপনি নিম্নলিখিতটি করতে পারেন:
<?php
echo $value; // return foobar
?>
আপনি যখন কোড পড়ছেন, ভেরিয়েবলটি কোথা থেকে এসেছে তা জানতে খুব বিভ্রান্তি হয়।
এছাড়াও যদি বৈশিষ্ট্যটির অপব্যবহার করা হয় তবে এটি সুরক্ষা গর্ত হতে পারে। এখানে php.net এর একটি কোড উদাহরণ রয়েছে যা দেখায় যে এটি কীভাবে অপব্যবহার করা যায়:
<?php
// define $authorized = true only if user is authenticated
if (authenticated_user()) {
$authorized = true;
}
// Because we didn't first initialize $authorized as false, this might be
// defined through register_globals, like from GET auth.php?authorized=1
// So, anyone can be seen as authenticated!
if ($authorized) {
include "/highly/sensitive/data.php";
}
?>
নুলকে ডিফল্টরূপে মঞ্জুরি দিন, "ট্রিলিয়ন" * ডলার ভুল। দুঃখিত টনি হোয়ার প্রায় প্রতিটি ভাষা গ্রহে উপলব্ধ।
* আমি এই দিনগুলিতে প্রকৃত ক্ষতির প্রতিবিম্বিত করতে টনি হোয়ের দ্বারা নির্মিত অভিব্যক্তিটি সামঞ্জস্য করেছি :-)
সি এবং সি ++ ম্যাক্রোস। যদি আমার ম্যাক্রোর জন্য কোনও স্ট্যান্ডার্ড ফাংশন নাম চয়ন করার কারণে আমার আর কোনও সংকলক ত্রুটি দেখতে হয় যা আমার কোডটিকে স্ক্রু করে দেয় আমি চিৎকার করতে চলেছি। আসুন শেষ আপত্তিজনকটি দেখুন:
#define vector(int) new VARIANT[int];
Aaarg! আমার এসটিএল ভেক্টর দিয়ে আপনি কী করেছেন !?
সি এবং সি ++ স্যুইচ স্টেটমেন্টগুলিতে ডিফল্টরূপে পতন।
break
বিবৃতিটি ভুলে যাওয়া না হওয়া অবধি এটি সহায়ক বা কেউ দুটি ক্ষেত্রে (বা তাদের পুনরায় আদেশ দেওয়ার) মধ্যে একটি মামলা যুক্ত না করে লক্ষ্য করে না যে তাদের মধ্যে কোনও ফলস্বরূপ রয়েছে। আমি কোনও উপায় দেখতে পাচ্ছি না যে ব্রেকথ বা গোটো কেস ইত্যাদির প্রয়োজন সি # পদ্ধতির চেয়ে পতনের চেয়ে ভাল
প্রকারভেদযুক্ত ধরণের রূপান্তরগুলির মধ্যে যখন ধরণের রূপান্তরিত হয় তখন তাদের স্পষ্ট সম্পর্ক থাকে না। উদাহরণস্বরূপ, পিএইচপি-র মতো একটি এলোমেলো, অ-সংখ্যাসূচককে রূপান্তর string
করা int
।
explicit
, যা অন্তর্নিহিত ধরণের রূপান্তরগুলি থামিয়ে দেয় তবে এখনও সমস্যা রয়েছে।
0
কিছু মূল্যের জন্য এলোমেলো হওয়ার চেয়ে ভাল ।
গোটো : যদিও বিরল ক্ষেত্রে ঠিক আছে, তবে এটি প্রায়শই অপব্যবহার করা হয় এবং প্রোগ্রামগুলি পড়তে কঠোর হয়।
কিছুই না
কোনও বৈশিষ্ট্যটি ঘন ঘন অপব্যবহারের কারণে এটি ক্ষতিকারক হয় না।
আইএমএইচও সমগ্র "ক্ষতিকারক হিসাবে বিবেচিত হয়" হ'ল হিটলারের হ্রাসযুক্ত বিজ্ঞাপন প্রোগ্রামিং ভাষা আলোচনার
বেশিরভাগ, যদি না হয় তবে "ক্ষতিকারক" বৈশিষ্ট্যগুলির বেশিরভাগই বৈধ ব্যবহারের ক্ষেত্রে বা মূলত ব্যবহারযোগ্য ক্ষেত্রে বা খুব সহজেই সুবিধাজনক পদ্ধতিতে ব্যবহার করে। এটি অনুসারে ভাল এবং কনস এবং কোড বোঝার বিকাশকারীদের উপর নির্ভর করে।
যদি আপনার প্রশ্নগুলি "কী ভাষা বৈশিষ্ট্যগুলির মধ্যে সাধারণ সমস্যা বা দুর্ভাগ্যজনক পার্শ্ব-প্রতিক্রিয়া থাকে" এর ধারায় কিছু বোঝানো হত তবে আমার উত্তরটি আলাদা হবে।
[সম্পাদনা] পরিষ্কার করার জন্য: আমার অর্থ হ্রাস করা পদ্ধতিগুলির অবিরত ব্যবহার নয়। যদি বিকাশকারীরা কোনও বৈশিষ্ট্যকে হ্রাস / হ্রাস করে থাকেন তবে আপনার প্রতিস্থাপনটি ব্যবহার করা উচিত। আমি এই ধারণার সাথে উল্লেখ করছি যে ভাষার একটি বর্তমান অংশ ক্ষতিকারক হিসাবে বিবেচিত হয়েছে কারণ কিছু লোক এটির উত্সাহিত করে না এমন বাণিজ্য পছন্দ করে না বা এটি ব্যবহার করার ক্ষেত্রে যে ব্যবসায়-বাণিজ্য জড়িত তা অনেকেই পছন্দ করেন না।
অটোভিভিফিকেশন (বা অন্যান্য বাইন্ড-ভেরিয়েবল-অন- (এসাইন করা | ব্যবহার) বৈশিষ্ট্য) হ'ল বৈশিষ্ট্য যা আমি আমাকে সর্বাধিক বাগ দিতে পেরেছি।
PLEASE
ইন্টারকল এ। এটি যথেষ্ট পরিমাণে ব্যবহার করবেন না, এটি অভিযোগ করে। এটি অত্যধিক ব্যবহার করুন, এটি অভিযোগ করে।
যদিও কিছু লোক তার লোক বা বিভিন্ন কথা বলে তার সাথে একমত নয়, ডগলাস ক্রকফোর্ডের অনেকটা জাভাস্ক্রিপ্ট: গুড পার্টস মূলত এই প্রশ্নটি জেএসকে প্রয়োগ করা হয়েছে। ক্রকফোর্ডের অভিযোগগুলির মধ্যে:
সমস্ত কিছুর জন্য ডিফল্টরূপে গ্লোবাল স্কোপ (ডিসি দেখায় যে কীভাবে ফাংশন / অবজেক্টগুলিকে নামের স্থান এবং স্কোপ ডিলিমিটার হিসাবে এটি ব্যবহার করতে যায় তা লিখুন gle)
বিবৃতিগুলির মতো with
, যার ব্যর্থতা আচরণ বিশ্বব্যাপী নেমস্পেসে জিনিসগুলি সংজ্ঞায়িত করা। (গাহ! এটি জেএসের মতবাদের মতো আপনি যদি ব্যর্থ হন তবে যতটা সম্ভব হার্ড ব্যর্থ হন !)
==
অপারেটরের সাথে অপ্রত্যাশিত আচরণ , যার মূলত আপনাকে সর্বদা ===
অপারেটরটি ব্যবহার করা প্রয়োজন ।
সেমিকোলন সন্নিবেশ।
সত্যিই পুরো জেএসকে ক্ষতিকারক হিসাবে বিবেচনা করা উচিত, এমনকি পুরো ভাষাটিও, তবে ভাল অংশগুলি এতটাই ঘৃণ্য হয় যে এটি এর জন্য তৈরি হয় (কমপক্ষে আমার জন্য))
ঠিক আছে, সত্যই ভাষাটির কোনও বৈশিষ্ট্য নয় তবে এখনও বেশ নিবিড়ভাবে সম্পর্কিত।
হঠাৎ আপনার ফ্ল্যাশ / ফ্লেক্স অ্যাপ্লিকেশন কাজ করা বন্ধ করে দেয় এবং f * এর ঘটনা ঘটেছে তা কেউ আপনাকে সামান্যতম ইঙ্গিত দিতে পারে না। কোনও ত্রুটি বার্তা, কোনও স্ট্যাকট্রিজ, কিছুই নেই। এটি হঠাৎ স্ক্রীন স্থানান্তর ঘটে না (বা সম্পূর্ণ ভুল উপায়ে ঘটে) বা বোতামগুলি ক্লিকগুলিতে আর প্রতিক্রিয়া জানায় না বা কিছু এন্ট্রি দিয়ে পপুলেটেড হওয়ার পরিবর্তে কম্বোবক্সগুলি খালি।
সেই "বৈশিষ্ট্য" একা বেশ কয়েকটি শ্রাগ প্রতিবেদন এবং পুরো পাকা ধূসর চুলের জন্য দায়ী । -.- ব্যবহারকারীর মুখে কিছু গুপ্ত বার্তা পপ আপ করা বাঞ্ছনীয় নয়, এটি কমপক্ষে বিকাশকারীকে সমস্যা সংশোধন করতে সহায়তা করতে পারে।
তবে ফ্ল্যাশ প্লেয়ার আপনাকে অন্ধকারে ছুরিকাঘাত করে ব্যবহারকারীর বর্ণনার উপর নির্ভর করে (যখন সমস্যাটি আসলে কোডটির সম্পূর্ণ ভিন্ন অবস্থান থেকে উদ্ভূত হতে পারে যা ব্যবহারকারীর সাথে কিছু করার থাকে না)। আপনি যদি ডিবাগ প্লেয়ার ব্যবহার করেন তবেই আপনি ত্রুটি বার্তা এবং একটি স্ট্যাকট্র্যাস সহ পপআপ উইন্ডোটি পেতে পারেন।
তবে নির্দিষ্ট সংবাদ সাইটে ফ্ল্যাশ এম্বেড করা সিনেমাগুলি দেখা এবং ব্যবহৃত এম্বেড থাকা প্লেয়ার এসডাব্লুএফ থেকে নুল রেফারেন্স সম্পর্কে বার বার বার্তা পাওয়া খুব আকর্ষণীয় হতে পারে। : ডি
সি / সি ++-তে: এই অ্যাসাইনমেন্টগুলিও একই রকম অ্যাসাইনমেন্ট = এবং তুলনা == অপারেটরগুলির সাথে একত্রিত express প্রতি সেউটি কোনও ক্ষতিকারক বৈশিষ্ট্য নয়, তবে অপারেটরটিকে ভুল করে টাইপ করে এটি (কখনও কখনও সূক্ষ্ম) বাগগুলি সহজভাবে উপস্থাপনের উপায়।
int i = 10;
someCode();
if(i = 5)
{
/* We don't want this block to be executed, but it is */
moreCode();
}
প্যাকেজ ব্যক্তিগত ভাষার ডিফল্ট এবং ব্যক্তিগত প্রোগ্রামিং কনভেনশন ডিফল্ট সহ জাভাতে অ্যাক্সেস মডিফায়ারগুলি।
কোনো সতর্কবার্তা ছাড়া শেল মধ্যে একটি খালি স্ট্রিং দ্বারা অনির্ধারিত ভেরিয়েবল প্রতিস্থাপন করা হচ্ছে: rm -rf $nosuchvar/*
।
${varname:-/dev/null}
হতে পারে ...
লোগোতে ঘড়ির কাঁটার বিপরীতে ঘুরিয়ে দেওয়ার ক্ষমতা। ডাব্লুটিএফ, কেবল ঘড়ির কাঁটার 360 - x
ডিগ্রি ঘুরিয়ে দিন ।
জাভা এবং অন্য ভাষায় আপনি সঠিকভাবে শেষ করতে থ্রেডটির জন্য সময় না দিয়ে আপনি অন্য কোনও থেকে কোনও থ্রেডকে নির্বিচারে থামিয়ে দিতে পারেন। এই ক্ষমতাটি প্রায় সমস্ত পরিস্থিতিতে আনতে পারে এমন বিশাল পরিমাণের সমস্যা বিবেচনা করে ছাড় দেওয়া হয়েছে ।
পিএইচপি-তে পরিবর্তনশীল ভেরিয়েবল
শুধু আপনি $can
মানে না কারণ$$should
use strict
) এবং আপনি যে ক্ষেত্রে চান তা ঠিক আবার চালু করার সহজ উপায় ( no strict 'refs'
)।
With
যদিও মামলা হয় যখন এটি দরকারী এর ডেল্ফী মধ্যে বক্তব্য, মনে আসে।
সূচি 1 থেকে শুরু করে এডাব্লুকে তে অ্যারে !
car
! : পি
পার্লে, স্কেলার প্রসঙ্গে বনাম তালিকার প্রসঙ্গটি জটিল হতে পারে। এটি কিছু ভাল পয়েন্ট পেয়েছে যা নির্দিষ্ট ক্রিয়াকলাপগুলিকে সুবিধাজনক করে তোলে তবে মাঝে মধ্যে আপনি কোনও অপারেটরের অর্থ পুরোপুরি পরিবর্তন করার মতো (কোডের মধ্যে একটি সম্ভাব্য দূরত্ব থেকে সম্ভাব্য) পুরোপুরি পরিবর্তন করার মতো ভয়ঙ্কর কিছুতে পরিণত হন ।
sub foo { (1..5) }
my @list = foo(); # (1,2,3,4,5)
my $length = scalar @list; # 5. the length of the list.
my $length2 = scalar foo(); # '' (the empty string. because it's false)
এটা ঠিক না।
(এটি এমন কিছু তৈরি করার চেষ্টা থেকে উদ্ভূত যা নিয়মিত পরিসীমা অপারেটরের মতো কাজ করে, যাতে আপনি কোনও লুপে কিছু বলতে পারেন next if /start_regex/ .. /end_regex/
)।
পাইথন 2.x এর আপেক্ষিক আমদানি বাক্য গঠন। ধরুন আমার কাছে এমন একটি প্যাকেজ রয়েছে x.plugins
যা এর জন্য অন্যান্য অন্যান্য লাইব্রেরির জন্য সমর্থন যোগ করে x
। এবং ধরুন আমার একটি sqlalchemy
মডিউল রয়েছে x.plugins
যাতে আমি স্কেলচেমি সমর্থন যুক্ত করতে পারি x
। আমি নিম্নলিখিত পংক্তিটি স্কেলচেমি.পি-তে যুক্ত করলে কি হবে বলে আপনি মনে করেন?
import sqlalchemy
উত্তরটি হ'ল মডিউলটি নিজে আমদানি করার চেষ্টা করবে। এই সিনট্যাক্সটি যা করে তা হ'ল আসল বিশ্বব্যাপী স্ক্লাচেমি প্যাকেজ আমদানি করা অসম্ভব করে তোলে। পাইথন 2.5 এটি একটি আপেক্ষিক আমদানি উল্লেখ করার জন্য একটি উপায় যুক্ত করেছে:
from . import sqlalchemy
... তবে পাইথন 3 অবধি এটি প্রথম নয় যে প্রথম সিনট্যাক্সটি আসলে মুক্তি পেয়েছিল (যদিও এটি পাইথন 2.6+ এর সাথে অক্ষম করা যেতে পারে from __future__ import absolute_import
)।
sun.misc.unsafe আমার সর্বকালের প্রিয়; "জিনিসগুলি বাস্তবায়নের জন্য আমাদের এটির প্রয়োজন ছিল তবে সত্যই, আপনার এটি ব্যবহার করা উচিত বলে মনে হয় না of"
FORTRAN সাধারণ ব্লক। আপনি যদি একটি সাধারণ ভুল করে থাকেন তবে কোনও অ্যাপ্লিকেশনটির একটি অংশ অন্য অংশের গ্লোবালগুলিকে আঁকড়ে ধরতে পারে।
ফরটারান গেটো স্টেটমেন্ট / সিওবিওএল পরিবর্তনের বিবৃতি দেয়। স্ব-সংশোধনকারী কোড। বিপদ, সতর্কতা, উড়ন্ত স্প্যাগেটি দানব !!
অবজেক্ট ওরিয়েন্টেশন (সমস্ত স্ট্যাটিকালি টাইপ করা ভাষা থেকে)। আমি এই বৈশিষ্ট্যটি পরাজিত করব এবং নাল পয়েন্টারগুলির চেয়ে অনেক বেশি ব্যয় করতে এটি চালিয়ে যাব । গতিশীল বার্তা পাস করার ভাষায় অবজেক্ট ওরিয়েন্টেশন কেবল ভাল । সুতরাং এটি পাইথনের মতো গতিময় ভাষাগুলি থেকেও বাদ দেওয়া উচিত (যেহেতু এটি মেসেজ পাসিং ব্যবহার করে না তবে প্রচলিত সাব্রোটিন কলিং ব্যবহার করে)।
অনভিজ্ঞ ডেভেলপাররা হয় এটি সক্ষম হওয়ার উপর নির্ভর করে এবং সুতরাং কোনও এসকিউএল কোয়েরিতে ব্যবহারের জন্য সমস্ত ব্যবহারকারীর ইনপুটটি এড়িয়ে যেতে পারে বা এটি অক্ষম হওয়ার উপর নির্ভর করে এবং এভাবে সর্বদা তাদের ইনপুটটি এড়িয়ে যায়।
এটি সক্ষম করার বিষয়টি ধরে নিলে এবং তারপরে এমন কোনও সিস্টেমে কোড চালানো হচ্ছে যেখানে এটি নয় এটি প্রশস্ত এসকিউএল ইঞ্জেকশন গর্ত ফাঁক করে দেয়।
এটি অক্ষম করে এবং এটি না তা ধরে নেওয়ার পরে, এর ফলে ব্যাকস্ল্যাশগুলি প্রকৃতপক্ষে ডিবিতে সঞ্চিত থাকবে, ফলে কুৎসিত / ভুল স্ট্রিং ঘটবে।
উভয় কেস পরিচালনা করার খুব সহজ উপায় নেই - এটি ব্যবহার করে সক্ষম করা হয়েছে কিনা তা আপনাকে পরীক্ষা করে দেখতে হবে get_magic_quotes_gpc()
এবং তারপরে অ্যারেগুলিতে stripslashes()
সমস্ত মান প্রয়োগ করতে হবে $_*
- যেহেতু এটির জন্য আপনার array_map
একটি কাস্টম ফাংশন প্রয়োজন পুনরাবৃত্তিযোগ্য নয়।
ভাষা বৈশিষ্ট্য যা প্রোগ্রামারগুলিকে নিরবিচ্ছিন্ন বা অর্থহীন-মন্তব্য কোড লিখতে দেয়।
এখানে একটি অঙ্গ নেভিগেশন একটি বিট বাইরে যাচ্ছে - শূন্য ফাংশন। একটি ফাংশন সর্বদা কিছু না কিছু ঘটে তাই ফলস্বরূপ বা তার সাফল্য বা ব্যর্থতা সম্পর্কিত কিছু অন্যান্য তথ্য ফেরত দেওয়া উচিত।
বেসিক এ পোকে ...
আমি আবর্জনা সংগ্রহ বলতে হবে। এটি মেমরি পরিচালনা সম্পর্কে চিন্তা করার প্রয়োজনকে দূর করে না, তবে এটি মেমরি পরিচালনা সম্পর্কে চিন্তাভাবনা করার ধারণার ধারণাটি সরিয়ে দেয়, যা প্রায়শই প্রকৃত চিন্তাকে মুছে ফেলে এবং তারপরে আপনি প্রচুর সংস্থান হোগগুলি পেয়ে যান এবং কেন তা জানেন না। বিশেষত যখন আধুনিক প্রজন্মের জিসিগুলির আচরণকে খুব বেশি হাইপারবোল ছাড়াই বর্ণনা করা যেতে পারে "যাইহোক ডিজাইনের মাধ্যমে একটি বড় মেমরি ফাঁস"।
সি, এবং অবশ্যই সি ++: পয়েন্টার গাণিতিক। লোককে মেমরি ঠিকানায় পূর্ণসংখ্যাকে রূপান্তর করতে দেওয়া সমস্যার জন্য জিজ্ঞাসা করছে।
এবং এমনকি পয়েন্টারগুলিতে পুরোপুরি কাঁচা অ্যাক্সেস?
সি ++ এ আপনার কাছে এমন উল্লেখ রয়েছে যা পয়েন্টারগুলিকে প্রায় সম্পূর্ণ অপ্রয়োজনীয় করে তোলে। বাকি ক্ষেত্রে স্মার্ট পয়েন্টারগুলি বাধ্যতামূলক বিবেচনা করা উচিত।
জাভাও প্রমাণ করে যে আপনি এমন একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ তৈরি করতে পারেন যা পয়েন্টারগুলিকে পয়েন্টার মানটিতে অ্যাক্সেস না করেই ব্যবহার করে।
ছাড়াও null
... তবে এটি আলাদা গল্প।
for(int i=0;i<SIZE;++i) ++arr[i]
তুলনায় ধীর for(int*i=arr;i<arr+SIZE;++i)*i++
। সমস্ত জাভা প্রমাণ করতে পেরেছিল যে আপনার পয়েন্টার লাগবে, বা আপনি কখনই তাকাচ্ছেন নি sun.misc.Unsafe
? আপনার যদি পয়েন্টারগুলির প্রয়োজন না হয় তবে দয়া করে জাভা ব্যবহার করে জেনেরিক অদলবদল কীভাবে লিখবেন তা ব্যাখ্যা করুন। (উদাহরণস্বরূপ int a = 1, b = 2; অদলবদল (ক, খ); দাবী (a == 2 && খ == 1);)। সি / সি ++ এ থাকা সমস্ত সমস্যার উল্লেখ না করে আপনি যদি উল্লেখ ব্যবহার করতে চান তবে আপনার থাকতে হবে। অস্বচ্ছ স্ট্রাক্ট ডাব্লু / ও পয়েন্টারে আপনি কীভাবে ভার্চুয়াল ফাংশনটিকে কল করবেন?