Paskalya yumurtalarına karşı hangi argümanlar var? Paskalya yumurtalarını bile destekleyecek herhangi bir tartışma var mı? [kapalı]


28

Biraz şakacıyım, o yüzden paskalya yumurtası fikri hala bana çekici geliyor. Onları koduma daha önce ekledim, ancak arkadaş grubumun yumurtayı tetiklemek için CTRL-FU'yu kullanma şakası var.

Şimdi performans konusunda biraz paranoyaklık yapıyorum, bu yüzden mümkün olduğunda fazlalığı çıkarmaktan hoşlanıyorum. Bu% 100 gereksiz kod olduğu için Paskalya yumurtaları ile büyük ölçüde çelişir.

Paskalya yumurtalarına karşı hangi argümanlar var? Ayrıca, paskalya yumurtalarını bile destekleyecek herhangi bir tartışma var mı?


5
IMHO'nun bu sorusu aşağı oylamayı kesinlikle hak etmiyor, kesinlikle motive olmayan bir soruyu hak etmiyor. Ben kendime konuyla çok ilgileniyorum. Özellikle son kullanıcılar tarafından nasıl algılandığını bilmek, gerçek patronlar.

Klasik bir @Mark Trapp için bu çok önemli "Karşılaştığınız gerçek sorunları çözmek için buradayız."
Gratzy

1
@ChrisF wow eğer sorum programmers.stackexchange.com/questions/38810/… "gerçek soru" cevabını alırsa ve bana bunu söylediğin zaman bu sitenin amacı konusunda kafam karıştı değil mi?
Gratzy

1
Harika bir soru, IMHO.
Uri

1
@Mark C Aye, sadece kaynakları boşa harcayan paranoyak davrandım.

Yanıtlar:


11

Her zaman olduğu gibi cevap "bağlıdır".

Paskalya yumurtaları, "dünya" programının araştırılmasını teşvik etmenin bir yoludur. Bir oyunda oldukça açık - en yüksek dağın tepesine tırmanıyor ve onu buluyorsunuz (örneğin), ancak diğer uygulamalar için Paskalya Yumurtanız olarak gizli seçenekleri kullanmak zorundasınız. Bununla birlikte, bazı insanlar tarafından anlamsız olarak görülüyorlar, bu yüzden çok ciddi bir iş uygulaması yazıyorsanız, kullanıcılara büyülü tuş kombinasyonunu buldukları sırada şarkı söyleyen bir hamster (veya ne olduğunu) ekranını sunarak kullanıcılarını üzmek istemezsiniz. .

Bir uygulamada bir Paskalya Yumurtasının olması performans üzerinde zararlı bir etkiye sahip olmamalıdır. Bu nedenle, uygulamanızın normal çalışması için klavye girdisini ayrıştırmadığınız sürece , tetikleyici olarak Ctrl+ işaretine sahip olmak FUkötü bir fikirdir. Kod, yalnızca bulunursa yürütüldüğü sürece çalıştırılma cezası yoktur. Tek ceza, program büyüklüğündeki artıştır - ki bu sorun olabilir veya olmayabilir. Programın boyutu bir sorun ise, kesinlikle bırakın.

Bununla birlikte, ekstra kodlara sahip olmak bir destek sorunudur. Kodu desteklemeniz ve çalıştığından ve yürütüldüğünde sorun yaratmadığından emin olmanız gerekir. İstediğiniz son şey, uygulamanızın kullanıcının Paskalya Yumurtası'nı bulması gibi çökmesi!


"Bir uygulamada bir Paskalya Yumurtası olması performans üzerinde zararlı bir etkiye sahip olmamalıdır. Bulunduğunda, çalışma zamanı cezası olmadığı için çalıştırılacaktır." Gerçekten mi? OP belirtildiği gibi bir CTRL-FU tarafından tetiklenirse, o zaman her tuş vuruşunu hapsedemezsiniz?
Gratzy

2
@Gratzy - Aslında bu iyi bir nokta - normal işlem için tuş vuruşlarını tutmadığınız sürece kötü bir Paskalya yumurtası örneğidir.
ChrisF

7

Bu, geliştirdiğiniz yazılım türüne oldukça bağlı olduğunu söyleyebilirim.

Paskalya yumurtalarının, iş yazılımlarından ziyade oyunlarda kabul edilmesinin (hatta takdir edilmesinin) olasıdır. Microsoft bile bazı Paskalya Yumurtası ürünlerine koymuş, ancak hemen şimdi tamamen durdu. Microsoft'un Easter Eggs'i yerleştirmeyi bırakmasının nedeni, Easter Eggs'e karşı olası nedenlerle yakından ilgilidir: güvenlik endişeleri. İlgili Wikipedia makalesinde belirtildiği gibi, Easter Eggs genellikle (en azından kullanıcı / müşteri için) kodun belgelenmemiş kısımlarıdır ve bu da ürünün saldırılara veya güvenilmez başka şekillerde daha açık olduğuna inanmasına neden olabilir. Ayrıca, tüm Easter Egg kodları test edilip denetlenmez aynı derecede "kritik görev" kodudur. Bu, kod tabanındaki daha sonra yapılan bir saldırının veya kötü amaçlı yazılımın kötüye kullanımının kaynağı olabilecek keşfedilmemiş kusurlara veya döngü deliklerine neden olabilir.

Bununla birlikte, tüm Paskalya Yumurtaları "kötü" değildir ve ürünün gerçek koduna müdahale etmeyi gerektirir. Paskalya Yumurtası'nı sunmanın pek çok yolu vardır, özellikle de kodun içerikten biraz ayrı olduğu oyunlarda (oyun / grafik / komut dosyası motoru ile gerçek komut dosyası veya seviye dosyaları). Bu yollar özel dokulardan / nesnelerden ve kahramanın sesli yorumlarından (örneğin DN3D'de: Doom , Terminator , Indiana Jones , Star Trek'te kullanıldığı gibi ) gizli seviyelere ( "inek seviyesi yoktur" ) belirli bir nesnenin ne zaman olduğunu gösteren diyaloglara kadar uzanır. kullanıcı arayüzündeki / location tıklandı ve daha fazlası. Elbette bunların hepsi her ürün için uygun değildir.

Bir Paskalya Yumurtası'nı ürününüze koymanın güzel bir yolu, kendinizi bir şekilde (yalnızca krediler bölümüne değil) dahil etmektir. Blizzard bunu StarCraft 2 ile çok güzel bir şekilde yaptı . Bir birim portre aslında geliştiricilerden birinin yüzü. Bu kadar açık olmayan bir şey genellikle farklı yazılım türleri için uygundur çünkü medya bilgisine ya da belirli bir mizaha dayanmaz. Örneğin, kendinizi ürünün içeriğine bir karakter olarak dahil edebilirsiniz. Ürüne bağlı olarak, bu kod için bir şans bile gerektirmeyebilir veya yalnızca çok basit bir kod gerektirebilir.

Paskalya yumurtaları imho güzel ama gerekli değil. Bir Easter Egg'in uygulanması hiçbir zaman gerçek üründen mahrum olmamalı ve sunumu nihai ürünün girintili hedef kitlesine uygun olmalıdır. "Ciddi" bir uygulamadaki bir Paskalya Yumurtası veya yetişkin olmayanları hedef alan bir ürün, ne kadar komik veya zararsız olursa olsun, asla yetişkin mizahını veya cinsel içeriği içermemelidir. Bu sadece yasal sonuçlara yol açmayacak, aynı zamanda yazılımın pazarlama alanını da etkileyecektir ( örneğin, USK / PEGI / ESRB derecelendirmeleri).


1
Microsoft’un Paskalya yumurtalarını kodlarına koymaktan niçin vazgeçtiğine gerçekten bakmanız gerekiyor . Bir paskalya yumurtası tamamen test edilmemiş bir kod yoludur (paskalya yumurtasına tam bir KG yapma şansınız varsa, neden bunun yerine farklı, kullanışlı bir özellik eklemek için zaman ayırmadınız?) potansiyel bir güvenlik açığı kaynağıdır.
Anon.

@Anon: Cevabımda belirttiğim Wikipedia makalesinden: "Geçmişte Microsoft, en büyük ve en ayrıntılı Paskalya yumurtalarından bazılarını yarattı. Onların Güvenilir Bilgi İşlem İnisiyatifi. " Bu ifadenin kaynağı Charles'ın cevabına bağlı MSDN blog yazısıdır. İfademe hiçbir çelişki görmüyorum. Nerede yanlış yaptığımı açıklayabilir misiniz? :)
Baelnorn

Cevabın ilk bölümünde "hey, Microsoft bunu yapardı, harikaydı değil" gibi yazıyor, ancak daha sonra yapmamalarının gerçek nedenleri yanıtın yarısına gömüldü. Sıradan bir okuyucu bunu görmeyecek ve ilgili bağlamla bağlantısı kesilmiş. İdeal olarak, eksilerini biraz daha belirgin hale getirmek için paragrafların değiştirilmesini istiyorum.
Anon.

@Anon: Başınız için teşekkürler. Cevabımı düzenledim ve birinci kısımda Enerji Verimliliği'ne karşı nedenlerini ayrıntılarıyla anlatan paragrafları yeniden sıraladım.
Baelnorn

5

Paskalya yumurtaları, 80 ve 90'lardaki büyük ticari yazılım sürümlerinde bile yaygındı. Çoğunlukla tatlıydılar ve görece az sayıda insan onlar tarafından rahatsız edildi. Bugün üç nedenden dolayı daha az yaygın olduklarını düşünüyorum:

  1. Tüm pratik şakalar gibi, biri gözünü dikene kadar komikler. Paskalya yumurtanızda veri kaybına veya performans sorununa neden olan bir hata varsa, o zaman aslında "kötü amaçlı yazılım" dağıtmadığınızı bir avukatla açıklamak zorunda kalabilirsiniz.

  2. Mizah çok, çok, doğru bir şekilde yapmak zordur ve yanlış yaparsanız daha sonra yazılımınız için ödemeyi durduracak ve ne korkunç, olgunlaşmamış bir şirkette çalıştığınız hakkında basına çok kötü mektuplar yazacak müşterilere para ödeyeceksiniz. için. Ctrl-FU tarafından tetiklenen bir paskalya yumurtası örneği mükemmel bir örnektir. Bu, muhtemelen 17 yaşındaki arkadaşlarınız için histerik olarak eğlencelidir, ancak müşterilerinize "FU" demeyi asla şaka yapmadan söylemenin 0ncı kuralıdır. Paskalya yumurtasının büyük ticari yazılımdaki ASLA kullanıcılarla, sadece rakiplerle eğlenmediğine dikkat edin.

  3. Ölümsüz film içinde Monkees Peter Tork deyişiyle Başkanı : "mizah duygusu olan bir adama kimse kredileri para" Kritik bir yazılım altyapısı satın alıyorsanız, yazardaki mizah anlayışı güven verici değildir. Bunun yanında, neden çok sayıdaki güvenlik sorununu gidermek için Paskalya yumurtaları yazmak için zaman harcıyorlardı?

Larry Osterman, yıllar önce Microsoft'taki OS grubunun neden Paskalya yumurtalarına izin vermediğini tartışan oldukça ünlü bir blog yazdı .


1
Bugün bile Google’ın bir paskalya yumurtası var - bu da her aramada Paskalya Yumurtasını tetikleme girişini kontrol ettikleri anlamına geliyor. Muhtemelen fazla işlem yapmıyor, ama her gün işlediği yüz milyonlarca arama göz önüne alındığında ... Bilmiyorum.
Charles Salvia,

CTRL-FU’yu bir tür KUNG-FU olarak okuduğumu itiraf etmeliyim.
Christopher Creutzig

@Christopher bu kusursuz bir yorum. Mizah, sıklıkla, birini rahatsız etme riski taşımadan yazılımınıza koymanın zorluğunun bir parçası olan birden fazla yoruma tabidir.
Charles E. Grant,

@CharlesSalvia "Bunu mu demek istediniz" sonuçlarını belirlemek için aramaları nasıl işlediklerine bağlı olarak, bu davranış için zaten orada olanların üstüne herhangi bir ek yük ekleyemeyebilir.
JAB

4

Paskalya yumurtaları inşaatçılar tarafından bırakılan küçük sırlardır. Son kullanıcılara zarar veriyor mu? Yok hayır.

Birçok tanınmış ve popüler yazılım parçaları gizli paskalya yumurtaları içermiştir . Paskalya yumurtaları ayrıca belirli bir dokunuşlu konu hakkında geliştiricilerin duygularını zarif bir şekilde göstermek için de kullanılmıştır.

Kod optimizasyonuna gelince, paskalya yumurtaları çok yoğun olmadığı sürece (merhaba uçuş simülatörü ) performansı anlamlı şekilde etkilememelidir.


Katılmıyorum. Bir paskalya yumurtası, kullanıcılara zarar verebilecek bir olayın oluşma riskini arttırır. En iyi ihtimalle, bu "eklenen özellikler" test edilir ve hem geliştiricilerin hem de KG'lerin basitçe kullanım sürelerini kullanır. En kötüsü, uygulayıcıdan başka kimse bilmiyor. Uygulayıcı daha sonra şirketten ayrılır ve daha sonra yazılıma yapılan bir güncelleme istemeden paskalya yumurtasının klavye olaylarını kesmek, mevcut tüm RAM'leri yemek veya aşırı bir durumda ... kullanıcının içeriğini silmek gibi işlemlerle kötü niyetli olmasına neden olur. Sabit sürücü Over-the-üst? Olabilir. Ancak bunların her birinin normal hatalar olduğunu gördüm.
mummey

@mummey: Bunun pek olası bir durum olmadığını düşünüyorum.
Josh K,

Bu riskleri azaltmak için elinden geleni yapmaz mısın?
StuperUser

@Stuper: Hiç programın çökmesini sağlayan bir paskalya yumurtası duydunuz mu?
Josh K,

Hiç duyulmamış, ancak Paskalya yumurtaları sırasında meydana gelen çöküşler, çoğu zaman sorunların yayınlanmasını garanti edecek kadar kritik değildir. Kullanıcılar genellikle normal çalışma sırasında çoğu MS program çökmesi için bilgi göndermez .
StuperUser

2

Easter Eggs yazılımını sevdiğim halde, eğlence için bir üründe bırakılan bir yumurta ile kötü niyetli bir arka kapı arasındaki çizginin yasal açıdan çok ince olabileceğini hatırlamak önemlidir. Mesela zarar göstermesi gerekli mi? Zarar verme niyetini kanıtlamak gerekir mi?

Mahkemelerin bilgisayar ve yazılım anlayışının oldukça sefil olduğunu göz önünde bulundurarak (bazı yazılım patentlerinde de belirtildiği gibi), böyle bir davayı tartışmak birkaç avukat Aspen'de güzel bir tatil evi satın alacaktır. Yazılımın dünya çapında yayınlandığı ve dağıtıldığı çeşitli yasal ortamlar (DMCA gibi) düşünüldüğünde, bunları Alplerde tatil evleri de satın alabilir.

İşe alınan mühendisler olarak firmamıza zarar vermeyeceğine söz veriyoruz. Dava zarar verebilir ve dava konusu yazılımları diğer müşterilere, özellikle de hükümetlere veya büyük işletmelere iletirsek olasıdır. Böylece, şahsen güvenli tarafta hata yapmayı tercih ederdim.

Unutmayın, mühendisler mantığını iyi amaçlarla kullanmak için var iken, avukatlar kötülük için mantığı bükmek için vardır. Bu yüzden bizden çok daha fazla para alıyorlar.


0

Pek çok kişi Paskalya Yumurtası'nın oyunlara daha uygun olduğunu belirtti ancak iş uygulamalarında kullanımları olduğunu düşünüyorum. Çok fazla insan, uygulamanın diğer alanlarına hiç bakmadıkları bir iş uygulamasını kullanmak için bir dizi yemek tarifi hazırlar. Demek istediğim, bir uygulamanın tüm bölümleri, eğitimlerinin bir parçası olmasalardı ve hiç kullanmamış olabilirlerse, asla bakmadıkları bir bölüm. Şu anda 75 rapor içeren bir uygulama üzerinde çalıştım ve kullanıcılar bilgi istiyorlardı ve hiçbir zaman tek bir rapor bile yayınlamadılar. Meraksızlıklarını gidermek için bazı teşviklere ihtiyaçları var (Savunması sırasında bazı kullanıcılar bir şeyleri kırmaktan korkuyorlar).


-2

Hata ayıklama ve kodlama için bana yardım etmek için Paskalya yumurtaları kullanıyorum. Bu yüzden koyduğum Paskalya yumurtaları bir amaca hizmet ediyor ve muhtemelen Paskalya yumurtaları olarak kabul edilmiyor.


Kullanımınızdaki 'paskalya yumurtası' ile tam olarak ne kastediyorsunuz? Bana bir örnek verebilirmisin?

Bu bir Paskalya yumurtası değil, o zaman bir arka kapı. Takım ekran faresinde (0,0) bir orta fare düğmesine çift tıklayıp ardından doğru şifreye girdiğinde GUI testi için özel bir şeyler yaparız. Bu, GUI otomasyon araçlarının kullanabilmesi için yapılır. Kullanıcılar bunu teoride de yapabilirler ancak pratikte oraya ulaşamazlar. Ayrıca, her yerde uyarı işaretleri var.
İş

1
@Glenn, iyi bir örnek olur ... eğer bir masaüstü GUI uygulaması gönderiyorsanız. Kullanıcı bir düğmeyi tıklattığında yeni bir iletişim kutusu açılır. Bir Shift tuşunu basılı tutarken kullanıcı bu düğmeye tıkladığında eski bir tuşa basar. Bu, yeni pencere aracının neden olduğu hataları gidermeye çalışırken eski ve yeni işlevleri karşılaştırmanın iyi bir yolu olacaktır. Eğer ihtiyatlıysanız, ikili kodu girip arka kapıdan çıkabilirsiniz. Sonra, şeyleri hata ayıklamanız gerektiğinde, rahatsızlık duyma, yeniden oluşturma ve şimdi iki şeyi yan yana karşılaştırabilirsiniz. Dave, gök gürültünüzü çalmaya çalıştığım için üzgünüm.
İş
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.