Třída String

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Honza Marek
Člen | 1664
+
0
-

Ahoj, napadlo mě, jestli by nemohla být v Nette nějaká krásná třída String. Něco jako:

<?php
class String extends Object {
	protected $data;

	public function __construct($s = "") {
		$this->data = $s;
	}

	public function __toString() {
		return $this->data;
	}

	public function toLowerCase() {
		return new self(strtolower($this->data));
	}

	public function toUpperCase() {
		return new self(strtoupper($this->data));
	}

	public function startsWith($s) {
		return strpos($this->data, $s) === 0;
	}

	public function endsWith($s) {
		return strrpos($this->data, $s) === strlen($this->data) - strlen($s);
	}

	// ...
}
?>

Pořád mám totiž nutkání někde používat startsWith a endsWith. Takovou třídu si pravda můžu vyrobit sám, ale musím si vymyslet jiný název, aby to nekolidovalo se statickou třídou Nette\String. A jakýkoliv jiné jméno už nebude tak pěkné.

David Grudl
Nette Core | 8141
+
0
-

Kdysi jsem nad tím uvažoval, ale pak jsem si říkal, že dělat z PHP Ruby nebo JavaScript není nejšťastnější. Totiž obvykle dostaneš řetězec jako parametr funkce či metody. Abys mohl zavolat startsWith nebo endsWith, musíš jej nejprve zapouzdřit do objektu. A abys jej předal jiné funkci, musíš jej zase přetypovat na string (pravda, od PHP 5.2.0 je to díky __toString u mnoha nativních funkcí zautomatizované).

Takže mi z toho vychází, že pro PHP zůstává lepší mít méně elegantní třídu statických funkcí. startsWith a endsWith do ní rád přidám.

Panda
Člen | 569
+
0
-

David Grudl napsal(a):

Kdysi jsem nad tím uvažoval, ale pak jsem si říkal, že dělat z PHP Ruby nebo JavaScript není nejšťastnější. Totiž obvykle dostaneš řetězec jako parametr funkce či metody. Abys mohl zavolat startsWith nebo endsWith, musíš jej nejprve zapouzdřit do objektu. A abys jej předal jiné funkci, musíš jej zase přetypovat na string (pravda, od PHP 5.2.0 je to díky __toString u mnoha nativních funkcí zautomatizované).

Takže mi z toho vychází, že pro PHP zůstává lepší mít méně elegantní třídu statických funkcí. startsWith a endsWith do ní rád přidám.

Když už se bude přidávat do Stringu, nešlo by tam přihodit i funkce jako autoUTF, ekvivalent Texy::webalize a podobně?

Honza Marek
Člen | 1664
+
0
-

Takové webalize by bylo fajn. Nemůžu se ubránit dojmu, že to spíš patří do někam do Nette než do Texy.

David Grudl
Nette Core | 8141
+
0
-

Panda napsal(a):

Když už se bude přidávat do Stringu, nešlo by tam přihodit i funkce jako autoUTF, ekvivalent Texy::webalize a podobně?

Webalize určitě ano, ale autoUTF je určeno jen pro české a slovenské kódování, takže ne.

Honza Marek
Člen | 1664
+
0
-

Napadla mě další šikovná metoda. String::formatFileSize($size) pro lidské zformátování počtu bajtů do nějakého ###,## kB.

Mas3r
Člen | 116
+
0
-

Mě zase napadlo zkrácení textu na určitý počet znaků + … na konci

ViliamKopecky
Nette hipster | 230
+
0
-

Mas3r napsal(a):

Mě zase napadlo zkrácení textu na určitý počet znaků + … na konci

…se zaokrouhlováním na celá slova ;)

Asi přijdou na řadu vlastní prototypové knihovny.

David Grudl
Nette Core | 8141
+
0
-

obojí přidám. navrhuji tuto implementaci:

	/**
	 * Truncates string to maximal length.
	 * @param  string
	 * @param  int
	 * @param  string
	 * @return string
	 */
	public static function truncate($s, $maxLen, $append = "\xE2\x80\xA6")
	{
		if (iconv_strlen($s) > $maxLen) {
			$maxLen = $maxLen - iconv_strlen($append);
			if ($maxLen < 1) {
				return $append;

			} elseif (preg_match('#^.{1,'.$maxLen.'}(?=[\s\x00-@])#u', $s, $matches)) {
				return $matches[0] . $append;

			} else {
				return iconv_substr($s, 0, $maxLen) . $append;
			}
		}
		return $s;
	}



	/**
	 * Converts to human readable file size.
	 * @param  int
	 * @return string
	 */
	public static function bytes($bytes)
	{
		$bytes = (int) $bytes;
		$units = array('B', 'kB', 'MB', 'GB', 'TB', 'PB');
		foreach ($units as $unit) {
			if (abs($bytes) < 1024) break;
			$bytes = $bytes / 1024;
		}
		return round($bytes, 2) . ' ' . $unit;
	}

Truncate generuje tento výstup

Length -1: '…'
Length 0: '…'
Length 1: '…'
Length 2: 'Ř…'
Length 3: 'Ře…'
Length 4: 'Řek…'
Length 5: 'Řekn…'
Length 6: 'Řekně…'
Length 7: 'Řeknět…'
Length 8: 'Řekněte…'
Length 9: 'Řekněte,…'
Length 10: 'Řekněte,…'
Length 11: 'Řekněte,…'
Length 12: 'Řekněte,…'
Length 13: 'Řekněte, jak…'
Length 14: 'Řekněte, jak…'
Length 15: 'Řekněte, jak…'
Length 16: 'Řekněte, jak se…'
Length 17: 'Řekněte, jak se…'
Length 18: 'Řekněte, jak se…'
Length 19: 'Řekněte, jak se…'
Length 20: 'Řekněte, jak se…'
Length 21: 'Řekněte, jak se máte?'
Length 22: 'Řekněte, jak se máte?'

bytes generuje:

0 B
10 B
1.25 GB
...
Honza Marek
Člen | 1664
+
0
-

Funkci bytes bych přidal nepovinný parametr, ve kterém by se nastavila desetinná čárka.

David Grudl
Nette Core | 8141
+
0
-

Desetinná čárka se použije podle aktuálního locales.

Mas3r
Člen | 116
+
0
-

OK, super

Honza Marek
Člen | 1664
+
0
-

Nechceš někam do dokumentace založit stránku Nette\String? Zpracoval bych krátký přehled.

David Grudl
Nette Core | 8141
+
0
-

Může být Nette\String

soundake
Člen | 24
+
0
-

Díky za tuhle třídu. Moc užitečná. Můžu aspoň zahodit tu svojí již 4 roky starou :)

David Grudl
Nette Core | 8141
+
0
-

Říkám si, že funkce bytes by asi ve třídě String být neměla. Nejspíš vytvořím jinou třídu, třeba Nette\Locale, pro funkce jako bytes(), money(), plural(), timeAgoInWords() atd.

edke
Člen | 198
+
0
-

Dalsi napad pre triedu String

Je to strip a pouzivali sme to doteraz v Smarty. Velmi uzitocna vec, urcite to poznas, odstrani z bloku whitespaces. Napriklad pri zoznamoch IE nema rad whitespaces.

sablona default.phtml:

{block |strip}
	<ul>
		<li>ad 1)</li>
		<li>ad 2)</li>
		<li>ad 3)</li>
		<li>ad 4)</li>
	</ul>
{/block}

vysledny html kod:

<ul><li>ad1)</li><li>ad2)</li><li>ad3)</li><li>ad4)</li></ul>

a samotny patch, Template.php:

	/** @var array */
	private $helpers = array(
		'escape' => 'TemplateHelpers::escape',
		'translate' => 'TemplateHelpers::nop',
		'lower' => 'TemplateHelpers::lower',
		'upper' => 'TemplateHelpers::upper',
		'capitalize' => 'TemplateHelpers::capitalize',
		'nl2br' => 'nl2br',
		'truncate' => 'String::truncate',
		'bytes' => 'String::bytes',
		'strip' => 'String::strip',
	);

String.php:

	/**
	 * Strips whitespaces.
	 * @param  string
	 * @return string
	 */

	public static function strip($text)
	{
	    return preg_replace('!\s+!', '', $text);
	}
edke
Člen | 198
+
0
-

@David: Vsimol som si, ze String::webalize nie je v Templates.php registrovany ako defaultny helper.

Bug or feature ?

hrach
Člen | 1834
+
0
-

edke napsal(a):
vysledny html kod:

<ul><li>ad1)</li><li>ad2)</li><li>ad3)</li><li>ad4)</li></ul>

A není to náhodou NEpožadovaný výsledek??? Přeci nechci odstaňovat mezere (WS) v normálním zobrazitelném textu…

Výsledek by měl asi vypadat spíš

<ul><li>ad 1)</li><li>ad 2)</li><li>ad 3)</li><li>ad 4)</li></ul>

Editoval hrach (11. 10. 2008 9:49)

David Grudl
Nette Core | 8141
+
0
-

Jsem velmi opatrný s přidáváním nových funkcí a můj rozhled je také omezený, takže mi zkuste vysvětlit, k čemu by helpery strip a webalize byly užitečné.

(nevím o problému s IE a whitespaces; nebylo by kdyžtak lepší použít něco-jako-strip jako filtr na celou stránku?)

edke
Člen | 198
+
0
-

hrach wrote:

edke napsal(a):
vysledny html kod:

<ul><li>ad1)</li><li>ad2)</li><li>ad3)</li><li>ad4)</li></ul>

A není to náhodou NEpožadovaný výsledek??? Přeci nechci odstaňovat mezere (WS) v normálním zobrazitelném textu…

Výsledek by měl asi vypadat spíš

<ul><li>ad 1)</li><li>ad 2)</li><li>ad 3)</li><li>ad 4)</li></ul>

Ejha, tak to som si fandil :)) Ospravedlnujem sa, tu je opravena funkcia strip, ktora by mala fungovat uz o dost lepsie, berie do uvahy aj EOL Mac-ov, *nix aj windows.

/**
 * Strips whitespaces.
 * @param  string
 * @return string
 */

public static function strip($text)
{

	$lines= split("\n\r|\r|\n", $text);

	foreach( $lines as $line => $content ){
		$lines[$line]= trim( $lines[$line]);
	}

	$lines= array_diff( $lines, array( '' ) );
	return implode( '', $lines );
}

alebo takto:

/**
 * Strips whitespaces.
 * @param  string
 * @return string
 */


public static function strip($text)
{

	$result= null;
	$lines= split("\n\r|\r|\n", $text);

	foreach( $lines as $content ){
		$content= trim( $content);
		if ( !empty($content) ) {
			$result .= $content;
		}
	}

	return $result;
}

Trosku som to testoval, druha alternativa je asi o 6% rychlejsia. No ale s textom David pracuje nonstop, ak sa rozhodne to implementovat, asi napise lepsiu funkciu.

edke
Člen | 198
+
0
-

David Grudl wrote:

Jsem velmi opatrný s přidáváním nových funkcí a můj rozhled je také omezený, takže mi zkuste vysvětlit, k čemu by helpery strip a webalize byly užitečné.

(nevím o problému s IE a whitespaces; nebylo by kdyžtak lepší použít něco-jako-strip jako filtr na celou stránku?)

ad) strip:
link1, predposledny prispevok od usera WebJoel.

David Grudl
Nette Core | 8141
+
0
-

Možná by to šlo udělat takto:

public static function strip($text)
{
    return preg_replace('#\s{2,}#', ' ', $text);
}
edke
Člen | 198
+
0
-

David Grudl wrote:

Možná by to šlo udělat takto:

public static function strip($text)
{
    return preg_replace('#\s{2,}#', ' ', $text);
}

Len v tomto pripade stale ostavaju medzery medzi tagmi:

<ul> <li>ad 1)</li> <li>ad 2)</li> <li>ad 3)</li> <li>ad 4)</li> </ul>

Tie listy sa kvoli IE zvyknu prepisovat do takejto formy, kde sa uplne whitespaces medzi tagmi eliminuju a zaroven to ostava citatelne:

<ul><!--
        --><li>ad 1)</li><!--
        --><li>ad 2)</li><!--
        --><li>ad 3)</li><!--
        --><li>ad 4)</li><!--
--></ul>

Alebo potom sablona je napisana klasicky:

<ul>
        <li>ad 1)</li>
        <li>ad 2)</li>
        <li>ad 3)</li>
        <li>ad 4)</li>
</ul>

a len sa necha prebehnut cez filter, ktory potom vygeneruje toto:

<ul><li>ad 1)</li><li>ad 2)</li><li>ad 3)</li><li>ad 4)</li></ul>
David Grudl
Nette Core | 8141
+
0
-

Není lepší CSS bug řešit opět v CSS, třeba tím nabídnutým kódem?

a {display: inline-block;}
a {display: block;}
carnaby
Člen | 7
+
0
-

Myslim ze by bolo fajn zladit funkciu String::bytes vlastne TemplateHelpers::bytes so standardom

Jan Tvrdík
Nette guru | 2595
+
0
-

Osobně jsem pro, ale hlavní problém je v tom, že i spousta lidí v oblasti IT neví nic o existenci něčeho jako KiB, natož takový BFU.

Tomik
Nette Evangelist | 485
+
0
-

Osobně jsem proti. Přijde mi docela úsměvné, že po poměrně dlouhé době, kdy se používají určitá pravidla zavede jistá společnost naprosto jiný standard až v roce 1998, tedy po více než několika letech používání jiného zavedeného postupu. Toť můj názor, uplatnění této normy IMHO nemá smysl – co vám vrátí OS, když si necháte zobrazit velikost filmu, že má několik GB nebo několik GiB? :)

Jan Tvrdík
Nette guru | 2595
+
0
-

Hlavní důvod, proč považuji zapis GiB lepší než GB je ten, že zápis pomocí GiB je jednoznačný, zatímco pomocí GB není. Pokud si myslíte, všichni chápou pod 1 GB 1024 MB, tak se mýlíte. Např. u DVD neznamená 4,7 GB (4,7 × 1024) MB, ale (4,7 × 1000) MB. Proto spousta lidí nachápe, proč na DVD vejde ve skutečnosti „pouze“ 4,38 GiB. Jako další příklad chápání 1 GB jako 1000 MB je http://rapidshare.com.

pmg
Člen | 372
+
0
-

Zdá se mi to jako dobrý návrh. Asi to nadále budu číst jako megabajt, ale značil bych to MiB. Kdo nezná, určitě se dovtípí.

Bylo by také pěkné umožnit změnu desetinného oddělovače.

_Martin_
Generous Backer | 679
+
0
-

Souhlasím s Tomikem, v IT se pohybuji už nějaký čas a s těmito jednotkami jsem se setkal až teď (na střední škole se zaměřením na PC ani zmínka, na vysoké zatím také ne, z praxe: ani u odkazů pro stahování, operačního systému,…).

pmg
Člen | 372
+
0
-

Naprosto souhlasím, školství je v hrozném stavu.

Se jmennými prostory jsem se nikdy dříve nesetkal, ale začnu je používat, abych předešel kolizím názvů. S těmito jednotkami jsem se nikdy dříve nesetkal, ale začnu je používat, abych předešel kolizím názvů.

Argument setkal / nesetkal bych uvažoval, pokud by nebylo snadné se dovtípit, že KiB odpovídá starému KB. Myslím, že toto ale není ten případ. Navíc musím říct, že už jsem se se standardním označením na webu občas setkal.

_Martin_
Generous Backer | 679
+
0
-

pmg napsal(a):

Argument setkal / nesetkal bych uvažoval, pokud by nebylo snadné se dovtípit, že KiB odpovídá starému KB. Myslím, že toto ale není ten případ. Navíc musím říct, že už jsem se se standardním označením na webu občas setkal.

Setkal/nesetkal beru jakožto argumentaci z pohledu většiny. Jsem si jist, že typický uživatel internetu, který se není schopen dovtípit rozdílu kB a KB, bude označením KiB leda zmaten. Nicméně by asi nebyl zase takový problém, aby se v třídě String dalo nastavit, jaké jednotky má funkce vracet. Rozhodně lepší, než se snažit najít jediný správný způsob =)

Jan Tvrdík
Nette guru | 2595
+
0
-

OT: Neví někdo, proč se velikost udává v bytech a ne v bitech, které jsou jednoznačné a vyjadřují skutečnou podstatu zabraného místa. Nehledě na to, že už dávno neplatí, že jeden byte = jeden znak, protože existují vícebajtová kódování jako např. UTF-8. Pro zajímavost doplním, že byte ve skutečnosti neznamená 8 bitů, jak si většina lidí mylně myslí, ale označuje skupinu bitů. Naštěstí se v praxi setkáme pouze s 8bitovými skupinami, takže tady reálně nedorozumnění nehrozí.

pmg
Člen | 372
+
0
-

Jsem si jist, že typický uživatel internetu, který se není schopen dovtípit rozdílu kB a KB, bude označením KiB leda zmaten.

K tomu by se dalo napsat, že pokud je uživatel zdatný natolik, že ho při posuzování velikosti souboru zajímá jednotka a zná rozdíl mezi B a b, písmeno uprostřed by už ho v kontextu nemuselo zmást: Download Crack (256 KiB). Naopak – když už by se zabýval velikostí písmene B, měl by se hned také zajímat, jestli k/K, nebo Ki, neboť obojí má na výslednou hodnotu vliv. Přesnou velikost souboru budou (kromě uživatelů vytáčeného připojení) chtít znát spíše pokročilí uživatelé, a těm použitím KiB hodnotu zdělíme jednoznačně.

Dalo by se oponovat, že kB se v naprosté většině případů používá ve smyslu KiB, proto se o tom nechci hádat. Alternativou by bylo generovat jednotky rovnou s odkazem na Wikipedii.

Jan Tvrdík toho očividně dost ví. Přiměl mě svým příspěvkem argumentovat pro KiB, ale napadá mě: nebylo by lepší, kdyby na DVD začali uvádět velikost v gibibajtech, tedy v klasických GB? S klidem bychom pak mohli zůstat u zavedeného označení.

Jod
Člen | 701
+
0
-

Komu neni jasné prečo neni 4,7 GB, 4700 MB, ale menej, tomu sa asi bude zdať čudné že 1,5 hodiny sa nerovná 1hodinu 50minut nie? :D

My sme na škole taktiež nič takéto nepreberali a bežný užívateľ to nebude duplom poznať. A môj komp s takýmito jednotkami tiež nerobí )

Jan Tvrdík
Nette guru | 2595
+
0
-

Jod napsal(a):

Komu neni jasné prečo neni 4,7 GB, 4700 MB, ale menej.

4,7 GB lze vyložit jako 4812,8 MB nebo 4700 MB, ale nechápu, jak by to šlo vyložit jako ještě menší hodnota.

Jod
Člen | 701
+
0
-

Sry viac, preklep =)

Honza Marek
Člen | 1664
+
0
-

Vzhledem k tomu, že jsem nikdy nikde žádný KiB neviděl, tak to nechci. Nezajímá mě nějaká norma o které nikdo neví.

syky01
Člen | 25
+
0
-

Jan Tvrdík napsal(a):

Jod napsal(a):

Komu neni jasné prečo neni 4,7 GB, 4700 MB, ale menej.

4,7 GB lze vyložit jako 4812,8 MB nebo 4700 MB, ale nechápu, jak by to šlo vyložit jako ještě menší hodnota.

4,7GB *1000 *1000 * 1000 = 4700000000 B /1024 / 1024 / 1024 = 4,3772161006927490234375 GiB

Ale osobně jsem v Nette pro zachování GB = 1024MB

Editoval syky01 (18. 2. 2009 10:16)

carnaby
Člen | 7
+
0
-
  1. Skola

nedavno jeden gymnazista chcel odomna pomoct s ulohou z infomatiky. Sokovalo ma ze tam riesi nieco v Turbo Pascale 6. Hmm ak su este nejake skoly schopne ucit nieco tak moralne zastarale tak mi nepride divne ze MB vyucuju ako nabozensku dogmu a nevedia vysvetlit preco to tak je a ze sustava SI dostava riadne nafrak.

  1. Operacny system

nuz ako ktory… pouzivam GNU/Linux uz nejaky ten piatok ale tu vsetko vsade ukazuje KiB,MiB,GiB alebo cele bajtove cislo. Hadam vsetci dobre vieme ako je to zo zavadzanim standardov v Microsofte. Oni si radsej povedia „sme taky big ze mame vlastne standardy“ i ked casto nezmyselne

  1. Ludia

Robil som si maly prieskum … Taky „bezny franta uzivatel“ nema ani sajnu a prevode zakladnych jednotiek, vsetko mera slovamy vojde sa mi to na kluc? ci DVD ci CD. Aj zauzivane pojmy MB GB su pre neho nezmysel tak MiB GiB budu podobny nezmysel. Nehovoriac ze aj skusenejsi uzivatel ma problem chapat rozdiel v datovom toku udavany v bitoch/s a vo velkostiach suborov udavanych v bajtoch.
Ak niekto pracuje v oblasti IT tak by mal aspon tusit o co kraca a teda MiB by nemal byt problemom.

zaverom
Uzivatelovi to je jedno ci tam bude MB alebo MiB. A ten kto vie o co ide ma aspon exaktnu informaciu. MS to mozno zapracuje do winowsu XY a potom sa vsetci sprepacenim ....... ze „novinka!“ uz sa to oznacuje inak.

Jod
Člen | 701
+
0
-

1. Skola

To sa ti nečudujem, naše školy sú celé na trt. Ja som mal na elektrotechnike tiež pascal a nebolo to zas tak dávno.

2. Operačný systém

Na Ubuntu 8.10 v práci, keď kliknem na vlastnosti súboru mám tam veľkosť 7,1 KB (7314 bajtov).

Na Mac OS X 10.5.6 doma, keď kliknem na get info mám tam veľkosť 211,8 MB on disk (209,582,957 bytes).

Windows nemám ani nebudem mať, ale keď som naposledy klikol v XP na vlastnosť súboru, tiež tam boli jednotky v MB.

3. Ludia

Normálnemu človeku asi príde logickejšie MiB, ale keď má na USB disku napísanu velkosť v GB, tak je z toho znova debil =D . Treba tam napísať prepočetný kurz ako u nás pri jevre (€)

Editoval Jod (18. 2. 2009 11:07)

carnaby
Člen | 7
+
0
-

Jod. OS no neviem linux kernel je v zozname co to podporuje ale zalezi na samotnych aplikaciach. V Kubuntu 8.10 Intrepid Ibex s KDE 4.2 je to po novom. aspon systemove app. No nie o tom som chcel.

Nema vyznam hlasovat o tom ktore zobrazenie je lepsie ci pouzivanejsie … nech kazdy pouziva to co si mysli ze je spravne. Ja som len chcel zladit tu funkciu aby mohla vratit aj toto. Nette je predsa moderny framework

mozno v configu volitelny parameter bytesFormat a povedzme 3 moznosti

  1. IEC_SI (default) – 1 500 000 bytes ~ 1,43 MB
  2. SI – 1 500 000 bytes = 1,5 MB
  3. IEC – 1 500 000 bytes ~ 1,43 MiB

Editoval carnaby (18. 2. 2009 12:10)

Jod
Člen | 701
+
0
-

Ja by som povedal že v KDE to je a v GNOME nie, inak medzi Ubuntu a Kubuntu nevidím nejaký väčší rozdiel.

Ten parameter tam môže byť, ktovie, možno to budeme niekedy potrebovať. Len či sa to chce davidovi tam pridávať.

Patrik Votoček
Člen | 2221
+
0
-

Ono hlavně spousta BFU ani neví jaký je rozdíl mezi Mb a MB… Proto když si obědnají internet
(bez předchozí zkušenosti) kde píší 10Mbps tak z toho taky nejsou kdo ví jak moudrý a čakájí že jim to pojede 10MB/s… Ale to je jedno to jsem nechtěl řešit spousta lidí totiž nemá ani tušení že u médii (CD, DVD, BDR, HDD, Flash Disky atd. – prostě jakej koli HW na kterej se dají uložit data) udávají 1GB = 1000MB = 1000000KB = 1000000000B kdežto u FileSystémů, souborů atd se používá klasické 1GB = 1024MB = 1048576KB = 1073741824B = 8589934592b … To ale nevysvětluje ten RapidShare kterej někdo nademnou zmiňoval, je to tím že Rapid Share sebe považuje za virtuální médium.

A teď k tomu jak to řešit v nette prostě a jednoduše dát možnost si to nastavit… Otážkou pak zůstává co nastavit jako default…?

Jod
Člen | 701
+
0
-

udávají 1GB = 1000MB = 1000000KB = 1000000000B

A to je akože v poriadku? O_o

syky01
Člen | 25
+
0
-

Jod napsal(a):

udávají 1GB = 1000MB = 1000000KB = 1000000000B

A to je akože v poriadku? O_o

no podle SI je předpona K(kilo) 103, M = 106 takže v podstatě ano…

David Grudl
Nette Core | 8141
+
0
-

Jen drobnost – metoda existuje jako helper v TemplateHelpers, v metode String je deprecated, tak bych asi mel pridat trigger_error.

Tím, že jde o vizuální helper, by měl být uživatelsky přívětivý a tudíž používat jen zkrakty B, kB, MB, GB. Jestli to bude 1000 nebo 1024 je asi vcelku jedno.

pheidrich
Člen | 11
+
0
-

Aneb není kilo jako kilo, zvlášť když někde přebývá… ;-)

Tento problém je tady s námi už pár desetiletí, ale naučili jsme se s ním žít. Třebaže Běžný Franta Uživatel neví, jak přesně na něj, zvykl si. :-)

Osobně se na žádné kibíky, gibíky přeučovat nehodlám. Stačí, že máme dibíka.

PetrP
Člen | 587
+
0
-

Mělo by to určitě jít nastavit, a myslím že defaultně by mělo být toto:

carnaby napsal(a):

  1. IEC – 1 500 000 bytes ~ 1,43 MiB

Osobně nevidím problém s MiB apod. prostě existujou, jsou jednoznačný, možnost že je někdo nepochopí (rozuměj ten kdo ví co je MB) je minimální. A když potřebuju tak tím dokážu jasně říct že myslím 1024*

Problém vidím v MB které jsou naprosto nejednoznačné, a když je někde uvidím, tak můžu jen hádat o jaké jednotky se jedná, většinou to nelze ani poznat z kontextu. Když už se lidi rozhodli je chybně používat tak by mohla existovat alternativa kterou bych řekl že myslím skutečné např 1000 násobek bajtu. Protože psát 1000000000 B když chci napsat 1GB je nečitelné.