4 заметки с тегом

вопрос

Учимся древнегреческому языку

2016 год для меня начался с изучения древнегреческого языка. Прошло уже почти два месяца. На мой взгляд, это один из самых сложных древних языков. Изучать его сложно постольку, поскольку на нем не говорят. Но я еще не сказал о самом главном: это безумно интересный язык. На нем написан Новый Завет, сочинения античных философов, произведения античной литературы, например, «Илиада» и «Одиссея» Гомера.

Древнегреческий язык ранее входил в обязательный курс для каждого студента-филолога и изучался несколько лет вместе с латинским, старославянским и древнерусским языками.

Если кто-то захочет присоединиться и составить компанию, то пишите: смогу помочь с первыми шагами (удаленно). Εὖ πράττειν — всем, кто решится на этот подвиг.

2016   вопрос   древнегреческий

Новый вопрос по поводу Совотеки

Не так давно я спрашивал совета по поводу кода для генерации 100 случайных сов из базы картинок Совотеки. Мне здорово помогли, всё заработало так, как надо. Теперь у меня возник еще один вопрос. На этот раз я не знаю, можно ли его решить при помощи одного лишь только CSS-кода или нужен PHP / JavaScript. Интересно любое возможное решение.

Сейчас на сайте выводится 100 случайных сов. Но при этом не учитывается размер окна браузера пользователя, и строка некрасиво заканчивается так, как показано на картинке:

Помогите, пожалуйста, сделать так, чтобы при загрузке страницы последняя незавершенная строчка с картинками скрывалась и не портила внешний вид. Если же такой строчки нет, то не делать ничего. Знаю, что такой же механизм работает, например, на главной странице сайта студии Артемия Лебедева. Как это можно сделать?

Обновление

Дмитрий Шишкин помог решить описанную проблему. Точнее, не помог, а решил ее за меня целиком и полностью. Спасибо!

2014   вопрос   сайты   совы

Счетчик просмотров в Совотеке

В Совотеке используется такой вот скрипт для склонения счетчика сов вверху страницы. Можно ли его как-то упростить? Напишите, пожалуйста.

<?php
function pluralForm($chislo, $form1, $form2, $form5)
{
    $chislo = abs($chislo) % 100;
    $chislo1 = $chislo % 10;
    if ($chislo > 10 && $chislo < 20) return $form5;
    if ($chislo1 > 1 && $chislo1 < 5) return $form2;
    if ($chislo1 == 1) return $form1;
    return $form5;
}
echo 'У&nbsp;нас уже '.$chislo.' <a href="/about">'.pluralForm($chislo, 'сова', 'совы', 'сов').'</a>.
Можно выбрать <a href="/" title="Все совы">из&nbsp;всех</a>, указать нужную
или&nbsp;взять <a href="/random" title="Случайная сова">случайную</a>.<br />
А еще можно <a href="/memory">поиграть</a> с совами или посмотреть <a href="/video">видео</a> с их участием.';
?>

Обновление

Z6a в комментариях подсказал правильную функцию. Спасибо. Теперь всё работает, кажется, даже быстрее. Привожу новый код здесь.

<?php
echo plural_form(42, array('арбуз', 'арбуза', 'арбузов'));
function plural_form($n, $forms) {
return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
}
?>
2014   вопрос   программирование   совы

Как устроена Совотека

О том, что у «Совотеки» под капотом перьями.

У Совотеки все картинки-миниатюры генерируются и хранятся в отдельной папке по адресу:

sovoteka.ru/i/s/

Большие версии тех же картинок хранятся отдельно по адресу:

sovoteka.ru/i/

Всего в «Совотеке» сейчас 903 совы и для удобства каждая картинка подписывается автоматически.

Например, 100-я сова в миниатюрке имеет адрес: sovoteka.ru/i/s/sovoteka_100_s.jpg. У нее всегда размер 95×95 пикселей. Ее увеличенная копия имеет адрес: sovoteka.ru/i/sovoteka_100.jpg. Размер у нее непредсказуем.

Нужно написать такой скрипт на PHP, чтобы он смог проделать следующее:

  • автоматом подсчитать, сколько сов уже есть на сайте (я это делал через переменную, которая считает количество файлов, например, в папке /i/s/. Сколько уменьшенных копий — столько сов на сайте);
  • из множества сов выбрать 50 случайных и вывести их на экран (это можно через генерацию случайных чисел сделать, я их подставлял в имена файлов, ведь в них меняется только число — sovoteka_$chislo_s.jpg, к примеру). Важно, чтобы эти 50 сов не были повторяющимися — с этим проблемы. Случайные совы генерируются каждый раз при обновлении страницы — каждый раз разные картинки.

Результат выполнения PHP-скрипта — HTML-код вида:

<a href="/i/sovoteka_518.jpg"><img src="/i/s/sovoteka_518_s.jpg" width="95" height="95"></a>
<a href="/i/sovoteka_431.jpg"><img src="/i/s/sovoteka_431_s.jpg" width="95" height="95"></a>

Сейчас у меня такой код вышел:

$chislo = sizeof(glob('i/*.*'));
// Подсчитываю, сколько картинок в папке, следовательно столько сов на сайте

$arr = range(1, $chislo);
// Делаю случайное число от 1 до числа сов на сайте

shuffle($arr);
// Мешаю числа

for ($i=0; $i < count($arr); $i+=11) { 
// Зацикливаю вывод

echo '<a class="imgs_group" rel="gal" href="/i/sovoteka_'.$arr[$i].'.jpg">
<img src="/i/s/sovoteka_'.$arr[$i].'_s.jpg" width="95" height="95" class="ingal"></a>';
// Подставляю созданные номера в HTML — костыль, в общем.
}

С наибольшей степенью вероятности могу утверждать, что этот код — костыль. Если у вас есть предложения по решению данной задачи, отпишитесь в комментариях.

Обновление

Спасибо Антону Сюваеву за помощь в коде. Теперь совы генерируются как надо — с выборкой из массива и проверкой на повторы.

$files = glob('i/s/*.jpg');
$rand_keys = array_rand($files, 50); // 50 случайных ключей из массива

foreach ($rand_keys as $pos) {
$thumb_name = $files[$pos];
$full_name = str_replace(array('/s','_s'),'',$thumb_name);

echo '{$thumb_name}\n'; // url мелкого файла
echo '{$full_name}\n\n'; // url крупного файла
}