Сумрачный блог Кирилла Панфилова

2010: I II III IV V VI VII VIII IX X XI XII

2009: I II III IV V VI VII VIII IX X XI XII

2008: I II III IV V VI VII VIII IX X XI XII

Записи января 2010

Мост над рекой Нум-хет. Глава десятая

« оглавление


Таус зачитал вслух:

— Рецепт этого блюда я увидела в журнале «Волшебная поварёшка» и поразилась простоте приготовления, а результат получился просто потрясающий: нежное тесто и сочные сосиски...

Он в сердцах бросил журнал на стол и сказал:

— Я считаю, что надо запретить слово «сочный» рядом со словом «сосиски».

Юмилла подумала и ответила:

— Мне больше нравятся сочные сардельки. Они сочнее и больше. | полный текст

Каталог Space Cat

Сегодня состоялся релиз сайта «Каталог Space Cat» Насти Хорошиловой.

Технические подробности: сайт построен на движке Shinobi и использованием плагина «Cat» для электронных каталогов, дизайн тоже мой.

Расписание на II семестр 2009/2010 уч. года

С 9 февраля: вторник, 17.20 и 18.45, 310 ауд., II курс мех.-мат., веб-дизайнеры, растровая комп. графика.

Создание уменьшенной копии изображения

Например, вы программируете на PHP загрузку изображений в фотоальбом и хотите, чтобы на лету создавались уменьшенные копии загружаемых картинок, складывались в ту же папку, но имели отличительный признак.

function generatePreview($inFolder, $fromFile, 
		$makeWidth=150, $pref="_", 
		$quality="100") {
	if($fromFile!=false) {
		$src=imagecreatefromjpeg($inFolder.$fromFile);
		$props = getImageSize($inFolder.$fromFile);
		$propsw = $props[0];
		$propsh = $props[1];
		$propskoeff = $propsw/$makeWidth;
		$propshnew = round($propsh/$propskoeff);
		$dst=imagecreatetruecolor($makeWidth,$propshnew); 
		imagecopyresampled($dst, $src,
	0, 0, 0, 0, ImageSX($dst), ImageSY($dst), 
	ImageSX($src), ImageSY($src));
		imagejpeg($dst,$inFolder.$pref.$fromFile,$quality);
		}
	}

В качестве обязательных параметров следует передать директорию, в которой хранятся изображения, и имя исходного файла (предполагается, что он уже загружен). Далее необязательные параметры, в которых уже есть значения по умолчанию: ширина уменьшенного файла, префикс (военная хитрость: префикс может содержать в себе имя директории для уменьшенных копий, только не забудьте её создать) и качество (по умолчанию наилучшее).

Функция вызывается в нужном месте, допустим, так (при $uploaded — имени загруженного файла):

generatePreview('/images/', $uploaded, 120, 'small_');

Создание уникального имени файла

Допустим, вы решили написать скрипт на PHP, где по мере необходимости к записям или страницам прикрепляются файлы. Пользователь выбирает файл и отправляет его с записью, но может так получиться, что файл с таким именем уже существует в указанной директории. На помощь придёт такая функция:

function specifyName($inf, $where) {
	if($inf['name']==false) {
		$new = 'untitled';
		}
	else {
		$parts = $inf['name'];
		$part1 = substr($parts,0,strrpos($parts,'.'));
		$part2 = substr($parts,strrpos($parts,'.'));
		$new = $part1.$part2;
		while(file_exists($where.'/'.$new)) {
			$new = $part1.'-'.rand(1,999).$part2;
			}
		}
	return $new;
	}

Таким образом, если вы получили данные о файле (например, $filedata = $_FILES['image'];) и знаете, куда будет сохранён файл, то можно вызвать функцию для генерации уникального имени файла:

if(@$_FILES['image']['name']!=false) {
	$filedata = $_FILES['image'];
	$newname = specifyName($filedata, 'images');
	copy($filedata['tmp_name'],'images/'.$newname);
	}

Смысл функции простой: она разбивает имя принимаемого файла на имя и расширение, а если такой файл уже существует, вставляет между ними дефис и случайное число от 1 до 999.

Странное

Заметил (уже много раз), что стоит мне вспомнить про какого-то человека, как на следующий день он тут же даёт о себе знать. Мы можем, допустим, месяц не общаться, и вспоминать человека нет никакой причины, но вот приходит он в голову, а спустя какое-то время сам выходит на связь. Это не зависит от расстояния.

Кроме того, про меня резко вспомнили несколько человек, с которыми не общался вообще несколько лет; это вызывает смешанные эмоции.

Мост над рекой Нум-хет. Глава девятая

« оглавление


Небо покрылось сизым неравномерным налётом и готово было уже треснуть по швам и высыпать весь накопившийся снег на землю, но тут Юмилла отвернулась от окна и снова попыталась сосредоточиться на лекции. Обычно ей очень нравилась история медицинских учений, но сегодня она едва заставила себя прийти на урок. Мысли расплывались по сумрачным окнам, морозными узорами уползали куда-то за леса и реки, простирались далеко за границы Эминара, но никак не хотели сконцентрироваться на сравнении практик йоги Хараппской цивилизации и поздних индских наслоений, отражённых в книгах Вед. | полный текст

Мост над рекой Нум-хет. Глава восьмая

« оглавление


— Маринованные миноги, например,— произнесла Юнитта.— Консоме с трюфелями. Пахлава.

Юмилла приоткрыла один глаз.

— Или, к примеру, почки соте. Лобстеры. Куриные крылышки в гранатах,— воодушевлённый примером, сообщил Таус.— Устрицы в лимонном соке.

Юмилла слегка поморщилась, но открыла второй глаз.

Холодильник мерно урчал, создавая иллюзию почти домашнего уюта. За окном ныла метель, но в сторожке было жарко натоплено, и вполне понятно, почему после трёх часов пешего пути девушка, прилёгшая отдохнуть на лавке, незаметно для себя уснула, накрытая курткой Тауса. | полный текст

Решение локализации сайтов

Для интернационализации интерфейса сайтов часто применяют вызов термина по ключу. Допустим, в Java-фреймворке Struts можно написать <s:text value="text.message">, и в словаре нужного языка будет взято значение по ключу text.message, например, «Сообщение», если словарь для русского языка, или »Mitteilung« в случае с немецким — на страницу будет выведен один из терминов в зависимости от языка системы.

Но этот подход не очень экономный. Есть подход (аналог его используется в Shinobi), который позволяет экономить целый словарь. Дело в том, что ключи можно записывать просто на английском языке, заключая в какие-нибудь последовательности, например, [%New message%], а в словаре этим ключам давать соответствия, например

New message = Новое сообщение.

Если выбран английский язык, то термин просто очищается от [%...%], а если русский, то все последовательности [%...%] заменяются на переводы. Т.о. для нелокализованного сайта вообще не нужен словарь.

Берите.инфо

Несколько подзаброшенный проект (как оказалось, он живой, люди им пользуются, хотя мало):


Берите.инфо


Сайт бесплатных объявлений. Не требуется регистрация, просто добавляем объявления и ищем те, что уже есть. Основан на фреймворке Drum Bun.

Hei!

Jeg er glad for å se deg!, Mongibello! Hvordan har du det?

Требуется продолжить смысловой ряд

Ворожея, колдунья, фея, знахарка, волшебница, кудесница, медея, чародейка, чернокнижница, чудотворница... Кто ещё? можно из разных стран и культур.

Можно ли заниматься всем сразу?

Приведу пример. Чтобы делать дизайн для сайтов, мне нужно владеть графическими программами. Однако просто технического владения недостаточно: мне требуются знания композиции, перспективы, знание стилей. Соответственно, необходимо развиваться и в этих направлениях. Но просто нарисовать дизайн недостаточно: даже если я только дизайнер, я обязан знать, как сайт будет свёрстан, чтобы не допустить ляпов типа фигурной врезки изображения неправильной формы в текст (на вебе такое пока невозможно). | полный текст

НГ

Ну вот, на тихой улице пуская клубы дыма

Или пара — людьми, случайно найденными у подъездов,

Задумчиво смотрит в беззвёздное небо зима,

Льдом от снега тепло отрезав.


Лица месяцев, промелькнувших в гонке вагонов года,

Едва помнятся — почти морозный красный октябрь, ласковый май,

Июль, почти обнажённая в ливневом платье; сентябрь, погода...

Мыслей, затягиваясь морозом, провожает она взглядом стаи.


Полупраздничные и предсалатовые магазинов осады,

Децибелов добавят пробки и даже петарды, не чтущие уголовный кодекс.

Полуночные дежурные продавцы, ноль три, пить не хочется — надо;

И вздохнут телевизоры президентскими голосами: ну что ж, с Новым годом!


07.01.2010

Шинобиум

Наконец-то сайт www.shinobium.com обрёл подобающий ему дизайн. Скоро состоится релиз Shinobi — самого быстрого и маленького движка для блогов с возможностями полноценной CMS.

С Новым годом!

Happy New Year! Feliz año nuevo! Bonne année! Laimīgu Jauno gadu! Честита нова година! Buon anno! Gott nytt år! С Новым годом! Gëzuar vitin e ri! !عام سعيد Yeni iliniz mubarek! Urte berri on! З новым годам! Яңа йыл белән! З новим роком! Manigong bagong taon! Šťastný nový rok! Head uut aastat! Onnellista uutta vuotta! გილოცავთ ახალ წელს! !שנה טובה Selamat tahun baru! Ath bhliain faoi mhaise! Feliz Ano Novo! 新年おめでとう! Laimingų Naujųjų Metų! Boldog új évet! Kia hari te tau hou! Un an nou fericit! Срећна нова година! Prosit Neujahr! Mwaka mzuri! สวัสดีปีใหม! Chúc Mừng Nǎm Mới! Выль арен!