Günde bir kez kullanıcı işlemi: 24 Saat Sıfırlaması vs. Gece Yarısı Sıfırlaması [kapalı]


24

Bir kullanıcı günde yalnızca bir kez bir eylem gerçekleştirebiliyorsa, örneğin bir yarışma için ücretsiz bilet almak durumunda, deneyimimde karşılaştığım iki olasılık var.

1) 24 Saat Sıfırlama

Eylemi 1. gün 11: 45'te gerçekleştirirse, eylemi yalnızca 2. gün veya saat 11: 45'te tekrar gerçekleştirebilir. 2. günde saat 11: 44'te yapamaz.

2) Gece Yarısı Sıfırlaması (veya herhangi bir sabit süre)

Kullanıcı ne zaman eylemi 1. günde gerçekleştirirse yapsın, gece yarısı döner ve 2. gün başlar başlamaz, tekrar yapabilir.


Her ikisi de kullanıcıyı günde yalnızca bir eylem gerçekleştirme konusunda sınırlandırıyor, ancak çoğunlukla iki nedenden dolayı oldukça uygunsuz olduğunu düşündüğüm yöntem 1'e rastladım:

  • İlk önce biraz beklemeliyim
  • ve uzun bir süre boyunca ikincisi, eylemi gerçekleştiren zaman damgam daha sonra ve daha sonra olacak, çünkü eylemi her gün tam olarak o zaman damgasında, sadece birkaç saniye veya dakika sonra gerçekleştiremem.

Bence, önceden belirtilen kullanıcı için bence önemli dezavantajı olsa da, birinin yöntem 1'i tercih etmesinin teknik bir nedeni var mı ?


Düzenlemek, belirtmek için: Özellikle, 24 saatte bir ücretsiz döndürme şansı elde ettiğiniz , Teori11'in geçerli ücretsiz döndürme etkinliğinde olduğu gibi, 24 saatlik gerçek zaman boşluğunun gerekli olmadığı bir örnekten bahsediyorum. ödüller kazanırken.


5
İşlemler arasındaki gerçek süreyi sınırlamak için bir neden olabilir, bu yüzden 24 saatlik bir kilitlenmeyi tercih ediyorlardı. Örneğin, seçenek 2 ile eylemi 23: 59'da ve 00: 00'da tekrar yapabilirsiniz.
Ivo Coumans

21
Bu sorunun cevabı tamamen probleme özgü olacaktır ve bu sorunlara da cevap vermek zor değil. Yazılım, iş kurallarını uygulamak için geliştirilmiştir, tersi olmaz.
Blrfl

4
Gece yarısının keyfi bir zaman olduğunu unutmayın. İstediğiniz zaman kolayca olabilir.
David Starkey

2
Bir çeşit yazı, gece yarısı gece baykuşları için sorunlu olabilir. Bunun üstesinden gelmek için, WoW, örneğin, "günlük" olayları 3 veya 4'te sıfırlar.
Kevin

6
Not: Her 21 saatte bir Aksiyona izin veren çeşitli oyunlar vardır. Teorik olarak, kişi bunu günde 1'den fazla almak için kötüye kullanabilir, ancak bu, uykunun ortasında uyanmak anlamına gelir; bu, sunucular için genellikle bu kadar büyük bir şey olmayacak kadar nadirdir. Daha sonra kullanıcılar, her gün yavaş yavaş ilerlemeden zaman aşımına uğramadan "her sabah" oturum açmalarına izin verir.
Mooing Duck

Yanıtlar:


21

Genellikle gece yarısı sıfırlama beklediğim gibi şaşırıyorum.

Ancak, her 24 saatte birden fazla gece yarısı olması nedeniyle, büyük bir dezavantajla gelir. Saat diliminizi seçmeniz gerekir.

Belki de bu nedenle 24 saatte bir evrensel seçildiğinden, şirketin farklı ülkelerdeki kullanıcıların yarısının gece yarısı olmayan yerel bitiş zamanları olabileceğini veya "gece yarısı" ifadesinin gece yarısını ima ettiğini düşünmek yerine kabul etmek istemeyeceğini hayal edebilirsiniz. ve böylece pazarlamayı "saat başına bir" olarak değiştirdiler ve uygun olan yazılımı belirlediler.

Her ne kadar bu günlerde "2 GMT'de biter" ya da benzerlerini görmek oldukça yaygın olsa da.

Her kullanıcı için son bir işlem tarihi saklama zorluğunun, kullanıcılara veya işlem türlerine bir saat dilimi atamaktan daha zor olacağını düşünmüştüm.

Düzenleme Ben iki yöntem arasındaki farkları dikkate değer olduğunu düşünüyorum

24 saat kuralı

  • Sabit bir etkinlik akışı elde edeceğim, oran 24 saatte 1'den daha az olacak.
  • İşi bitirdiğimde bazı kullanıcılar daha az etkinlik alacak.
  • Her olayı son olaya kaydetmem gerekiyor
  • Gün ışığından yararlanma uzun veya kısa bir güne neden olduğunda, günde 1 etkinlik olmaz
  • İnsanlar tam olarak 24 saate varamayacaklar, bu yüzden doğal olarak ortalama günde 1'den az kazanacağım.

Takvim günü kuralı başına 1

  • Bir takvim gününe atanan 50h (? UTC + 14 ila -12?) Dönemindeki kepçe etkinlikleri alıyorum
  • gerçekçi bir şekilde her olayı son günkü etkinliği 'gün' olarak kaydetmem gerekiyor
  • Ben sonra tüm olayları söyleyebiliriz günün kesin bir hedefimiz var mı şimdi günde değiliz.
  • Etkinliğinin hangi gün için geçerli olduğunu bilmek için kullanıcının yerini bilmem gerekiyor
  • Bazı insanlar “günde” diğerlerinden daha uyanıktırlar.

UTC kuralında takvim günü başına 1

  • 24 gün uzun süre üniforma alırım
  • Olaylarımı kovalayabilirim
  • Bir günün başlangıcı ve bitişinin ne zaman olduğunu biliyorum.
  • Günışığı tasarrufları insanları şaşırtacak.
  • İnsanlar günde 1 etkinlik yapabilir
  • Greenwich yakınlarında yaşamıyor insanlar komik başlangıç ​​ve bitiş zamanları olacak
  • Belki akıllıca bir optimizasyon yapabilir ve girilen kullanıcıların listesini saklayabilirim? (muhtemelen her kullanıcının etkinliğini ve zamanını saklamaya başlayacağım)

* Olayları kovalamak, çeşitli raporlama amaçları için süper yararlı olacak. Örneğin. Her 24 saatlik dönemde kazanılacak 10 ödülüm olduğunu ve zaman içinde farklı olduklarını söyle. 10. günde kaç öğrenci girdi? vb


Benim düşüncelerime dokunmakla eşit derecede şaşırdım. 24 saatlik sıfırlama işlemine devam etmenin oldukça tembel olacağını düşünüyorum, ancak @Richard Ward'ın cevabında belirtildiği gibi, tüm zaman dilimlerine saygı duymak daha zor olabilir ve olayın başladığı ve bittiği zamanki iletişim sorunlarına bile yol açabilir.
RUL

Bence cevapların kafan karışmış. Ancak yansıma üzerine, bunun muhtemelen bir işletme / geliştirici iletişim sorunu olduğunu düşünüyorum. Sadece planlama toplantısını hayal edebiliyorum ... Satışlar: "Öyleyse kullanıcıların günde sadece bir kez teklif almasına izin verilmelidir." Dev: "Ya uçuyorlarsa ve uluslararası tarih çizgisini geçerse? İki sipariş verebilirler? " Satışlar: "..... hayır ... 24 saate 1 diyelim" Dev: "Tamam, hmm, tüm bu verileri depolamak için daha fazla masaya ihtiyacımız var!" Satışlar: "whateves"
Ewan

Görüyorum ki 24 saatlik yaklaşım daha az karmaşık mı? Çünkü ek bir masaya sahip olmaktan ayrı olarak sanmıyorum, sadece 24 saat söylemek farklı zaman dilimlerinde kontrol etmek ve hesaplamaktan çok daha kolay. Fakat burada iyi bir noktaya değindiniz: saat dilimini terk ederek aslında birden fazla dönüş elde edebilirsiniz.
RUL

4
Bunun için daha az karmaşık olduğunu düşünüyorum açıklamak
Ewan

10
Bu. Saat dilimine bağlı nesneler, 24 saat zaman aşımı kuralını kullanarak kapalı bırakabileceğiniz bir sürü solucan kutusu açar. Ve bir eylem gerçekleştiğinde, belirli bir günde gerçekleştiğini depolamaktan daha zor değildir.
cmaster

14

Başımın üstünden:

  • "Son işlemden bu yana 24 saat" sürümünü uygulamak daha kolay olabilir
  • Kullanıcı eylemi son seferden tam olarak 24 saat sonra gerçekleştirmezse, o zaman 24 saatlik bir süreyi kaçırabilir, çünkü sıfırlama uykudayken veya çalışırken sıfırlanmalıdır. Belki de işe gitmeden önce sabah saat 07: 00'de yaparlar ve saat 8'de işe giderler. Ertesi gün, saat 7: 15'te, sonra 7: 30'da, sonra 7: 45'te ve son günlerde, ayrılmadan hemen önce eylemi gerçekleştirmek için 8: 00'e kadar kalıyorlar. Ertesi gün, saat 8: 15'e kadar kalmak istemiyorlar, bu yüzden o sabahı özledim ve akşam 6'dan işten eve döndükten sonra 34 saatlik bir boşluk bıraktıktan sonra yapın. Projenin sonucunun şirket için pahalı olması durumunda tasarruf, rahatsızlıktan daha önemli olabilir.

3
Sinsi pazarlama sebebi iyi, kullanıcıların bir günü özlemesini sağlamak.
RUL

1
@RUL Veya, belki de daha fazla noktaya geldiğinde, bir kullanıcının ücretsiz olanı kaçırması durumunda "ücretli ekstra sıkma" (veya ne olursa olsun) satın alma olasılığı daha yüksektir. Döndürme yapmanın maliyeti önemsiz olabilir, ancak zaman zaman ekstra satışlar buna değer olabilir.
TripeHound

ABD'deyken Zulu vaktine dayanan bir oyun oynadım. Bir faaliyet yapabildiğimde veya yapamadığımda dürüst olmak benim için önemsiz değildi.
Cort Ammon - Monica 16

2
Nokta 2, Blizzard'ın (vb.), WoW ve diğer MMORPG'lerde 24 saatlik sıfırlama zamanlayıcısından kaçınmasının ve günlük sıfırlama yapmasının nedenidir.
Adonalsium

8
Bazı şirketlerin sadece daha az katı bir "günlük" kullandığını belirtmek faydalı olabilir - League of Legends, "günün ilk galibi" için 21 saatlik bir kilitleme kullanıyor. Oyuncular için elverişli iken ikramiye günlük olarak tutmak için yeterli. İlk oyununuzu her zaman kazanamayacağınız ve ~ 30-50 dakika süren bir fikir yüzünden kısmen olabilir, bu yüzden sıkı bir saat gerçekten sinir bozucu olurdu (zamanı 30 dakika kadar geri çekeceğiniz için) bir gün, hangi noktada ilgi çekici değil çünkü yoğun bir programda her 3 günde bir ilk kazanmayı elde etmek için sadece boş zamanınız var).
Delioth

8

Diğer cevapların belirttiği gibi, 24 saat yöntemi birden fazla zaman dilimine daha uygundur ve her kullanıcı için son başarılı zaman damgasını kaydettiğiniz gibi kodlaması da kolaydır.

Ayrıca, kullanıcının tüm günlük eylemleri almak için her gün uygulamayla etkileşimde bulunmasını gerektiren "fayda" da eklenmiştir. Bir gece yarısı sıfırlaması söylenirse, kullanıcı 23: 59'da ve daha sonra 12: 00'da bir işlem yapabilir. Bunu her gün yapabilirlerdi ve hala tüm hareketleri yapabiliyorlardı. Bazı uygulamalar için günlük işlemlerin amacı, kullanıcının günlük olarak uygulama ile etkileşime girmesini sağlamaktır; bu nedenle bu daha az idealdir.

Her ikisinin de kullanıcı arayüzünün tuzaklarından kaçınan, ancak kodlaması biraz zor olan üçüncü bir alternatif var.

3) (n-0.75) * 24 saat içindeki n eylemden daha fazla çizgi yok

Saklamak için iki değişken gerektirir, ancak sistemi kötüye kullanmayan bir kişinin saatlerini ve sıfırlamaları dert etmeden endişelenmeksizin herhangi bir gün içerisinde bir eylemini kullanmasına izin verir.

Ayrıca, herhangi birinin 1 "fazladan" eylemden daha fazlasını kullanmasını engeller.

Bu yüzden gerçekte çizginin başlangıç ​​zamanını, son oynatma zamanını ve çizginizdeki eylem sayısını kaydetmeniz gereken algoritmayı uygulayın.

Son işlem zamanını takip etmek birbirine çok yakın iki hareketi reddetmenize izin verir. Bu sınırı 24 saatten daha az yapabilirsiniz, çünkü çizgi günün erken saatlerinde sürünmeyi önler.

Her gün harekete geçtiğiniz sürece bir çizgi devam ediyor. Bir eylemde bulunmak, sıranızdaki günlerden daha fazla eyleminiz olduğu anlamına gelirse, reddedilir. Bu, yavaşça ileri sürünmeyi önler, "ekstra" işlemlerde paketleme yapar, çünkü çizginizin başlangıç ​​zamanı değişmez.

kontrolü uygulamak ve süreleri izlemek için bazı sahte kodlar:

//precondition: streakStart and  lastAction are initialized as in the far past
//              streakCount is initialized as 0
graceHours=18;
checkAllowed(currentTime,&streakStart,&streakCount, &lastAction){
    diffhours=hoursDifferent(lastAction,currentTime);
    if(diffhours< 24 - graceHours){
        return false;
    }
    diffhours=hoursDifferent(streakStart,currentTime);
    if(diffhours <= 24*streakCount - graceHours){
        return false;
    }
    if(diffhours > 24*(streakCount+2)-graceHours){
        streakStart=currentTime;
        streakCount=0;
    }
    streakCount++;
    lastActionTime=currentTime;
    return true;
}

Ek bir bonus olarak, isterseniz bir çizgi sayacı olsun.


Sanırım bu kullanıcı için "sadece işe yaradığı" için bu muhtemelen en iyi cevap. Tek dezavantajı anlamak zor olabilir, ancak bu sadece sistemi oynamaya çalışan insanları etkilemelidir. Bu çalışma yapmanın önemli olduğunu düşündüğümden beri 18 lütufu metinde açıklanabildi (sanırım daha düşük olması gerektiğini düşünüyorum)
rtpax

İlginç bir yaklaşım, bunlara rağmen, bunun nasıl çalıştığını, kelimelerle daha fazla açıklayabilir misiniz?
RUL

@RUL Temel fikir, bir kullanıcı için sıfırlama süresinin ilk işlemlerini yaptıktan sonra kilitlenmesidir. Daha iyi bir kullanıcı deneyimi sağlamak için işlemlerini yaparken tam olarak kilitlenmemiş, ancak biraz önce (bu durumda 18 saat önce) kilitlenmiştir. Bu, kullanıcının biraz ilerlemesini sağlar (ilk iki eylemini yalnızca 6 saat içinde gerçekleştirebilir), ancak başlangıç ​​hala kilitli olduğundan kümülatif bir hata yoktur - zarafet süresini uzatmışlarsa, beklemeleri gerekir. Bir sonraki eylem için en az 24 saat.
Jacob Raihle

5

İşlemler arasındaki 24 saatlik süre ile ilgili probleminiz hakkında, bazı şirketler bunun yerine 22 saatlik bir süre kullanır, bu şekilde kullanıcılar işlemin gerektiği günün tam anında biraz harekete geçerler ve yine de kullanıcıları eylemi gerçekleştirmeye teşvik ederler. günde bir kez -no 23:59 - 00:00 boşluğu.

Cevap değil ama yorum yapacak kadar puanım yok.


Sanırım bu web sitesi oylar gibi harcanabilir şeyler yapıyor. Her 24 saatte bir, ancak her 16 saatte bir sıfırlamazlar (tam numaradan emin değiller). Sanırım mantıklı - diyelim ki gününüze sabah 8'de başlıyorsunuz ve oylamaya yukarı / aşağı başlıyorsunuz - saat 6'da 2'de oy kullanmıyorsunuz. 24 saatlik sıkı bir sıfırlama işlemiyle, son oylamada sıfırlama zamanını seçerseniz, normal zamanınız yerine oylamaya başlamak için 2: 00'ye kadar beklemeniz gerekir ve zamanınız olmayabilir. Eğer seçerseniz ilk oyu bir gün 10 AM oy vermeye başlayın ama 08:00 sonraki, o zaman bir sorun var.
VLAZ

Şimdi bunun hakkında düşündüğüm halde - eylemlerin kilitlenme süresinin gerçekten 16 saat olup olmadığından emin değilim. 24 saat olabilir ve günlük sıfırlamadan 8 saat sonra yakalamış olurum. Ancak, mantığın geçerli olduğunu tahmin ediyorum - eğer 24 bireysel zamanlayıcınız varsa, o zaman bir kullanıcı için uygun olmayabilir.
VLAZ

Bu, 34 saatlik bir sıfırlama işleminin tam tersi bir problemi var, kullanıcıların her zaman olabildiğince çabuk davranırlarsa ilave eylemlerde bulunabiliyorlar (tabii ki korkunç bir uyku takvimi gerektirecek ...)
Rick

3
tl/dr: 24 hour resets are the lazy man's way of minimizing load spikes

Yukarıdaki cevaplara ek olarak, gece yarısı sıfırlama işlemi trafikte oluşan dalgalanmaları teşvik eder. Eylem belirli bir zamanda tüm katılımcılara uygun hale gelirse, o zaman birçok insanın aynı anda bu hareketi denemesi için bir teşvik olacaktır. Bu, çoğu devletin ehliyetinizin belirli bir tarih yerine doğum gününüzde (ABD) sona ermesinin nedeni aynıdır: Herkesin ehliyetinin 1 Ocak'ta sona ermesi durumunda, DMV devam edemez.

Küçük Kenara : bir bilgisayar sisteminin çok sayıda kullanıcı için günde bir kez işlem yapması gerekiyorsa, aynı soruyu sorabilirsiniz ve genellikle bunu her ikisinin bir kombinasyonu olarak tasarlarım. İki cron görevi hayal edebilirsiniz:

  1. Gece yarısı çalıştırın, tüm kayıtları bulun, harekete geçin
  2. Her dakika çalıştırın (veya normal frekansta), dün saat 00: 00'dan beri işlem yapmayan tüm kayıtları bulun, işlem yapın, işlem yapıldığını kaydedin

Uygulamada eski olanı kırılgan buldum. Bir cron görevi çalışırken kırılırsa, bazı numaralar eylemi uygulamamış olabilir ve sistemin nerede olduğunu hatırlaması ve kaldığı yerden alması için ek çalışmaya gerek olabilir. Ayrıca, cron görevinizin hepsini makul bir süre içinde işleyemediğine dair yeterli kayıt elde ederseniz sorunlara neden olabilir ve bitirmeden önce kapanır.

İkincisi, bu endişelerin her ikisine de bakar. Her şeyin tam olarak 24 saat arayla işlenmesini hedeflemiyor, ancak cron göreviniz her gün tüm eylemleri kolayca gerçekleştirebildiği sürece, oldukça yakın olacaklar ve herkesin her gerçek günde çalışmasını garanti edeceksiniz (örn. 24 saatten fazla yavaşça parçalanan şeylere sahip olmayacaksınız). En önemlisi de, eğer bir nedenden ötürü bozulursa, bıraktığı yeri kolayca toplayacaktır.

https://www.youtube.com/watch?v=hoMO1yYC7pQ


0

TfL'de (Transport for London) günlük otobüs / tren biletleri 4:30 - 4:30 arası geçerlidir. İnsanlar uykuda iken geçiş yapın. Birçok insan gece yarısı saat 8: 30'dan bir saate kadar olan bir servisi kullanmak isteyeceklerdir.


4
Bu kesinlikle yerel kullanım için uygundur, ancak internetten etkileşimler bekliyorsanız, herkese uyan bir sıfırlama zamanı seçemezsiniz. Yerel olarak bile insanlar farklı uyku zamanlarına sahiptir - vardiyalı çalışanlar, vs. Küçük itiraz, -1 için yeterli değil.
Corey

@Corey Steam, zamanlayıcılarının çoğunu 10 AM Pasifik zamanına bağlar. Daha belirgin olarak, herhangi bir promosyona göre değişiyor - Günlük (her gün 10:00), Hafta Ortası (Salı-10:00 Cuma) veya Hafta Sonu (10:00 Cuma - 10:00 Pazartesi). Uluslararası bir mağaza olarak, herkesin karşısında uygulanır - bu saat 19:00 Orta Avrupa saati ya da New York'ta saat 13: 00'tür. Belki her saat dilimine uygun değil ama tutarlıdır. Ve açıkçası, ben bile PT kullanıyordum, o zaman sabah 10 çok uygun olmazdı - Avrupa'dayım, bu yüzden akşam benim için daha iyi.
VLAZ

0

Gece yarısı sıfırlama, hangi sorunu çözmeye çalıştığınıza bağlı olarak arzu edilebilir veya zararlı olabilecek belirli bir duruma sahiptir: Bu eylemi bir gün 11:59:58 ve tekrar 00: 00: 00'da gerçekleştirebilirim. Sorunlu alan herhangi bir rekabet ise, bu eylemlerini gece yarısına yakın bir yerde yapmayı seçen insanlara haksız bir avantaj sağlayabilir. 24 saatlik sıfırlama kuralı, günün hangi saatinde olursa olsun, mevcut işlemlerin adil bir şekilde dağıtılmasını sağlamanın tek yoludur.

24 saatlik sıfırlamanın daha sonra ve daha sonra olmasının sonucu, bir tolerans sağlayarak hafifletilebilir, örneğin, eylem gerçekten kaydedilmediği sürece gerçekleşen sıfırlamanın 15 dakika içinde bir eylem isteği kabul etme (veya almadığı sürece) etkisi) sıfırlama gerçekleşene kadar. Bu, çözüme biraz daha karmaşıklık getirir, ancak gece yarısı sıfırlama durumundaki gibi iki günlük eylemi birkaç saniye içinde gerçekleştirebilmek için herhangi bir azaltma stratejisi düşünemiyorum.


0

24 saat kuralının rutin düzenli ziyaretleri teşvik ettiği gerçeğinden bahsettiğini görmedim. Bir çok oyunda günde bir kez giriş / zafer ödülü 24 saatten sonra sıfırlanır çünkü 24 saatte bir kısa bir süre için kontrol etmek yerine her 48 saatte iki kez olmak yerine 24 saatte bir kısa sürede kontrol etmeyi tercih ederler. Bilet hediye barındıran web siteleri için benzer olduğunu hayal ediyorum.


1
Her iki yöntem de, 48 saat bekleyen ve eylemi 23:59:59 ve 00: 001'de gerçekleştiren birkaç kişi dışında, 24 saatlik bir ziyareti zorlar, ancak bunun oldukça alakasız olduğunu düşünüyorum.
RUL

@ RUL, benim için uygun bir zaman diliminde sıfırlama zamanları olan birçok oyun için arka arkaya iki kez check-in kullanıyorum. Bu yüzden bunun senin düşündüğün kadar alakasız olduğunu düşünmüyorum. Genellikle her 48 saatte bir oturum açmam, ancak hemen hemen her oturum açtığımda 2 işlem yaparım.
Rick
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.