Черновики
quittance.ru
документы
прочее
Авторские дневники
   / черновики
   / заметки о типографике
   / SEO FAQ для неспециалистов

Черновики

Статьи, для которых не нашлось подходящего места, а также неоконченные статьи и черновики

Сумма прописью  еще одна реализация на php

В про­цес­се раз­ра­бот­ки он­лайн сер­ви­са за­пол­не­ния и пе­ча­ти пла­теж­но­го по­ру­че­ния есте­ствен­ным об­ра­зом по­тре­бо­ва­лось ре­шить клас­си­че­скую за­да­чу «сум­ма про­пи­сью».

Широ­ко из­вест­ная на тот мо­мент php-ре­а­ли­за­ция «сум­мы про­пи­сью» по­ка­за­лась неубе­ди­тель­ной, по­это­му за­да­ча бы­ла ре­ше­на в оче­ред­ной раз по-сво­е­му. Это ре­ше­ние здесь и пуб­ли­ку­ется.

На вход мож­но по­да­вать как чис­ло, так и стро­ку. В ка­че­стве раз­де­ли­те­ля руб­лей и ко­пе­ек мож­но ис­поль­зо­вать то­чу, за­пя­тую, ми­нус (де­фис) или знак ра­вен­ства.

Преду­смот­ре­но три фла­га, ко­то­рые мож­но за­дать в необя­за­тель­ном вто­ром па­ра­метре:

  • вы­во­дить ко­пей­ки циф­ра­ми (по умол­ча­нию  про­пи­сью);
  • обя­за­тель­но вы­во­дить нуле­вые ко­пей­ки (по умол­ча­нию не вы­во­дятся);
  • ис­поль­зо­вать со­кра­ще­ние «коп.» (по умол­ча­нию пол­но­стью: «ко­пей­ка», «ко­пей­ки», «ко­пеек»).

Общий ход ал­го­рит­ма: внеш­ний цикл про­хо­дит по груп­пам сле­ва на­пра­во от трил­ли­о­нов до руб­лей и ко­пе­ек. Внут­рен­ний цикл раз­би­ра­ет циф­ры внут­ри групп сле­ва на­пра­во от со­тен до еди­ниц.

Исклю­че­ния из об­ще­го хо­да ал­го­ритма:

  • чис­ла от …10 до …19 об­ра­ба­ты­ва­ют­ся особо;
  • груп­па ко­пе­ек со­сто­ит из двух цифр, осталь­ные  из трех;
  • нуле­вые груп­пы не име­ну­ют­ся, за ис­клю­че­ни­ем груп­пы руб­лей (а так­же и груп­пы ко­пе­ек, в слу­чае ко­гда спе­ци­аль­ным фла­гом за­да­но обя­за­тель­ное упо­ми­на­ние ко­пеек);
  • ко­пей­ки и ты­ся­чи жен­ско­го ро­да («од­на ко­пей­ка», «две ты­ся­чи»); осталь­ные груп­пы муж­ско­го ро­да («один рубль», «два мил­ли­она»).

Исходный код...

комментировать 12/10/2010

Юникод в Perl-совместимых регулярных выражениях php5

Ста­тья име­ет це­лью по­зна­ко­мить чи­та­те­ля с осо­бен­но­стя­ми, ко­то­рые на­кла­ды­ва­ет ис­поль­зо­ва­ние Юни­ко­да (англ. Unicode) на ра­бо­ту ме­ха­низ­ма Perl-сов­ме­сти­мых ре­гу­ляр­ных вы­ра­же­ний (сокр. PCRE) в php5. Пред­по­ла­га­ет­ся, что с ра­бо­той PCRE в од­но­бай­то­вых ко­ди­ров­ках чи­та­тель уже зна­ком, тем бо­лее, что на этот счет име­ет­ся ис­чер­пы­ва­ю­щая до­ку­мен­та­ция.

Исполь­зо­ва­ния Юни­ко­да в Perl-сов­ме­сти­мых ре­гу­ляр­ных вы­ра­же­ни­ях, на­про­тив, опи­са­на в до­ку­мен­та­ции php че­рес­чур ла­ко­нично.

Вслед­ствие это­го, при ис­поль­зо­ва­нии PCRE с Юни­ко­дом при­хо­дит­ся стал­ки­вать­ся с неко­то­ры­ми осо­бен­но­стя­ми и да­же стран­но­стя­ми. После осмыс­ле­ния этих стран­но­стей ста­но­вит­ся яс­на ло­ги­ка и при­хо­дит по­ни­ма­ние, по­че­му это ре­а­ли­зо­ва­но имен­но так, а не ина­че. Но оста­вим чи­та­те­лю осмыс­ле­ние осо­бен­но­стей ре­а­ли­за­ции Юни­ко­да в PCRE и зай­мем­ся фак­тами.
Далее...

комментировать 08/12/2010

Принудительное обновление привязанных CSS-файлов

Зна­ко­мая си­ту­а­ция: по­сле об­нов­ле­ния ста­ти­че­ских CSS-фай­лов, про­дол­жа­ют ис­поль­зо­вать­ся их ста­рые вер­сии из ке­ша (англ. cache) бра­у­зе­ра или proxy-сер­ве­ра, в ре­зуль­та­те че­го стра­ни­ца вы­гля­дит обез­об­ра­жен­ной. Этот же непри­ят­ный эф­фект по­рою на­блю­да­ет­ся и с дру­ги­ми ста­ти­че­ски­ми фай­ла­ми: с гра­фи­кой, с фай­ла­ми JavaScript и про­чими…

Боль­шин­ство веб-сер­ве­ров с на­строй­ка­ми по умол­ча­нию для ста­ти­че­ских фай­лов не от­да­ют за­го­лов­ки с ин­фор­ма­ци­ей о па­ра­мет­рах ке­ши­ро­ва­ния. Поэто­му бра­у­зе­ры ке­ши­ру­ют та­кие фай­лы по сво­е­му усмот­ре­нию в со­от­вет­ствии с соб­ствен­ны­ми на­строй­ками.

Осо­бен­но непро­сто бы­ва­ет за­ста­вить Internet Explorer об­но­вить при­вя­зан­ные фай­лы, да­же ес­ли мно­го­крат­но на­жи­мать на кноп­ку «Обно­вить» (англ. Refresh).

Конеч­но, мож­но на­стро­ить веб-сер­вер, чтобы он от­да­вал за­го­лов­ки на пол­ный за­прет ке­ши­ро­ва­ния опре­де­лен­ных ти­пов фай­лов, или уста­но­вить для них ми­ни­маль­ный пе­ри­од ак­ту­аль­но­сти ке­ша… Но есть спо­соб, поз­во­ля­ю­щий эф­фек­тив­но ис­поль­зо­вать ме­ха­низм ке­ши­ро­ва­ния, и в то же вре­мя га­ран­ти­ро­ван­но из­бе­жать отоб­ра­же­ния уста­рев­ших ко­пий из кеша.
Далее...

комментировать 10/06/2010
Copyright 2009–2010 Sergey Kurakin